Access2000での複合検索再び

このQ&Aのポイント
  • Access2000の複合検索時に、テナントコードが重複している場合に表示されない問題について質問します。
  • 現在のコードでは、テナントコードが重複している場合に正しく検索できません。
  • どのようにすれば、テナントコードが重複している場合でも正しく検索できるようになるでしょうか。
回答を見る
  • ベストアンサー

Access2000での複合検索再び

http://www.okweb.ne.jp/kotaeru.php3?q=361223 でも質問したのですが、今になってから新たなことが判明しました… ビル区分 テナントコード ----------------------    01    100    01    101    01    102    02    100    02    101    02    103 テナントコードがダブっていないもの、例えば01、102であれば問題なく動作するのですが、ダブっている場合表示されません… 01、100も02、100のときもどちらも検索できるようにしたいのですがどうすればいいですか? 今のコードは Private Sub btn検索_Click() Dim rs As Recordset Set rs = Me.RecordsetClone -------------------------------------------------- rs.FindFirst "[テナントコード]='" & Me![cbo検索テナントコード] & "'" Me.Bookmark = rs.Bookmark cbo検索ビル区分 = Null cbo検索テナントコード = Null Me.Filter = "ビル区分 = '" & Me!cbo検索ビル区分 & "' AND テナントコード = '" & Me!cbo検索テナントコード & "'" -------------------------------------------------- End Sub です。お願いします

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 やりたいことは、[btn検索]ボタンをクリックすると、コンボで選択したビル区分&テナントコードのレコードに移動するということでしょうか。 最初にテナントコードの条件だけで、レコードを移動しているのは何故でしょうか。 ここで、ビル区分の条件も合わせて移動すればいいと思うのですが。 また、フォーム(Me)にFilterをかける前に、各コンボにNullをセットしてしまっているので、Filterで抽出されるはずはないですよ。 コードの1行1行でどういう動作を行っているかを順を追って考えてみて下さい。 なお、以下のコードで出来ると思います。 あと、一度参照した(Setした)レコードセットは、閉じて(Close)解放(NothingをSet)するようにして下さい。 Private Sub btn検索_Click()   Dim rs As DAO.Recordset 'DAOのRecordsetオブジェクト   'フォーム(Me)のレコードを参照する   Set rs = Me.Recordset.Clone   'ビル区分とテナントコードで検索   rs.FindFirst "ビル区分 = '" & Me!cbo検索ビル区分 & "' AND テナントコード = '" & Me!cbo検索テナントコード & "'"   'フォームのカレントレコードに設定する   Me.Bookmark = rs.Bookmark   'コンボボックスを初期化   Me!cbo検索ビル区分 = Null   Me!cbo検索テナントコード = Null   'レコードセットの解放   rs.Close: Set rs = Nothing End Sub

関連するQ&A

  • Access2000での複合検索について

    コンボボックスを使い検索をしたいと考えております! 名前は テーブル1:ビル区分マスタ←フィールド:ビル区分、ビル名 テーブル2:テナントマスタ←フィールド:ビル区分、テナントコードetc…があります コンボボックス:cbo検索ビル区分、cbo検索テナントコード コマンドボタン:btn検索 cbo検索ビル区分に01,02があり、例えば01を選んだときcbo検索テナントコードにビル区分が01のテナントコードを出したいのです!そしてbtn検索をクリックするとフォームにそのデータを出したいのです! こんな文章じゃわかりにくいかとも思われますが、よろしくお願いします!!もんすごい初心者です!

  • Access2000での複数条件での検索

    http://www.okweb.ne.jp/kotaeru.php3?q=351587でも質問したのですが、色々考えたあげくにやっぱりもう一度質問することにしました。 フォームにcbo検索ビル区分、cbo検索テナントコード、btn検索…etcがあります。 cbo検索ビル区分である数字が選ばれたときのみcbo検索テナントコードのプルダウンに数値が現れるようにしたいのです! テーブル(テナントマスタ) ビル区分 テナントコード ---------------------- 01 100 01 101 02 100 02 101 02 103 このときcbo検索ビル区分で01が選ばれたらcboテナントコードには100と101がリストにでるようにしbtn検索をクリックされたらそのレコードを表示させたいのです。  もし仮に先にcboテナントコードのリストを開けた場合は何も表示されないようにしたいのです!  しかしMe.cbo検索テナントコード.Enabled=Falseとしたいわけではありません。使えるけども値はない状態にしたいのです。 どのように文章を書けばうまく伝わるかわからないので、わかりにくければ質問してください!よろしくお願いします

  • アクセスでコードを使って日付からレコードの検索ができません。

    Dim rs As DAO.Recordset Set rs = Me.RecordsetClone rs.FindFirst "生年月日 = #1968/05/03#" 上の場合は問題ないのですが、次の様に、捜そうとする日付を変数にするとどうしても rs.NoMatch = true になってしまいます。 どうしてでしょうか。アクセスは2002、OSは2000です。 Dim Abc As Date Abc = "1968/05/03" rs.FindFirst "生年月日 = " & Abc

  • 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 というようにしたのですが、新規のレコードを作成する部分がどうしても分かりません。 どなたか分かる方、よろしくお願いします。

  • Access2003 入力フォームの表示検索について

    フォームに非連結のボックスを作成し、以下のようなコードを追加し検索用に作成したのですが、 これが不味いのか、稀にデータの修正を行うと違うデータがTabキーもしくは矢印キーの移動で変わってしまいます。 例: ID1 店名 A店 住所 A県 代表者 A様 このデータの店名ボックスの店名をB店に変え、Tabや矢印で 次のボックスに移動すると、 ID1 店名 B店 住所 C県 のように関係ないデータが表示され、さらに移動すると 代表者 C様 と別のデータが移動するごとに表示されてしまいます。 (関係の無い別のIDデータが表示される。) なぜこのようなことが起きるのでしょうか? もし分かる方回答のほどお願いします。 企業コード(検索するフィールド) テキスト_ID検索(ボックス名) Private Sub テキスト_ID検索_AfterUpdate() Dim rs As DAO.Recordset If IsNumeric(Me.テキスト_ID検索) Then Set rs = Me.RecordsetClone rs.FindFirst "企業コード=" & Me.テキスト_ID検索 If rs.NoMatch Then '番号が見付からなかった場合の処理 MsgBox "データが見付かりません。" Else Me.Bookmark = rs.Bookmark End If rs.Close End If End Sub

  • Access レコードの移動

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

  • アクセスのフォームで10件づつ表示する。

    初めて書き込みさせて頂きます。 アクセスのテーブルを帳票形式にて作成して10件づつ表示をさせようとすると一部のデータが表示されません。 方法としては、帳票形式で10件のみ表示出来る様にサイズを調整して「前へ」と「次へ」のボタンをつけて10件づつ表示させています。 ソースは下記の方法で 「次へ」 Private Sub コマンド13_Click() Dim rs As DAO.Recordset, i As Integer Const n As Integer = 10 Set rs = Me.RecordsetClone For i = 1 To n * 2 If rs.EOF Then rs.MoveLast Me.Bookmark = rs.Bookmark Exit Sub End If rs.MoveNext Next Me.Bookmark = rs.Bookmark For i = 1 To n rs.MovePrevious Next Me.Bookmark = rs.Bookmark rs.Close End Sub 「前へ」 Private Sub コマンド16_Click() Dim rs As DAO.Recordset, i As Integer Const n As Integer = 10 Set rs = Me.RecordsetClone For i = 1 To n * 2 If rs.BOF Then rs.MoveFirst Me.Bookmark = rs.Bookmark Exit Sub End If rs.MovePrevious Next Me.Bookmark = rs.Bookmark For i = 1 To n rs.MoveNext Next Me.Bookmark = rs.Bookmark rs.Close End Sub 以上、ご教授の程宜しくお願い致します。

  • Access 検索フォーム

    いつもお世話になってます。 Accessの検索フォームについて教えて下さい。 業務マスターと仕事DBという2つのデーターベースがあります。 業務マスターは共有のサーバーの中にあり、得意先テーブルをリンクして、それをもとに得意先フォームを作りました。 非連結のテキストボックス(txt検索)と非連結のリストボックス(一覧)がり、リストボックス(一覧)のクエリ得意先の抽出に使うフィールドの条件に、Like"*"&[Forms]![得意先フォーム]![txt検索]&"*" を入れました。 txt検索に文字を入れ、一覧リストボックスで絞込をし、選ぶとフォームに表示されるという流れにしたのですが・・・。 Private Sub txt検索_AfterUpdate() Me![一覧].Requery End Sub Private Sub 一覧_AfterUpdate() Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[得意先ID] = " & Str(Nz(Me![一覧], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub [Forms]![得意先フォーム]![txt検索]というパラメータがでて(今まで出たことがない) 文字を入力しても実行できませんでした。参照元が分からないのかなと思いますが、どうしたらうまくいくのか分かりません。どなたかお知恵をかしていただけないでしょうか。Accessは2003を使っています。よろしくお願いします。

  • Access2000の重複チェック

    現在あるデータとあるフィールド内において値が重複してある場合こちら側からエラーを出したいのですがどうすればいいですか? テーブル名:テナントマスタ フォーム:txtビル区分、txtテナントコード、…etc テナントマスタ ビル区分 テナントコード ----------------------- 01 100 01 101 02 102 02 103 ここに新たにフォーム上でビル区分、テナントコードを入力し、この値がそれぞれ01、101だったときbtn登録をクリックしたときこちらからエラーをだしたいのです! どうかよろしくお願いします!!

  • アクセス コンボボックスについて

    コンボボックス 印刷ボタンについて アクセス勉強中です。 フォームで作成した画面 だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにてフォーム印刷ボタンを作成したのですが、 1000人くらいの、すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャという部分は下記です。 またプロジャー以外に何かしなければならないのでしょうか?? どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub