• ベストアンサー

アクセスの検索について

For I = 1 To Day(SV月末日付) W検索条件 = "年月日 = #" & DateSerial(Year(SV処理年月), Month(SV処理年月), I) & "#" Q_作成.FindFirst W検索条件 Do Until Q_作成.NoMatch 上記のように日付を検索条件にしているのですが、下に記述した Do Until Q_作成.NoMatchの中を通らないのです。 参照しているクエリーにはレコードは間違いなくあるのですが、通らない原因としてどういったことが考えられるのでしょうか?

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

テーブル1(ID,年月日) ID 年月日 1 2007/02/01 2 2007/02/02 3 2007/02/03 Sub test()  Dim I As Long  Dim Q_作成 As Recordset  Dim W検索条件 As String  Dim SV処理年月 As Date  Dim SV月末日付 As Date    SV処理年月 = "2007/2/1"  SV月末日付 = "2007/2/28"    Set Q_作成 = CurrentDb.OpenRecordset("テーブル1", dbOpenDynaset)    For I = 1 To Day(SV月末日付)   W検索条件 = "年月日 = #" & DateSerial(Year(SV処理年月), Month(SV処理年月), I) & "#"   Q_作成.FindFirst W検索条件   Do Until Q_作成.NoMatch    Debug.Print I, Q_作成![ID], Q_作成![年月日]    Q_作成.FindNext W検索条件   Loop  Next End Sub 結果  1       1      2007/02/01  2       2      2007/02/02  3       3      2007/02/03 Access2000で検証しましたが、正常でした。 データに問題あるのでは? 具体的なデータのサンプルを示してください。

konkon_m
質問者

お礼

日付を変換することにより解決しました。 ありがとうございました。

konkon_m
質問者

補足

回答ありがとうございます。 現在、テーブルを元にした選択クエリーを使用しています。 もう一度よく調べてみますね。

関連するQ&A

  • ACCESSでの検索方法について

    マスタファイル2万件、トランザクションファイル約50件程度のデータベースがあります。 50件のデータを1件1件マスタから検索し(キーは2つ)、あればマスタを修正し、なければマスタに追加するプログラムを作成する場合、どういった方法が良いのでしょうか? 1.Do until トランザクション.eof    クエリの実行(約50回)  loop 2.Do until トランザクション.eof findで検索(約50回) loop 3.2つともレコードセットを開いて上から順番に検索していく。 分かりづらかったらすみません。方法はこれ位しか思い浮かびませんでした。 ほかにあれば教えて下さい。 1の方法がプログラム的には一番楽なのですが、実行スピードは3なのでしょうか? すみませんがご教授お願いします。

  • 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でひっつけるだけではダメなのでしょうか? いろいろ調べましたが、完全に行き詰ってしまいました。 ヒントでもいただければありがたいです。 よろしくお願いします。

  • アクセスVBAでデータを検索したいのですが、

    アクセスVBAでデータを検索したいのですが、 エクセルVBAのcells(i,1)にあたるようなものはないでしょうか。 添付画像のような信号を抽出したいので、立ち上がりの部分をさがしたいのですが。 ご存知のかた教えてください。 i=1 Do until cells(i,1)>=4 i=i+1 Loop 開始レコード=i データテーブルの1列目は行番号、2列目は信号が入っています。

  • Access レコードの検索と追加

    日報というフォームに日付とリンクしたサブフォームを作成しました。 複数の人がデータを入力するのですが、日報フォームの日付は重複したくありません。 それで日付入力というテキストボックスを作成して、その日付と同じ日付を検索して、なければ新規のレコードを作成するというようにしたいと思っています。 Private Sub txt日付入力_AfterUpdate() Dim rs As DAO.Recordset Set rs = Me.Recordset.Clone rs.FindFirst "日付 = #" & Me!txt日付入力.Value & "#"  If rs.NoMatch Then   rs.AddNew  Else   Me.Bookmark = rs.Bookmark  End If rs.Close: Set rs = Nothing End Sub というようにしたのですが、新規のレコードを作成する部分がどうしても分かりません。 どなたか分かる方、よろしくお願いします。

  • ExcelからAccessデータを検索するマクロ

    Excel、Accessとも初心者です。 下記を参考にさせて頂いております。 http://okwave.jp/qa/q441987.html これを、(1)~(3)に対応させたいのですが どのように書き換えればよろしいのでしょうか? (1)A1→ A列の最後まで (2)対応するレコードフィールド2   → 規定した複数のレコードフィールド     (例えば、フィールド3とフィールド5とフィールド8) (3)Excel, Accessともに2007です。 (4)検索の経過は表示させない  (少しでも早く処理したい。ひとつひとつ検索結果を表示すると遅くなると聞ききました) ・・・・・・・・・・・・・・・・・・・・・・・・・ Sub Macro1() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = OpenDatabase("c:\abc.mdb") Set rs = db.OpenRecordset("tbl_a", dbOpenDynaset) rs.FindFirst "[フィールド1]='" & Range("A1").Value & "'" If rs.NoMatch Then   Range("B1").Value = "" Else   Range("B1").Value = rs![フィールド2] End If rs.Close Set rs = Nothing Set db = Nothing End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくご教授お願いします。

  • Access 日付/時間型を検索するには?

    いつもお世話になっております。 色々と調べたのですが、データが思い通りにならなく困っております。 検索用フォームを作成し、番号と件名であいまい検索出来るようにしたのですが、年月日でも検索出来るように依頼されました。 自分なりに組んでみたのですが、検索機能が動いてくれませんでした。 年月日のデータ形式は「日付/時刻型」で、格納されているデータは「yyyy/mm/dd 00:00:00」となっています。 日付のみで検索すれば良いのですが、いくら検索しても、全データが抽出されてしまいます。 どこが悪いのかご指摘お願い致します。 ☆クエリ☆ ・Q処理検索 左から「処理番号」「件名」「年月日」となっており、 「処理番号」と「件名」の抽出条件(1行目)には 「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」 「Like"*"&[Forms]![F処理検索]![件名]&"*"」と記述 「年月日」の抽出条件に 「Between[Forms]![F処理検索]![開始]and[Forms]![F処理検索]![終了]」を2行目に記述 「>=[Forms]![F処理検索]![開始]」を3行目に記述してあります。 ☆フォーム☆ ・F処理検索 年月日は2つテキストボックスを用意しています。 各々に「開始」と「終了」の名前をつけ、定型入力を「0000/00/00\ 00:00:00;0;_」としてあります。 検索実行ボタンをクリックし、詳細検索表示フォームを表示します。 ・詳細検索表示 「F詳細検索」の結果をフォームビューで表示させます。 ☆マクロ☆ フォームを開く ・フォーム名:詳細検索表示 ・フィルタ名:Q処理検索 以上、宜しくお願い致します。

  • コンパイルエラーが出ます。助けて下さい。

    初歩的な質問ですみません。 参考書を参考に検索するVBAを書いたのですが、 12行目のFindfirstの所で、「コンパイルエラー:メソッドまたはデータメンバが見つかりません」 というメッセージが出てしまいます。 VBAは、下記の通りです。 宜しくお願いします。 ******************************************************************************************************************************************** Private Sub 検索_Click()   Dim kaizen_rs As Recordset   Dim field_name As String   Dim find_txt As String   Dim criteria As String   field_name = "提案内容"   find_txt = InputBox("検索したい文字を入力してください。")   criteria = field_name & "='" & find_txt & "'"   Set kaizen_rs = CurrentDb.OpenRecordset("管理/提案テーブル", dbOpenDynaset)   kaizen_rs.FindFirst criteria     If kaizen_rs.NoMatch Then       MsgBox find_txt & "は見つかりません"     Else       Do Until kaizen_rs.NoMatch         MsgBox find_txt & "を" & kaizen_rs.AbsolutePosition + 1 & "レコード目で見つけました。"         kaizen_rs.FindNext criteria       Loop     End If End Sub ******************************************************************************************************************************************************

  • マクロのプログラミングで Do Loopステートメントです

    明後日学校の情報の授業でエクセルのマクロを使ってプログラミングするんですが語句について教えてください エクセルのマクロなんですが Do Loopスタートメントって言うのをやります そこでコマンドの意味を教えてほしいんです 明後日なんでなるべく早くお願いします 今回のコマンド(と、バリエーション)って書いてあります 1) dim i as→ 2) Do While 条件式 処理 Loop 3) Do Until 条件式 処理 Loop 4) i=i+1 5)Integer この5つです お願いしますm(_ _)m

  • アクセスでdateserialを使った式の意味と式ビルダ

    式の意味がわかりません。問題は「廃棄日」は、DateSerrial関数、year関数及び month関数を使用して「入荷日」の2年後における月末日とする。というものです。答は、 dateserial(year([入荷日]+2,month(入荷日)+1,0)となっていますが、2年後の意味はわかるのですが、何故monthに1を足すのか、dayの部分が0になるのかが、どうしても理解できません。 簡単なことかもしれませんが、どうか教えて下さい。 それと、式ビルダで作成しようとしても、うまく範囲が選択されず、いらない《》や文字が残ったりします。使い方がよくわからないのです。ヘルプを見ても記載されていないので悩んでいます。 どうぞよろしくお願いいたします。

  • 2重のDo~Loopは?

    Excel VBAですが、A列にデータが入っています。 A列のデータが変わるまで 処理1 を実行し、変われば 処理2 を実行する。データがなくなれば終了する方法が分りません。宜しくお願いします。 i = 2 Do Until Cells(i, 1) = "" Do Until Cells(i, 1) <> Cells(i - 1, 1) 処理1 Loop 処理2 Loop

専門家に質問してみよう