• 締切済み

FindFirstでレコードに移動できない

テーブルを基にフォームをデータシートビューで表示しています。 フォームを開くと、デフォルトで1レコード目がアクティブになります。 vbaで2014/07/02のレコードをアクティブにしたいので 標準モジュールに Forms("フォーム").Recordset.FindFirst "取引日 = 2014/07/02" としても、アクティブになりません。 エラーにもなりません。 Forms("フォーム").Recordset.FindFirst "取引日 = " & #7/2/2014# もダメでした。 FindFirstメソッドは 「条件と一致する最初のレコードを検索する」するのではないのでしょうか? 2行目のレコードをアクティブ(選択状態)にさせたいです。

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

検証したわけではないので、誤っているかもしれませんが 「FindFirst」の前に取引日順に並んでいる必要があるのでは 並び替えは ・SQL文 ・クエリー ・テーブルのデザインビューで取引日のフィールドにインデック:はい(重複あり)

  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

Forms("フォーム").Recordset.FindFirst "取引日 = #2014/07/02#" ではいかがでしょう?

関連するQ&A

  • Recordset.FindFirstについて

    マイクロソフトのaccess2010について質問です。 親フォームに社員番号を検索するコンボボックスがあります。 サブフォームに社員一覧があります。 名前 → SF1 ソースオブジェクト → クエリ.社員一覧 検索に一致する社員番号のレコードに移動するために このようにしました。 --------- Num = Me.検索社員番号 Me.SF1.SetFocus Me.Recordset.FindFirst "[社員番号]=" & Num --------- しかし 実行時エラー'3070' '社員番号'を有効なフィールド名、または式として認識できません。 というエラーが出てしまいます ご教授頂ければ嬉しいです

  • FindFirst複数条件

    access 超初心者です。 フォームに2つのコンボボックス(COM_A,COM_B)があり そのコンボボックスで条件を2つ設定し、テーブル(TBL)から 条件の一致したレコードを検索したいのですが、うまくいきません。 TBLのフィールド AAA ---> COM_Aで指定 BBB ---> COM_Bで指定 Dim db As DAO.Database Dim TBL As DAO.Recordset Set db = CurrentDb Set TBLrs = db.OpenRecordset("TBL", dbOpenDynaset) TBLrs.FindFirst"AAA='"&Me.COM_A&"'"And"BBB='"& Me.COM_B & "'" If TBLrs.NoMatch Then 処理 Else 処理 End If というコードなのですが、実行すると『型が一致しません』となってしまいます。 TBLrs.FindFirst"AAA='"&Me.COM_A&"'" If TBLrs.NoMatch Then ~ とか TBLrs.FindFirst"BBB='"&Me.COM_B&"'" If TBLrs.NoMatch Then  ~ のように条件を1つにすると各々問題なく動作します。 単純にAndでひっつけるだけではダメなのでしょうか? いろいろ調べましたが、完全に行き詰ってしまいました。 ヒントでもいただければありがたいです。 よろしくお願いします。

  • RecordSourceとRecordSet

    アクセスvbaで頻繁に出てくる言葉で RecordSourceとRecordSetは何が違うのでしょうか? どちらもテーブルやクエリを指していると思うのですが、 意味が違うんですよね? それぞれをヘルプで調べたら、 RecordSource→フォームの基になるソース データを示します。 RecordSet→指定されたオブジェクトのレコード ソースを示す ADO の Recordset オブジェクトまたは DAO の Recordset オブジェクトを示します。 との事だったのですが、一緒と思っていいのかよくわかりません。 とりあえず、RecordSourceはフォームに紐付けるテーブルまたはクエリと 認識していますが、違いを教えてください。

  • レコード数分テキストボックスなどを表示したい

    今、売上管理のDBを設計しています。 商品テーブルのマスターメンテをするためのフォームを作ろうと思っているんですが、VBAを使って表示or編集用のテキストボックスをレコード数分表示する方法がわからず困っています。 表示しようと思っているタイミングは、フォームを開いた時、レコード数に変化があったときです。 CreateControlというメソッドはデザインビュー状態でないとできないとエラーを吐かれてしまいうまくできません。。。 どうかご教授お願いしますm( _ _ )m

  • Access レコードの移動

    ADP形式(Access2003)で社内システムを作っています。 質問なのですが・・・ 帳票形式のフォーム(商品マスタ)があります。フォームヘッダーにテキストボックス(名前:検索コード)あり、ここに商品コードを入力すると、該当するレコードへブックマークが移動します。 MDBのときは・・・   Dim ds As Recordset Set ds = RecordsetClone ds.FindFirst "[商品コード]='" & Me![検索コード] & "'" Bookmark = ds.Bookmark 以下省略 これで動作したのですが、ADPではエラーになります。 ADOになっているからでしょうか?

  • 指定した文字を検索しそのレコードに移動したい

    アクセスのフォーム上のレコードで 会社名 AAA会社 CCC会社 BBB会社 ・ ・ ・ となっていて、 「BBB会社」をvbaで検索しつつ、 そのレコードに移動するにはどうすればいいでしょうか? GoToRecordメソッドを使う事はわかったのですが、 「BBB会社」を検索しつつ、そのレコード番号を取得し・・・ と言う処理がわかりません。 レコード番号さえわかれば、GoToRecordメソッドで 移動できる気がします。 会社名のレコードが入っているフォームは サブフォームとなっています。

  • ACCESS レコードセット

    非連結フォーム(frm_B)のOPEN時にADOレコードセットでデータを表示させ、更新ボタンを押すと、追加クエリでそのフォーム上で表示されたデータをテーブル(tbl_B)に新規登録させ、さらにその非連結フォームには別のフォームの内容を表示させるVBAを書きましたが、最後に別のフォームの内容で非連結フォームにデータをセットしたとき?にテーブルのデータも更新されてしまいます。最初にテーブルに追加したデータとは切り離したいのですがどうすればうまくいくのでしょうか。 ・フォームfrm_BをOPEN 'DAOレコードセット Dim dbDAO As DAO.Database Dim rsDAO As DAO.Recordset Dim stSQL As String stSQL = "SELECT No.,規格No.,改訂No. FROM tbl_B " _ & "WHERE 規格No. ='" & Forms![frm_A].[規格No.] & "'" _ & "AND 改訂No. =" & Forms![frm_A].[改訂No.] & "" 'DAOレコードセット Set dbDAO = CurrentDb Set rsDAO = dbDAO.OpenRecordset(stSQL) Set Me.Recordset = rsDAO Me![No.].ControlSource = "No." Me![規格No.].ControlSource = "規格No." Me![改訂No.].ControlSource = "改訂No." 'DAOレコードセットクローズ Set rsDAO = Nothing Set dbDAO = Nothing ・更新ボタンクリック Private Sub cb_kaitei_Click() Dim stDocName As String   '追加クエリ stDocName = "q_B" DoCmd.OpenQuery stDocName, acNormal, acEdit Forms![frm_B].SetFocus Me![No.] = Forms![frm_A].[No.] Me![規格No.] = Forms![frm_A].[規格No.] Me![改訂No.] = Forms![frm_A].[改訂No.] ・ このときにレコードセットで追加したレコードのほうも更新されてしまいます。これを別のレコードと判断させたいのです。よろしくお願いします。

  • 異なるフォームに属する関数間でACCESSのレコードセットを受け渡しする。

    msAccess2000のVBAコードの質問です。 元々、全てを理解しているわけではないのにVBAコードを書いているのが無茶なんですが、無茶を承知でプログラミングしています。 あるクエリの結果を、あるフォームで帳票表示しています。この帳票の一レコードにボタンをつけて、クリックイベントで、そのレコードを取得しようとしています。フォームはこの後、閉じられた後、呼び出された親にその、レコードを渡したいのです。 フォームは、親フォームのボタンクリックイベントから、DoCmd.Openformメソッドによって呼び出されるので、戻り値は使えません。 しょうがないので、広域変数rst(DAO.Recordset型)で、受け渡そうと思ったのですが、recordset型は、どうやら参照のようで、フォーム(クエリ?)を閉じると、レコードが壊れてしまうようなのです。 Module1で、 public rst as DAO.recordset として、 Private Sub コマンド34_Click() set Module1.rst=me.recordset ' この中では、rst.fields(*)で、フィールドの値を使えるのですが・・・ END Sub 呼び出した親フォームでは、module1.rst.fields(*)を使用できません。 質問は二つあります。 1)広域変数rstは、上記のような宣言・使用法で問題ないですか? 2)sub またはfunction間にわたって、レコードを渡す、いい方法はないですか?

  • いちばん最後のレコードに値の追加ができません。

    ACCESSで、何週間も原因がどうしても解らず困っております。お助けください。 ある条件を基に複数のテーブルを参照しデータ加工を行った後に、レポート作成用テーブルのいちばん最後のレコードに必ず追加登録をしたいのですが、いちばん最後のレコードに登録できたり、既に登録されているレコードの間に割り込んで登録されたり処理の検証を行うたびに結果が異なるのです。 何度もデバッグを行いましたが、レポート作成用テーブルへUPDATEするまでの処理及びデータには間違いありません。レポート作成用テーブルで勝手にデータ入れ替わっているとしか思えないのですが・・・・・・ 最初はRecordsetオブジェクトはテーブルタイプを指定し、Addnew及びUpdateメソッドで追加登録していましたが、思うように動作しないためRecordsetオブジェクトをダイナセットタイプに変更してみましたが処理結果は変わりません。 ※RecordsetオブジェクトでIndexプロパティの設定はありません 参考書にダイナセットタイプのRecordsetオブジェクトは、設定されている並べ替え規則にかかわらず、必ずいちばん最後のレコードに追加されると記載されていたので試してみましたが駄目でした。 おおざっぱな説明で現状を理解して頂けるかわかりませんが宜しくお願いいたします。

  • Accessでの新規レコードの追加の方法

    Windows XP上でMicrosoft Access 2000を使用しています。 オートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加したいのですが、クエリやそれを基にしたフォームを介した方法はもちろんのこと、テーブルをデータシートビューで表示した状態でも追加することができません。 例えばレコードセレクタからレコード追加を選んでレコード保存を選んでも追加されません。 このテーブルに別のフィールドを追加してデータを入れるとレコードの追加が可能なのですが、オートナンバー型フィールド1つのみではうまくいきません。 どなたかオートナンバー型フィールド1つのみを含むテーブルに新規レコードを追加する方法を御存知でしたら御教示下さいませ。

専門家に質問してみよう