ACCESS97のモジュールでデータを取得する方法

このQ&Aのポイント
  • ACCESS97のモジュールを使用してSQLを利用して、特定のテーブルの任意のレコードを選択する方法について説明します。
  • 例えば、テーブルAの中から名前がBのレコードの番号を取得する場合、SQLクエリを使用して条件を指定することができます。
  • また、名前の項目がキーとなっていない場合でも、番号を指定することで特定のレコードを取得することが可能です。
回答を見る
  • ベストアンサー

ACCESS97 のモジュールの中 何番目かの データを取得したい

ACCESS97 のモジュールの中で SQLを使用しています。 SQLを使用して あるテーブルの任意のレコードを選択したいのです。 例えば テーブルAが下記のようにあるとします。 項目 名前 番号 A 001 B 003 D 004 という場合に名前Bの番号003を取得したいのです。 データとしては、"2"番目の2 は取得可能です。  (フォーム上のテキストBOXで入力) Set DATABASE = CurrentDb() strSQL = "SELECT * FROM テーブルA WHERE " strSQL = strSQL + "**** = '" & **** & "' ;"     ↑ここに条件をどのように持てばいいのでしょうか? ※ ここで、名前の項目ではキーとなる項目は得られません。   今回は 何番目のデータを取得したい ということが可能かどうか    教えて頂きたいと思います。

  • cdma
  • お礼率36% (91/247)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは ベタベタな方法でよろしければ。。。ですが あと名前が昇順に並んでいる2番目が欲しい というのが前提です。 strSQL = "SELECT * FROM テーブルA " strSQL = strSQL & " ORDER by 名前 " として、レコードセットオープン i=1 do until レコードセット.eof=true if i= テキストBOX then 'フォーム上で2と入力 w_番号=レコードセット!番号 exit do  end if レコードセット.movenext i=i+1 loop とすれば、簡単にとれますが、ダメですかね~。

cdma
質問者

お礼

ありがとうございました。上手くいきました。

関連するQ&A

  • ACCESS97のMAX関数について

    ACCESS97を使用しています。 "関数"の使い方が全くわかりません。 (というより、SQLも含めて…)  テーブル"TBL_A"の"項目B" から最大値を変数SDHSに取得したいのですが どうすればいいのでしょうか?  Dim db As DATABASE Dim RS As Recordset Dim SDHS, strSQL As String Set db = CurrentDb() strSQL = "SELECT Max(項目B) FROM TBL_A ;" Set RS = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) SDHS = Max(項目B)

  • ACCESS97でSQLを使用して全データを順に取得したい

    ACCESS97を使用しています。 あるテーブルAの全データをモジュールを組んで textファイルへ出力したいのです。 1行ずつ取得して 1行ずつ出力する方法でやっています。  この時、1行ずつ取得したいのですが  strSQL = "SELECT * FROM テーブルA ;"  上記内容だと全件取得してしまいます。  1行ずつ 取得する方法はないのでしょうか?  例えば  strSQL = "SELECT * FROM テーブルA WHERE 1行目;"  又は、全件 textファイルに出力するモジュールあるのでしょうか?

  • 2つのテーブルのデータまとめて取得したい

    SQL Server2008を使用しているのですが、どうのようにデータを取得すれば良いか わからず困っております。 例えば、 名前は違うが全く同じテーブルが2つあるとします。 テーブルAには6レコード、テーブルBには3レコードのデータが存在するとします。 この時、単純に6レコード+3レコードの 9レコード分をひとつのテーブルとしてデータを 取得するにはどのようなSQL文を書けばよいでしょうか? SELECT * FROM テーブルA, テーブルBでは18レコードもデータを取得してしまい、且つ フィールド数も増加してしまいます。 宜しくお願いいたします。

  • アクセス97のモジュール内で使われるSQLstatementについて

    アクセス97のモジュールのプロシージャで例えば 以下のようにプロシージャ内で、SQLstatmentが 使われている時の解読の仕方がわかりません。 普通のSQL文として読んでよいのでしょうか? また、SQLstatment = SQLstatment & """" の使い方がよくわかりません。 ヘルプやインターネットでもSQLstatmentについて探してみたのですが、 解決できませんでした。教えてください。 Public Function あいうえお As String Dim dbs As Database Dim rds As Recordset Dim SQLstatment As String SQLstatment = "SELECT テーブル1.名前,テーブル1.顧客番号 " _ & "FROM テーブル1 " _ & "WHERE テーブル1.名前 = " SQLstatment = SQLstatment & """" Set dbs = CurrentDb Set rds = dbs.OpenRecordset(SQLstatment)  :  :  : End Function

  • "カレントレコードがありません"とでてきます

    Access97を使用しています。 データは テーブルAの項目B、項目Cが下記のようにあるとします。 フォーム上のText"B"に項目Bを入力します。 項目B 項目C 11 a 11 b 22 aa 22 bb 22 cc 33 aaa 33 ccc この時 Set DB = CurrentDb() strSQL = "SELECT * FROM A WHERE " strSQL = strSQL + "B='" & Me.B & "';" Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly) RS.MoveFirst RS.MoveLast m = RS.RecordCount For i = 1 To m COIL_N = RS.Fields("C") Call RS.MoveNext Next i 上記のようなモジュールですが、例えば 項目Bの"11"を選んだ時、項目Cの二番目のデータbが 取得できません。 "カレントレコードがありません"とでてきます。何故でしょうか?

  • アクセスでデータを足すには、また、引くには?

    アクセスを使用していて、テーブルAにあるデータに、テーブルBにあるデータを足したいと思っています。 それぞれデータは”名前”のようなフィールドで、ひとつにまとめたいのですがクエリーでの表現が分かりません。SQLビューのようなやり方でも構いませんので、是非お願い致します。 また、もう一つですが、テーブルAにあるデータに、テーブルBにあるデータを引きたい思っています。こちらも”名前”のようなフィールドで、同じレコードは省きたいと思っております。 よろしくお願い致します。

  • 重複項目を取得するSQL分

    SQL分でわからないことがあるので質問させてください。 Aというテーブルに、 番号と処理通番(ユニーク)の2つカラムがあります。 Aテーブルから重複した番号とその処理通番を 上から4件まで取得したいのですが、 ----------------------------- SELECT A.番号,A.処理通番 FROM A INNER JOIN (SELECT 番号 FROM A GROUP BY 番号 HAVING COUNT(*) > 1) AS B ON (A.番号 = B.番号) ORDER BY A.番号,A.処理通番 ----------------------------- のSQLでは重複した番号のデータを 全て取得してしまいます。 番号別に4件まで取得したいのですが、 どのようなSQLを書けば取得できますか? よろしくお願いします。

  • ある条件でのSQLの取得方法について

    以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー   項目1 10     X 20     Y ・テーブルB キー  項目2  項目3 10     5    C 10     6    D 12     6    E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は  別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、  複数件あるかも知れません。  無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと  同じレコードに、項目2が同じデータの情報を出力します。  項目2が同じデータが無い場合はこの情報は出力しません。  項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー  フラグ   項目1  項目2  項目3   項目2が同じキー  項目2が同じ値 10  テーブルA   X 10  テーブルB         5    C 10  テーブルB         6    D        12            E 20  テーブルA   Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?

  • 1つのテーブルからのデータ取得

    お世話になります。 Table1にはA,Bのフィールドがあり 例えば A=01のレコードを取得(取得するフィールドはA,B) このレコードを(1)とする。 Table1のうち、Aが(1)のBと一致する レコードを(2)とする。 Table1のうち、Aが(2)のBと一致する レコードを(3)とする。 N番目のBと一致するTable1のAがなくなるまで 上記を繰り返す。 (1),(2),(3)・・・の A,Bの値を取得するためには どういうSQL文を書けばいいでしょうか? 例:ここでA=01を設定する テーブル例と結果 Table1 A: B 01:02 取得 02:04 取得 02:05 取得 03:04 X 04:06 取得 05:10 取得 07:11 X 10:15 取得 以上お教えください。よろしくお願いします。

  • アクセス97 モジュール 変数について

    変数について不明な点があります。 Public A As String Public B As String とモジュールの最上段に 宣言しました strSQL = strSQL & ",備考1 ='" & pfncReplaceString1(A, "'", "''") & "'" strSQL = strSQL & ",備考2 ='" & pfncReplaceString2(B, "'", "''") & "'" この時点では AとBにはそれぞれ値が入っているのですが pfncReplaceString1とpfncReplaceString2に飛んだ時にBの方は""(何も入っていない状態)になっています。 何が違いがあるのでしょうか? 変数に値が入っていたのに消えてしまう 状態です。

専門家に質問してみよう