• 締切済み

Access2000で条件付き検索の方法?

アクセス2000でWHERE句に 年月日 等の条件付きSELECT文を実行したいのですが 構文等の構成が分かりません。  以前は、EXCELで何とかプログラムが組めたのですが、アクセスは今回初めての試みで、 だいぶ勝手が違い戸惑っています。 「逆引きExcel VBA」、「逆引きVB6」その他「アクセスVBA」本等 文章を探してみましたが、 それぞれ、DAO、ADO、Commandを使うやり方を紹介してるのでが、うまくいきません。 「AccessVBA+SQL実践活用」という本では、次のように書いてあります。 Connectionオブジェクトをつかったプロシージャー cn ,rs, mySQL の変数宣言 Set cn=CurrentProject.Connection Set rs=New ADODB.Recordset mySQL="SELECT ***********  rs.Source=mySQL rs.ActiveConnection=cn rs.Open これでデータが取れて、変数に入れています。あと cn , rs をとじて終了  このほか、Commandオブジェクトを使う方法も紹介していますが、同じようなものです。 この方法だと、rs.Openのところで「引数不足」というコメントが出て、デバッグ中断します。 rs.Open("テーブル名")と書いても「引数不足」とコメントされます。 検索自体は、SQL文のところでWHERE 句 に =年月日 又は、特定の=番号と等しいFIELDの検索 なんですが、その前後の手順がわかりません。 VB6の時のようにConnectionString="MsProvider********** と書く方法の方がただしいのか、 わかりません。この構文も今ひとつ手順が、はっきりわからないので困っています。 ソフトは、Win7(64ビット) Access2000 です。 尚、DAOをつかった、ファイルを読み込みDBテーブルに書き込みするのは出来ています。 わかる人がいたら、是非是非おしえてください。 この文だけで、だいぶ時間をかけてしまいました。  よろしくお願いします。

みんなの回答

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.1

難しい事に挑戦してますね。 もっと簡単に ”クエリビルダ”を使って動作を確認(クエリを実行)して旨く作動することを確認したら・・・・クエリビルダでショートカットメニュー[SQLビュー]をクリックすれば SQL文がみえます。 参考URLをご覧下さい。

参考URL:
http://www.bitpower.co.jp/doc/%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E6%AD%A3%E4%BD%93.pdf
kengujin07
質問者

お礼

回答ありがとうございました 早速やってみます。

関連するQ&A

  • アクセスVBAで検索条件にFormatは使えませんか?

    前に同じような質問をしたのですが解決できないので再度お願いします。 アクセス2000で、あるテーブルの日付型フィールドデータを検索条件に抽出する方法なのですが、 rs.find "Format([売上日付],'yyyymm')='200309'" とするとエラー(引数の型が  になります。 Formatを使ったこのような書き方はできないのでしょうか? rs.Open "売上TB", cn, adOpenKeyset, adLockOptimistic rs.MoveFirst rs.Filter = "Format([売上日付],'yyyymm')='200309'" とFilterを使っても駄目なんです

  • access97に2001年のデータ検索

    アクセス初心者のyaschiです。 よろしくお願いいたします。 テーブル入力されているデータを日付を条件に 取得しようと思い、以下のようなSELECT文を作りました。 SELECT * FROM AAA WHERE 年月日=#99/03/17#; このSELECT文の場合、きちんとデータを取得できるのですが、 2001年1月10日のデータを取得しようとしてWHERE句を 以下のように変えたところできませんでした。 WHERE 年月日=#01/01/10#; 2000年の問題かと思い2000年11月20日のデータを取得しようと WHERE句を以下のように変えたら今度は取得できました。 WHERE 年月日=#00/11/20#; なぜ、2001年のデータだけ取得できないのでしょうか?

  • ACCESS SQLで複数データ表示させるには?

    *************************************************** Private Sub Form_Load() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection mySQL = "select * from テーブル" rs.Open mySQL, cn, adOpenForwardOnly, adLockOptimistic ’コントロールに代入 Me.No = rs![No] Me.項目 = rs![項目] ・・・ End Sub *************************************************** こんな感じで、クエリでなくSQLで フォームにテーブルの全レコードを表示させたい場合、 どのようにすればよいのでしょうか? 上の文には、何が不足しているのでしょうか? http://www.accessclub.jp/ado/09.html を見ましたが、解決できませんでした。

  • WHERE レコードが抽出されない

    ADOでSQL文を作ってるのですが WHERE句がうまくできません。 rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "URL like '#*'" なら、うまくいくのですが、 Filterを使うのをやめて、WHEREに書きかえると、エラーにはならないのですが 取得レコードが0件になります。 rs.Open "T_テーブル WHERE [URL] like '#*';", cn, adOpenKeyset, adLockOptimistic も rs.Open "T_テーブル WHERE URL like '#*';", cn, adOpenKeyset, adLockOptimistic も、0件が返ります。 何がおかしいのでしょうか? URLフィールドで、#で始まるレコードを抽出したいです。

  • 【ACCESS2000】 VBAの更新処理に条件を加えたい。

    下記のような更新処理のVBAを組みました。 これにIDが5のものを更新するというのを加えるには どうすればよいでしょうか。 Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "tbl_D_売上", cn, adOpenKeyset, adLockOptimistic, adCmdTableDirect rs("入金方法") = 2 rs("入金方法名称") = "分割" rs.Update rs.Close Set rs = Nothing cn.Close Set cn = Nothing

  • ACCESS VBA

    ACCESSで検索フォームを作りたいと思っています。 VBAを使って行きたいと思うのですが、うまくいきません。 希望としては、該当するレコードのデータを抽出したいです。 よろしくお願いいたします。 ※現段階でのソースを書いてみました。 最終的に行いたい処理とは違うのですが、根本的に間違っているようなので簡略化しました。 /------------------------------------------------/ Private Sub コマンド1_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String '接続 Set cn = CurrentProject.Connection 'レコードセットを取得 Set rs = New ADODB.Recordset sql = "SELECT * FROM 従業員データ " & _ "WHERE 年齢=30" rs.Open sql, cn, adOpenDynamic, adLockReadOnly rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub /------------------------------------------------/

  • 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 としました。今のところ動いているようですが、 何か勘違い、気をつけないといけない事等ありますでしょうか・・・?

  • 引数が無効です アクセス ADO AddNew

    アクセスのテーブルにアクセスVBAで値を追加しようとしてるのですが Set cn = CurrentProject.Connection rs.Open "SELECT * FROM TAccess", cn, adOpenStatic, adLockPessimistic rs.AddNew rs("主キー") = Me.txt_主キー.Value rs.Update を実行しようとすると、 rs.AddNewの部分で、「引数が無効です」と言うエラーが発生し、 一時的にVBAコードが止まります。 しかしそのままF5で処理を実行すると、問題なくコードが動き、データが追加されます。 でもかならずrs.AddNewでエラーが発生します。 エラーが発生するのにそのまま実行すると問題ないのはなぜでしょうか? 「引数が無効です」は、どういう意味のエラーなのでしょうか?

  • MSFlexGridでデータの追加の方法は?

    VB6.0 WINXP DB:Oracle10g  よろしくお願いします。 SELECT文でデータベースからデータを取ってきてMSFlexGridにデータを送ったのですが、そのデータに更に追加したいと思います。 ' ADOのオブジェクト変数を宣言する Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim STRSQL As String 'Oracleとの接続 cn.Open "Provider=MSDAORA;" & _ "Data Source=NT;", "scott", "tiger" ' SQLステートメントを指定してレコードセットを作成する re.Open STRSQL = "select * from TOKUI WHERE A01 = 100" rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic 'グリッドに送る Set MSFlexGrid1.DataSource = rs 'ここからのSELECT文を追加したいと思います。 STRSQL = "SELECT TOKUI FROM WHERE A01 = 200" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic よろしくお願いします。

  • アクセスADO 複数のレコードがあるのに-1が返る

    アクセスのADOを作っています。 テーブルにレコードは複数あるのですが、Filterをすると必ず-1が返ります。 どうしてでしょうか? エラーになってるのでしょうか? ---------------------------------------------------- Set cn = CurrentProject.Connection myStr = "test" rs.Open "Tテーブル", cn, adOpenForwardOnly, adLockReadOnly rs.Filter = ("フィールド1=" & "'" & myStr & "'") MsgBox rs.RecordCount ’マイナス-1になる rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing ---------------------------------------------------- rs.Open の下に、MsgBox rs.RecordCountを置いても、-1になることから、Filter のせいではないと思うのですが 原因がわかりません。 ご教授よろしくお願いします。

専門家に質問してみよう