• 締切済み

DAO3.6のFilterプロパティの使用方法

Windows95,Excel2000でDAO3.6のFilterプロパティを使用しようと 思います。 Filterプロパティの設定方法とOpenrecordsetのパラメータについて 教えて下さい。 RS.Filter = 抽出条件 Set TB8 = RS.OpenRecordSet() でいいのでしょうか? 宜しく御願いします。

みんなの回答

noname#420
noname#420
回答No.1

参考URLの Function FilterField 以下を参考にされてはいかがですか

参考URL:
http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/dao360/daprofilterx.htm

関連するQ&A

  • DAOのrs.Filter =の使い方

    Q_CCというクエリーのフィールドにIDがあります。 あるフォームのボタンのイベントプロシージャに Set db = CurrentDb() Set rs = db.OpenRecordset("Q_CC", dbOpenDynaset) rs.Filter = "ID = 'Me.メールID'" としましたけど、フィルターが働いてくれません。 " と ' の使い方がまずいと思います。 私のフォームに「メールID」というものが関連づけられていて、 このメールIDという値はMe.メールIDで求められますが、 このメールIDと同じ値のQ_CCのIDで、Q_CCにフィルタかけたい のです。 rs.Filter = "ID =" + Me.メールID としたらエラーです。 よろしくお願いします。

  • 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 以上のようなんですが、どうかご指導お願いします。

  • DAOでのコードをADOへ書き直し

    Access2003、WinXPです。 レコードセットの取得関係をDAOで書いていたのですが ADOに途中から変更しました。 変数宣言を Public db As DAO.Database ⇒Public cn As ADODB.Connection Public rs As DAO.Recordset ⇒Public rs As ADODB.Recordset Public Fld As DAO.field  ⇒Public Fld As ADODB.field レコードセット取得を Set db = CurrentDb      Set rs = db.OpenRecordset(strSQL) ↓ Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open strSQL, cn レコードセット クローズを Set rs = Nothing Set db = Nothing ↓ rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing としました。今のところ動いているようですが、 何か勘違い、気をつけないといけない事等ありますでしょうか・・・?

  • DAOでレコード数を取得したい(ACESSVBA)

    レコードの行数は複数あるのに --------------------------------------------------------- Sub あ() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("T_test", dbOpenDynaset) MsgBox rs.RecordCount Set rs = Nothing Set db = Nothing End Sub --------------------------------------------------------- これでレコード数を取得しようとすると1がかえるのですが なぜレコードの行数を取得できないのでしょうか?

  • アクセスVBA 変数での抽出条件の書きかた

    顧客データテーブルからの抽出です。 変数を使った書き方がわかりません。 よろしくお願いします。 テーブルのレコードには [氏名]:鈴木 [telnum]:0123456789 が存在します。 Private Sub テキスト0_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("顧客マスタ", dbOpenDynaset) Dim str As String str = "0123456789" rs.Filter = "[telnum] = ' " & str & " ' " Set rs = rs.OpenRecordset MsgBox (rs!氏名) ’←エラーメッセージ”カレントレコードがありません。”が出ます End Sub

  • DAOでのOpenRecordsetの方法

    SQLServerのDBをDAOを使って更新しようとしていますが、方法がわからず困っています。 ------------------- private Cn as DAO.Database private function fnc1() as integer Dim ws As DAO.Workspace Dim rcdst1 As DAO.Recordset dim strCnct As String dim strSQL As String strCnct = "ODBC;Driver={SQL Server};SERVER=" & g_strSVName & ";DATABASE=" & g_strDBName & ";UID=" & strpUserID & ";PWD=" & strpPassword & ";" 'DB接続 Set Cn = ws.OpenDatabase("", False, False, strCnct) strSQL = "SELECT * FROM Table1" Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbDenyWrite, dbOptimistic) ------------------------------------- このOpenRecordsetで ODBC--すべてのレコードをロックできません。(3254) のエラーが出ます。 また、OpenRecordsetを Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset) とすると rcdst1.Edit で データベースまたはオブジェクトは読み取り専用なので、更新できません。 のエラーが出ます。 どうしたらいいでしょうか。

  • 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が返るのでしょうか?

  • DAOでデータベースを二つ開くには?

    環境 Windows2000 VB6 DAOで同じデータベースを開くためのやり方がわかりません。 下記のようにマスタのキーを使用して他のテーブルの 内容を更新したいのですが よろしくお願いします。m(__)m Dim ws As Workspace Dim db As Database Dim qd As QueryDef Dim rs As Recordset Dim STRSQL As String dim strsql2 as string Set ws = DBEngine.Workspaces(0) Set db = ws.Databases(0) STRSQL = "SELECT KEY FROM マスタ" Set qd = db.CreateQueryDef("", STRSQL) Set rs = qd.OpenRecordset() Do While Not rs.EOF strsql2 = "Update data from マスタ where key = " & rs!key ???? rs.MoveNext Loop rs.Close qd.Close db.Close

  • ACCESS どこがおかしいのか?

    ACCESSで。クエリからフォームを作成し、検索フォームを作成しようとしています。 AND条件とOR条件を作り検索(抽出)を行いたいのですが、何が間違っているのか、 検索をかけるとすべて「登録がありません」になってしまいます。 どこが間違っているのか、もしくは代替案を教えていただけますでしょうか。 以下は記述した、VBAコードです。 Private Sub 検索ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim stFil As String Set db = CurrentDb() Set rs = db.OpenRecordset("Q_Autoweb", dbOpenDynaset) 'オプションボタンで条件を選択 If 検索条件 = 1 Then rs.Filter = "[タイトル]='" & タイトル検索 & "' and [本文]='" & テキスト15 & "'" Else rs.Filter = "[タイトル]='" & タイトル検索 & "' or [本文]='" & テキスト15 & "'" End If Set rs = rs.OpenRecordset Set Me.Recordset = rs If rs.EOF = True Then MsgBox "登録がありません" Else Me.ID = rs!ID Me.案件名 = rs!案件名 Me.タイトル = rs!タイトル Me.本文 = rs!本文 End If rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub よろしくお願いします。

  • Access のADOのrecordset

    Access VBA でのrecordset はDAOとADOがあります。 DAOの場合recordsetからrecordsetを作成できました。 つまり、日本からある県を選び出し、その中から10代の人を選び出せました。 ところが、ADOの場合それができません。ある県の10代の人を選び出そうとしても、 結果的に全日本の10代の人となってしまいます。 例として RD1.Filter = "購入日># " & DateAdd("yyyy", -1, Date) & "#" Set RD2 = RD1.OpenRecordset この「RD2」という新しいrecordsetができます。 RD2は購入日が今日から1年前の1つのファイルとしてsetされます。 この中から山田さんの売り上げを集計することができます。 ところが、ADOの場合下記のように書いて、 str = RS!ブランド RS.Filter = ("ブランド = " & "'" & str & "'") RS.MoveFirst str = RS!名前 RS.Filter = ("名前 = " & "'" & str & "'") 上はある雑貨店のDBですが、あるブランドを抽出します。次にその中から、ある顧客の売り上げを集計する場合、結局全ブランドの”田中さん”になってしまいます。 要は、最初にブランドで抽出した意味がないのです、 ADOでDAOのようにrecordsetからrecordsetを作る方法はないのでしょうか? ADOの書き換えるのはMSのQSLserverがDAOの対応してないからです。

専門家に質問してみよう