- ベストアンサー
レコードの検索について
maruru01の回答
こんにちは。maruru01です。 kensaku1 = "irai_no = '100'" kensaku2 = "gyosya_nm = 'ABCD'" rs.DAO.FindFirst kensaku1 & "AND" & kensaku2 でいいと思います。 ちなみに、 kensaku = "irai_no = '100' AND gyosya = 'ABCD'" rs.DAO.FindFirst kensaku でももちろんいいです。 では。
関連するQ&A
- Access97 VBAにてレコードの検索
お世話になります。 フォームでのレコード追加の際、 重複入力を避けるためにレコード検索を追加したいのですが、うまくいきません。 ただいまのソースは、 Set db = DBEngine.Workspaces(0).Databases(0) Set myrs = db.OpenRecordset("社員マスター", DB_OPEN_DYNASET) myrs.FindFirst "社員_cd =" & " '" & Me.社員_cd & "' " If myrs.NoMatch = False Then IMsg = "すでに登録されています!!!" IRet = MsgBox(IMsg, 16, "エラー") myrs.Close db.Close Exit Sub End If 以上はうまく機能するのですが、 社員マスターのキーを"部門_cd"と"社員_cd"にする場合、 単純に社員_cdのみのチェックではダメで、部門_cdのチェックも同時に必要になるかと思いますが、うまくコーディングできず。 myrs.FindFirstの一文を適切に書いてやらなければいけないと思いますが、わかりません……。 教えていただけますでしょうか? ※質問文のみでは情報が不足している場合、ご指摘いただければ補足にて追加させていただきます
- ベストアンサー
- Visual Basic
- DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。
Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges) このレコードセットは正常に行きますが 直接SQLを記述する方法が、わかりません
- 締切済み
- その他(ソフトウェア)
- DAOのExcelVBAにてAccessのデータを更新したい
ExcelVBAよりAccessデータの追記は、AddNewを使用してできたのですが、単純な更新ができません。 strWhere = "Select * From 集計テーブル Where [フィールド1]='001'" Set dbWS = DBEngine.Workspaces(0) Set dbWB = dbWS.OpenDatabase("C:\対象MDB.mdb) 'データベースを呼び出す Set dbRes = dbWB.OpenRecordset(strWhere, dbOpenDynaset) 上記はそもそも更新ステートメントがありません。どのように書けばよいのでしょうか?どうかアドバイスお願いします。
- ベストアンサー
- オフィス系ソフト
- 初心者ですデータベースの形式 ・・・を認識できませんというエラーがでます
VBを始めたばかりの初心者でDB接続がいまだによくわかっていません。 以下のプログラムをデバックするとデータベースの形式 <ファイル名> を認識できません というエラーがでてしまいます。access2007はインストールしたばかりで何も設定とかは いじってないと思います。 利用ソフト VB2008 Express Edition MS ACCESS 2007 Imports dao Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'DAOのオブジェクト変数を宣言する() Dim ws As dao.Workspace Dim db As dao.Database Dim rs As dao.Recordset ' デフォルトのワークスペースを定義する 'DAO.DBEngine.Workspaces(0)の関数 'ws = DBEngine.Workspaces(0) Dim obj As DBEngine = New DBEngine() ws = obj.Workspaces(0) Try ' データベースを開く db = ws.OpenDatabase("C:\Users\PCUser\Desktop\database\Database1.accdb") ' テーブル名を指定してレコードセットを作成する rs = db.OpenRecordset("adress", RecordsetTypeEnum.dbOpenDynaset) Catch ex As Exception MsgBox(ex.Message) End Try MsgBox("DB接続") End Sub
- ベストアンサー
- Visual Basic
- レコードセットに新規追加する
Access2013 VBAで ■テーブルa ・id ・名前 ・id2 とあり このテーブルのレコードセットを以下のように作ります。 dim Rec = dao.Recordset Set Db = CurrentDB set Rec = Db.OpenRecordset("Select * from [テーブルa] where id2 = " & 2, dbOpenDynaset) この時、このテーブルにid2=2のレコードが何もない場合、この生成したRecで、 Rec.AddNew Rec.Fields("名前").value = "名前" Rec.Update と出来ますでしょうか? よろしくお願いします。
- ベストアンサー
- その他(データベース)
- vb6でmdbのOpenDatabase時にエラー
お世話になります。 PC98の環境でVB6でオフィスの入っていない環境です。 Set db1 = DBEngine.Workspaces(0).OpenDatabase(App.Path & "aaa.mdb",dbDriverComplete) を実行すると ”このプログラムは不正な処理を行ったので強制終了します。” となってしまいます。 昨日までは、エラーなく動いていたのですが原因がわかりません。 ご教授宜しくお願いします。
- ベストアンサー
- Visual Basic
- 名前'dbOpenDynaset'は宣言されていません というエラーがでてしまいます。
VB初心者です。データベース接続を一度も成功したことがありません。 そのため「参照の追加」でMicrosoft DAO 3.6Object Libraryを設定することも わかりませんでした。 利用しているソフトはVB2008 Express Editionを利用しています。 以下のソースコードで名前'dbOpenDynaset'は宣言されていません というエラーがでてしまいます Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'DAOのオブジェクト変数を宣言する() Dim ws As DAO.Workspace Dim db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Dim obj As DBEngine = New DBEngine() ws = obj.Workspaces(0) ' データベースを開く db = ws.OpenDatabase("C:\Users\PCUser\Desktop\database\Database1.accdb") ' テーブル名を指定してレコードセットを作成する rs = db.OpenRecordset("adress", dbOpenDynaset) MsgBox("DB接続") End Sub End Class
- ベストアンサー
- Visual Basic
- 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 ・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくご教授お願いします。
- 締切済み
- オフィス系ソフト
- DAO エクセルvbaからアクセスのレコードの件数
DAOで、エクセルvbaからアクセスのレコードの件数を取得したいのですが Dim ac As Object Dim db As DAO.Database Dim rs As DAO.Recordset Set ac = CreateObject("Access.Application") Set db = ac.DBEngine.OpenDatabase("D:\あああ.accdb", False, True) Set rs = db.OpenRecordset("SELECT * FROM Tマスタ WHERE masterkey like '*四*';") i = rs.RecordCount Debug.Print rs("masterkey") rs.Close: Set rs = Nothing db.Close: Set db = Nothing ac.Quit: Set ac = Nothing をすると、抽出するレコードが1000件でも、必ず1が返ります。 masterkeyフィールドは文字列型です。 なぜ実際はたくさんのレコードがあるのに、1が返るのでしょうか?
- ベストアンサー
- オフィス系ソフト
- FindFirstでレコードに移動できない
テーブルを基にフォームをデータシートビューで表示しています。 フォームを開くと、デフォルトで1レコード目がアクティブになります。 vbaで2014/07/02のレコードをアクティブにしたいので 標準モジュールに Forms("フォーム").Recordset.FindFirst "取引日 = 2014/07/02" としても、アクティブになりません。 エラーにもなりません。 Forms("フォーム").Recordset.FindFirst "取引日 = " & #7/2/2014# もダメでした。 FindFirstメソッドは 「条件と一致する最初のレコードを検索する」するのではないのでしょうか? 2行目のレコードをアクティブ(選択状態)にさせたいです。
- 締切済み
- オフィス系ソフト
お礼
実はANDでつなげてFindFirstで試していたのですが、 検索内容とANDの間にスペースを入れていなかったので エラーになっていたようです。 おかげさまで出来ました。ありがとうございます.