- ベストアンサー
VB2005からAccessに接続したい
- VB2005からAccessのデータベースへ接続で、日時型のデータから日付が合うものを抽出するにはどうすればいいのでしょうか。
- データ型が合わないとか、パラメータが不足しているとかのエラーが出るため、VB2005からAccessに接続して日付が合う行を抽出できません。
- 日付と時間を比較するため、色々な方法を試しましたがうまくいかず、質問させていただきました。お分かりの方は教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
一応作ってみました。 Imports System Imports System.IO Imports System.Text Imports System.Collections Imports System.Data.OleDb Public Class Sample Public Shared Function Main(args As String() ) As Integer Dim con As New OleDbConnection() Dim cmd As New OleDbCommand() Dim dr As OleDbDataReader = Nothing Dim start_dt As DateTime Dim end_dt As DateTime Dim isdate As Boolean = True Dim s As String = New String("") For Each arg In args Console.WriteLine(arg) Next If args.length < 1 Then Console.WriteLine("日付を指定してください") return 1 End If 'DateTimeに変換できるか確かめる Try start_dt = DateTime.Parse(args(0)) end_dt = start_dt.AddDays(1) Catch isdate = False Console.WriteLine("日付を指定してください") return 1 End Try Try ' DB接続文字列の設定 ' プロジェクトフォルダ下のbinフォルダにsample.mdbを置く con.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\users\ユーザ名\Documents\db1.mdb" ' コネクションの設定 cmd.Connection = con ' SQL文の設定 cmd.CommandText = "SELECT 日付, 個数 " cmd.CommandText &= "FROM aテーブル " cmd.CommandText &= "WHERE 日付 >= @start_dt and 日付 < @end_dt" ' DB接続を開く con.Open() ' SQL文パラメータの設定 cmd.Parameters.Add("@start_dt", OleDbType.date) cmd.Parameters("@start_dt").Value = start_dt cmd.Parameters.Add("@end_dt", OleDbType.date) cmd.Parameters("@end_dt").Value = end_dt dr = cmd.ExecuteReader() Do While dr.Read() Console.WriteLine( dr(0).ToString() & vbTab & dr(1).ToString() ) Loop dr.Close Catch ex As Exception Console.WriteLine(ex.ToString()) return 1 End Try return 0 End Function End Class かなり手抜きですが(エラーも標準出力に出している)。
お礼
nora1962さん ご回答ありがとうございました。 参考にさせて頂きました。 日付を分けて考えないといけないんですね。 このままではうまくいかず、Accessなので、日付を#で囲まないとうまくいきませんでした。 このようにしてみました。 Dim tojitu As String = "#" & CDate(yy & "/" & mm & "/" & dd) & "#" Dim tuginohi As String = "#" & CDate(yy & "/" & mm & "/" & dd).AddDays(+1) & "#" da = New OleDb.OleDbDataAdapter("SELECT * FROM TableName where DATE >= " & tojitu & " AND DATE < " & tuginohi , cn) これで何とか希望通りのものができました。 ありがとうございました!