• ベストアンサー

ACCESSでの検索方法について

yanmaaの回答

  • ベストアンサー
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

まず参考になる質問を一つ(続き物なので2つ上げています)を見てみてください。 http://www.okweb.ne.jp/kotaeru.php3?q=155505 http://www.okweb.ne.jp/kotaeru.php3?q=161189 で前置きはこの程度として まずトランザクションデータが格納されているファイルをワークテーブルに挿入して 1.マスタテーブルとワークテーブルでキー項目で結合して更新が必要な部分更新する。 2.ワークテーブルにあってマスタテーブルに無いキー項目をもつレコードを抽出(不一致クエリーの応用) 3.2の結果を追加クエリーでマスタテーブルに追加 という方法もありますね。

snowb
質問者

お礼

早速の回答ありがとうございます。 またよろしくお願いします。

関連するQ&A

  • ExcelVBAでAccessのデータを検索する

    Excel  VBA で、ADOを用いてAccess のデータを検索するにはどうしたらいいですか。 やりたいこと 検索結果を、Excel のセルにコピーすること。 ソースコード 'MDBファイルに接続します Set db = New ADODB.Connection db.Provider = "Microsoft.Jet.OLEDB.4.0" db.Open "C:\Database\test.mdb" 'レコードセットを開きます Set rs = New ADODB.Recordset 'テーブルを開きます rs.Open "PT_MST", db, adOpenForwardOnly, adLockReadOnly findName = ws.Cells(i, 1) & ws.Cells(i, 2) Do ' rs.Find "[S_NUM]='" & findName & "'" rs.Find rs.Fields(1).name & " Like '20k%'"  ← ここで、サポートしていない旨のエラーが出る。 If Not (rs.EOF) Then Debug.Print rs.Fields(1).Value Else Exit Do End If rs.MoveNext Loop Until rs.EOF '閉じる rs.Close db.Close '終了処理 Set rs = Nothing Set db = Nothing どう直したら、検出結果を取得できますか。 ご教示下さい。

  • アクセスの検索について

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

  • access vb の検索をする命令でエラー

    access vb の criteria を使用してデータ検索をする命令の箇所でエラーが出る (テスト用データではエラーが出ない)   テストを終え本番切り替え時にエラーが出る。   動作環境はWinxp,winvista、win7 access2003とaccessvbで構築したdb      実行時エラー’3265’もどこを見て原因があるかも不明です     (Accessデータベースを検索するためAccessのフォームにある Access vbの、(1)ロジックと、(2)エラー表示の内容) (1)ロジック      rs2.Open "講座開始日時テーブル",cx,adOpenKeyset,adLockOptimistic  criteria = "講座コード ='”& 講座コード & "'"   ’講座コードの属性は string      rs2.moveFist      rs2.find critera, 0    ’<- この命令のところでテスト用プログラムでは                    ’エラーがでないのに、本番用プログラムでは                    ’以下のエラーが出て原因が把握できない状態です       Do Until rs2.EoF                 If rs2.EOF Then 講座番号確認区分 = "エラー"  ’エラー表示 GoTo enda Else 講座コード = rs2!講座番号    ’データ検索OK          GoTo XXX  Endif      Loop (2)エラー表示  |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー  |Microsoft Visual Basic  | 実行時エラー’3265’  | 要求された名前、または序数に対応する項目がコレクションで見つかりません。  |   |   | 継続  終了(E)  デバッグ(D)  ヘルプ(H)  |ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

  • Access97VBAでのFilter方法

    ・初歩的な質問でスミマセン。  Access97のVBAでツマヅキ、何か解決の方法はないかと思い質問させていただきます。 クエリー1を元にして作成した、開いている「フォームA」の「テキスト1」(テキストボックス)の文字列でフィルターをかけたいと思っています。 下記のコードを書き実行するのですが、フィルターがかからずクエリー1のデータがそのまま抽出されてしまいます。 Filterコマンド行の記述が間違っているのでしょうか? * クエリ1に「フォームA」の「テキスト1」ボックスを参照する抽出条件を入れてたのですが、「パラメータが少なすぎます。・・・」のエラーとなるので、この方法で行っています。 * Private Sub コマンド6_Click() Dim stTBL, stFltr As Recordset Dim stQRY As DAO.Recordset Set stQRY = CurrentDb.OpenRecordset("クエリー1") stQRY.Filter = "テキスト1='" & [Forms]![フォームA]![テキスト1] & "'" Set stFltr = stQRY.OpenRecordset stQRY.MoveFirst Do Until stQRY.EOF MsgBox stQRY.Fields("フィールド2") stQRY.MoveNext End If Loop 以上のようなんですが、どうかご指導お願いします。

  • 【VBA】DoUntil Loopを1度のみ実行

    いつもお世話になっております。 Excel2003を使用しております。 「この条件になるまで続行」というのは Do Until Loop だと思うのですが、 ループをしたくないけれど Do Until Loop を利用したい場合(条件になったら即終了したい) Do Until Flag=True 実行したいこと 実行したいこと2 実行したいこと3 Exit do Loop また、やりたいこととしては、 FlagがTrue になったら、プロシージャから抜けたいと思っています。 その場合は、 Do Until Flag=True  実行したいこと  実行したいこと2  実行したいこと3  Exit do Loop If Flag=True Then   Exit sub End if このように、別々?に書く以外に方法はないでしょうか? 出来れば、簡単なIF文で実行できないかと思ったのですが… 話がごちゃごちゃしていて分かりにくいので、質問事項のみまとめますと、 ● 条件になったら終了させる。 これは、Do~Loop 、For Next のみの動作でしょうか? ● ループから抜けると同時にSubを終了させるには、ループの外にIF文を書くしかない? 以上、よろしくお願い致します。

  • RDOでrowcountが1以上なのに、EOF!

    よく分からない現象が発生して困っています。 SQLServer2005 (9.0.1399) 【?な結果】 sSql = "Select * from ○○マスタ" Set oRst = goRDO_Con.OpenResultset(sSql, rdOpenKeyset, rdConcurReadOnly) Do Until oRst.EOF oRst.MoveNext Loop 上記のような文で、oRst.rowcountを取得すると10件なのに、 oRst.Eofを取得すると最初から常にTrueが返ってきます。 【思い描いている結果】 sSql = "Select * from ○○マスタ" Set oRst = goRDO_Con.OpenResultset(sSql, , rdConcurReadOnly) Do Until oRst.EOF oRst.MoveNext Loop 上記のような文では、oRst.rowcountを取得すると10件で oRst.Eofを取得すると最初はFalseが返ってきます。 他のSQLServerがインストールされている別の端末では、 正常にどちらの文も最初はEOFはFalseなのにも関わらず、 ある端末だけが上記のような結果になります。 どこかSQLServerのインストールがおかしいのかもしれませんが、 全く検討がつきません。 怪しいのは、?な結果が返る端末のホスト名が最初○○で、 その状態でSQLServer\MSSQLEXPRESSをインストール。 その後、ホスト名が△△に変更。SQLServer2005をインストール(上書き) している状況ということです。 どなかた何か情報ありませんでしょうか。。

  • ループ処理の繰り返しについて

    お世話になっております。 単純なことで悩んでおります、どなたかわかるかたお願いいたします。 <% DO UNTIL SQLrs.EOF IF a=0 THEN %> 処理1 <% END IF SQLrs.MOVENEXT LOOP %> <% SQLrs.MOVEFIRST DO UNTIL SQLrs.EOF IF b=0 THEN %> 処理2 <% END IF SQLrs.MOVENEXT LOOP %> 上記のような処理順なのですが、問題は MoveFirstで先頭のレコードにもどらないのか、2回目のループ処理がうまく抽出できません。 原因はわかりますでしょうか?

  • Do Untilで途中で抜け出る方法は

    Do Until rs.EOF myCtr = myCtr + 1 If myCtr > 5 Then brake End If Debug.Print rs!品番, rs!品名 rs.MoveNext Loop こんな感じでできませんか 実行してみると brakeのところでエラーになります ACCESSの中のVbでADOを使っています

  • Excel VBA : Accessのデータを検索

    Excel VBA を使って、Accessのデータを検索したい。 除外テーブルには「管理ID」レコードが在り、ユニークな番号を登録してあります。 やりたいことは、除外テーブルの管理IDに在るであろう、"E003"の有無を確認したいと思います。 作ってみたソースコードは、以下の通り。 Private Sub aSearch_Click() DB.TableOpen ("db_name.mdb") 'Accessのファイル DB.FindRecode ("E003")  ' 検索対象文字列 DB.TableClose End Sub ------------------------------ここから、標準モジュール Public adoCn As ADODB.Connection Public adoRs As ADODB.Recordset Public fSql As String Public fRow As Integer 'データ ソースへの接続と、レコードセットへの接続 Sub TableOpen(ByVal mdb_name As String) Set adoCn = New ADODB.Connection 'データ ソースへの接続 adoCn.Provider = "Microsoft.Jet.OLEDB.4.0" 'Accessへ接続プロバイダ名 adoCn.Open mdb_name '接続するmdbファイル名" fSql = "select 管理ID from 除外テーブル" Set adoRs = New ADODB.Recordset 'レコードセットへの接続 adoRs.Open fSql, adoCn, adOpenKeyset, adLockReadOnly 'クエリーの実行 ' adoRs.Open "除外テーブル", adoCn, adOpenKeyset, adLockReadOnly 'クエリーの実行 End Sub 'レコード(管理ID)の検索 Function FindRecode(ByVal findName As String) As String adoRs.Find adoRs.Fields("管理ID") & "=" & findName     '← ここでエラーとなる  If adoRs.RecordCount = 0 Then MsgBox "該当するレコードは存在しません" FindRecode = "" Exit Function Else Do     ' Doループは、要らないかも??? Debug.Print adoRs.Fields("管理ID") & "/" & adoRs.Fields("登録日") adoRs.MoveNext Loop Until adoRs.EOF End If FindRecode = adoRs.Fields("管理ID") End Function 'データ ソースへの接続と、レコードセットを切断する Sub TableClose() adoRs.Close 'クエリーを閉じる adoCn.Close 'データ接続を閉じる Set adoRs = Nothing Set adoCn = Nothing End Sub ------------- ここまで データのソースから、検索する方法が良く判っておらず、Open / find の使い方はこれで良いのでしょうか。 以上、よろしくお願いします。

  • Access テーブル内検索を教えてください。

    いつもお世話になっております。今回、また皆様のお知恵をお貸しいただきたく思います。 検索対象テーブル:社員マスタ(ユニオンクエリ)複数件 検索値:画面リストボックスより入力された部署コード・BUSYO 処理内容:社員マスタの部署コードに入力値BUSYOが一致している データに【更新処理:(仮)INSERTクエリ】を実行したい。 DLookup()や、FindRecord を調べましたが私の技力は限界です。 どうか、ご教授お願いします。 ■コード(実際チャレンジした一部です。) 'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する strBusyo = DLookup("[部署コード]", "qry_社員マスタ", BUSYO) '結果のテスト表示 If strBusyo = "" Then  MsgBox BUSYO& "は、見つかりませんでした" Else  qry_社員マスタから条件に合致したデータをテーブルにInsert  DoCmd.OpenQuery "qry_追加処理"  DoCmd.FindRecord strBusyo 'データを検索する  DoCmd.GoToControl "[部署CD]" 'コントロールを[部署CD]へ移動 End If