• ベストアンサー

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レコード目の 「「なりたい自分」になれる中、、、」 を取得したいです。 どうすれば▲(横)ボタンのあるレコードをカレントレコードとして、 そのレコードの値を取得することが可能でしょうか? ご教授よろしくお願い致します。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

Openしたら1レコード目がカレントレコードです。 Movenextをすれば2レコード目がカレントレコードになります。 フォーム上でどうかはやっていないのですがコードを見る限り1件目が表示されて当然と思います。

thuurhurhu
質問者

お礼

そうなんですか。 有難うございます。 そうしたら現在の▲マークがあるレコード番号を取得するにはどうすればいいでしょうか?

関連するQ&A

  • ADO フィルタ 変数

    Sub test() Dim 月 As Long cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName rs.Open "Tテーブル", cn, adOpenStatic, adLockPessimistic 月 = 5 rs.Filter = " 処理日 = '" & #"& 月 &"/29/2009# & "'" MsgBox rs.RecordCount Set rs = Nothing Set cn = Nothing End Sub のように月に変数を入れ、フィルタをかけたいのですが 上記のコードでエラーになってしまいます。 アドバイスよろしくお願いします。

  • 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 これだとダメなようです。 あああ いいい が表示されるようにしたいのですが、どうすればいいか教えてください。

  • adoのループについて カレントレコードについて

    adoのFor i = 1 To rs.RecordCountについて質問があります。 Sub test() Dim i As Long Dim MyFileName As String Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset MyFileName = CurrentProject.FullName cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & MyFileName rs.Open "Tテーブル", cn, adOpenKeyset, adLockOptimistic For i = 1 To rs.RecordCount Debug.Print rs.Fields(0).Value rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub これを実行した時に、テーブルには、1,2,3・・・という値が入っていて、 イミディエイドウインドウにも1,2,3・・・と順番に取得されるのですが、 For i = 1 To rs.RecordCountを実行した時は、強制的にrs.MoveFirstされるのでしょうか? For i = 1 To rs.RecordCount rs.MoveFirst Debug.Print rs.Fields(0).Value rs.MoveNext Next これと同じ意味なのでしょうか? RecordCount プロパティ (ADO) のヘルプを見ましたが、この件に関する記述は探せませんでした。 ご回答よろしくお願いします。

  • ADO 英語を含むレコードを抽出したい

    テーブルに保存されてるフィールド1の英語が含まれているレコード(ABC株式会社 など)を抽出したいのですが 方法がわかりません。 *[a-z]* を使うんだなと思いますが、フィルタのかけかたがわかりません。 Sub test() Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ファイル名 RS.Open "テーブル1", CN, adOpenStatic, adLockOptimistic RS.Filter = "フィールド1 = " '←ここをどうすればいいでしょうか? RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub サンプルを作ってみたのですが ご教示頂けないでしょうか? よろしくお願い致します。

  • VBA ADO 値が違う

    アクセスのTPWテーブルのサイト名フィールドには aaa(bbb)と言う値があり、そのPasswordフィールドの値を取得したいのですが ------------------------------------------------------- Function PW取得() cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & "D: \PW.accdb" rs.Open "SELECT * FROM TPW", cn, adOpenStatic, adLockPessimistic rs.Find "サイト名 = 'aaa(bbb)'", 0, adSearchForward PW取得 = rs("Password") rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Function ------------------------------------------------------- を実行すると、 Passwordフィールドに依然入っていた値が取得されてしまいます。 更に、 aaa(bbb)と言う値を aaaに変更し、 rs.Find "サイト名 = 'aaa'", 0, adSearchForward とすると、 PW取得 = rs("Password") の部分で、 実行時エラー3021 「BOFとEOFのいずれかTRUEになっていか、 または現のレコード要求された操作には、現在のレコードが必要です。」 が発生します。 原因が全く分かりません。 Findと言うメソッド?は使わないほうがいいのでしょうか?

  • vbaを修正するとADOが実行できなくなる。

    アクセス2003、vistaを使用しています。 vbaを使っていて、ADOを使っています。 アクセスを使っている間に いくつか修正したいところがあり、vbaコードをいじって保存し、 vbaを実行すると、 CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName ←の部分で RS.Open "Qタイトル", CN, adOpenStatic, adLockPessimistic 実行時エラー '-2147467259(80004005)' 「マシン '<マシン名>' のユーザー 'Admin' が データベースを開けない状態、またはロックできない状態にしています。」 となります。 一度ファイルを閉じて再度開くと問題なく作業できますが これは何故起こるのでしょうか? 一応調べてみましたが http://www.accessclub.jp/bbs/0017/beginers7727.html http://okwave.jp/qa4388870.html 解決には至りませんでした。 よろしくお願いします。

  • ADOでアポストロフィー入りの値をフィルタしたい

    例えばレコードの値が「あああ'ああ」だった場合、 ----------------------------------------------------- Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim MyFileName As String MyFileName = CurrentProject.FullName cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source= " & MyFileName rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic rs.Filter = "フィールド1 = " & "'あああ'ああ'" MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ----------------------------------------------------- とすると 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になってしまいます。 ADOでアポストロフィー入りの値をフィルタする方法を教えてください。

  • 参照設定にチェックを入れないでADOを使いたい

    アクセス2003です。 テーブル1にテキスト型のフィールド1を作り、数レコードをサンプルで入れました。 そしてVBE画面で Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic MsgBox rs.RecordCount rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub としたらレコード件数が取得できました。 質問は ツール→参照設定の Microsoft ActiveX Data Objects 2.8 Library にチェックをいれなくても VBAコードだけで参照設定できたような気がするので そのコードを教えてくいただけませんか? アドバイスよろしくお願いします。

  • アクセス2003 「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」となる。

    Sub test() Public cn As New ADODB.Connection Public rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName rs.Open "Qクエリ", cn, adOpenStatic, adLockPessimistic rs("進捗") = "" rs.Update  ←ここでエラー rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub のコードを実行すると アクセスが「応答なし」になり、その後 「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」となります。 Qクエリはテーブル1とテーブル2でできています。 毎回発生するエラーではなく、エラーにならない時もあります。 何か原因がわかる方いらっしゃいますか? ご教授よろしくお願い致します。

  • ADOでレコードの値を一部変更したい

    アクセスのテーブル1には 番号(主キー) 内容1 内容2 というフィールドがあります。 エクセルからアクセスへADOを使って内容1フィールドだけを変更したのですがうまく行きません。 もともと 番号には「1」、内容1には「あああ」と入力されているとして 内容1を「いいい」に変更したい場合下記のコードを実行すると 「主キーが重複している」というエラーになるか、 全然関係ない番号の値が変わってしまい、テーブルがぐちゃぐちゃになってしまいます。 Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\○○○\Desktop\test1.mdb" Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenStatic, adLockPessimistic 番号 = 1 rs("番号") = 番号 rs("内容1") = "いいい" rs.Update '保存 Set rs = Nothing Set cn = Nothing End Sub どうすれば「番号1の内容1の値を変更する」ことが可能なのでしょうか? よろしくお願いします。

専門家に質問してみよう