• ベストアンサー

(アクセス)レコードの値を順番に取得したい

フォームのビューが「帳票フォーム」で Sub test1() MsgBox Form_sqlのフォーム.タイトル End Sub を実行すると 一番最初のレコードの値が取得できるのですが 2行目、3行目を取得するにはどうすればいいでしょう? ADOを使って rs.MoveNext をするしかないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

対象はmdbのテーブルか、クエリか。 レコードごとに捉えて、そのレコードごとに、固有の処理をする場合は、ADOなどでやるしか無いでしょう。 SQLでは一括(全体対象)処理になる。もちろん処理系によってはカーソル処理が有るのが有るがアクセスの場合はない。 Googleで「sql カーソル」で照会でもすること。 ーー 実例をあげて、したいことの内容を書くこと。 >フォームのビュー・・なんて出ているが、フォームと、どう絡むのか。 >フォームのビューが「帳票フォーム」で、は 見た目の表示方法だけではないの?テーブルやクエリの結果を、自分が好んで、その体裁で表示させて見ているだけでは?。 何が言いたいのか、聞きたいのか? 出来るだけ全貌的に表現して何をしたいのか、質問のこと。 >ADOを使ってrs.MoveNextをするしかないでしょうか? なぜrs.MoveNextをしたくないのか?

thuurhurhu
質問者

お礼

質問文がわかりずらくてすいません。 ここは無難にADOを使ってやってみます。 ありがとうございます。

関連するQ&A

  • ADOで現在のレコードの次のレコードの値も取得

    ADOで現在のレコードの次のレコードの値も取得するには? アクセスに対してADOでデータを取得しているのですが 例えばテーブルに フィールド1 あああ いいい ううう と入ってる時に、1レコード目のあああの値を取得しているときに、同時に次のレコードのいいいの値も取得することは可能ですか? Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM テーブル1", cn, adOpenStatic, adLockPessimistic For i = 1 To rs.RecordCount MsgBox rs("フィールド1") '現在のレコード MsgBox rs("フィールド1") + 1 '次のレコード rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub これだとダメなようです。 あああ いいい が表示されるようにしたいのですが、どうすればいいか教えてください。

  • vbaで帳票フォームで開きたい アクセス

    vbaでフォームを開くときに 既定のビューを指定してるのですが 指定したとおりになりません。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム End Sub としてもデータシートビューで開かれてしまいます。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム MsgBox Me.DefaultView End Sub とすると、1が返るのに やっぱりデータシートビューになってしまいます。 なぜでしょうか? エラーにもなりません。

  • ADO カレントレコードを取得したい

    フォーム1にテーブル1をドラッグしました。 そして図の状態で 現在カーソルがあるレコードの値をadoで取得することは可能ですか? 図ではカレントレコードは2レコード目なのに CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName RS.Open "テーブル1", CN, adOpenStatic, adLockPessimistic MsgBox RS("書名") とすると1レコード目の値が表示されます。 本当は2レコード目の 「「なりたい自分」になれる中、、、」 を取得したいです。 どうすれば▲(横)ボタンのあるレコードをカレントレコードとして、 そのレコードの値を取得することが可能でしょうか? ご教授よろしくお願い致します。

  • アクセス サブフォームのレコードの値が変更したら

    フォームの中にテーブルに基づいたサブフォームを入れています。 サブフォームはデータシートビューで表示しています。 そのサブフォームのレコードの値が変わったら msgboxを表示させるにはどのイベントで行なえば良いですか? サーブフォームのコントロールに Private Sub ページ名_AfterUpdate() MsgBox "" End Sub としたら確かにメッセージボックスは表示されるのですが 全てのコントロールにつけないとだめですか? 「サブフォームのレコードの値が変更したら」 とするにはどうすればいいでしょうか?

  • アクセスVBA 一個前や一個後の値を取得するには

    フォームの中にあるサブフォームの現在選択中のレコードの値を取得は出来たのですが 一個前や一個後の値を取得するにはどうすればいいですか? Sub test() Debug.Print Forms("F_Main").Controls("F_SubMain").Form.Filter Debug.Print Forms("F_Main").Controls("F_SubMain").Form.Controls("日付") End Sub で、現在のレコードの情報は取得できましたが 上のレコード、下のレコードを取得するコードを教えてください。

  • アクセス ADO レコードの件数がおかしい

    アクセスADOでクエリの行数を取得したいのですが クエリが200行でも100行でも必ず12が返ります。 クエリ1は、一度12行の時にadoで数を取得し、その時は、正しく12が返ったのですが、 行数が変わっても12が返ります。 コードは、 Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM クエリ1", cn, adOpenStatic, adLockPessimistic Debug.Print rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub です。 Debug.Print DCount("*", "クエリ1") だと、正しいレコード数が取得されるのですが、ADOだとおかしいです。 クエリ1のSQL文は、 SELECT Q_作業用.* FROM Q_作業用; のように、別のクエリを持ってきています。 何が原因なのでしょうか? よろしくお願いします。

  • アクセス帳票フォームのループ処理ができない

    いつもお世話になっています。 win7,Access2010 です。 帳票フォーム上にいくつかの連結フィールドがあり、A,B,Cとします。 Aには初期値が入力されています。 Bに1レコードづつ値を入力し、すべてのレコードに入力し終わった後に、 全レコードにおいて、A-Bの値をCに代入したいのです。 以下のようなコードを書きましたが、 カレントフィールドにのみ適用されます。 一括で全レコードに適用するためには、 どうすればいいのでしょうか? よろしくお願いします。 Private Sub コマンド71_Click() Dim rs As Recordset Set rs = Me.Recordset.Clone rs.MoveFirst Do Until rs.EOF Me!C = A - B rs.MoveNext Loop rs.Close MsgBox "計算が終了しました" End Sub

  • Access VBA フォームに表示したい

    Access2000で、帳票フォームにSQLの値を表示させたいのですが、 以下のコードだとフォーム上に最後のレコードしか表示されません。 取得したデータを正しく表示するにはどうしたらよいでしょうか。 ・フォームのtext1のコントロールソースにfld1と書く 以外の方法でできますか? できればすべて非連結で、作成したいです。 (本当はフォームのrecordsourceも設定したくないのですが それは無理でしょうか?) よろしくお願いいたします。 Private Sub Form_Load() Dim conn As Connection Dim rs As ADODB.Recordset Dim strSql As String Set conn = CurrentProject.Connection Set rs = New ADODB.Recordset strSql = "select * from table1" rs.Open strSql, conn, adOpenKeyset, adLockOptimistic, adCmdText Me.RecordSource = strSql rs.MoveFirst Do Until rs.EOF me!text1 = rs!fld1 rs.MoveNext Loop rs.Close Set rs = Nothing conn.Close Set connn = Nothing End Sub

  • サブフォームに変数を代入し、RecordSourceの値を取得したい

    サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。

  • DAOでレコード数を取得したい(ACESSVBA)

    レコードの行数は複数あるのに --------------------------------------------------------- Sub あ() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("T_test", dbOpenDynaset) MsgBox rs.RecordCount Set rs = Nothing Set db = Nothing End Sub --------------------------------------------------------- これでレコード数を取得しようとすると1がかえるのですが なぜレコードの行数を取得できないのでしょうか?

専門家に質問してみよう