2017-06-07 7 views
0

私はVisual BasicとStackoverflowを初めて使用しています。私はデータベースから特定のフィールドを照会していますが、エラーを受け取りました。ここに私のコードです:日付パラメータを使用してデータベースにクエリを行う

Dim fifdate As Date = Now() 
fifdate.AddDays(-15) 

db.AddParam("collected", "N") 
db.AddParam("printed", "Y") 
db.AddParam("sent", "Y") 
db.AddParam("date", fifdate) 




Dim query As String = "Select * from badcheck where fldcollected = 
@collected And fldprinted = @printed And fldsentda = @sent " 

'And fldsentdate > @date 

db.ExcecuteQuery(query) 

CheckedListBox1.DataSource = db.DBDT 

私は、クエリにコメントアウトセクションを追加した場合、私は「抽出条件式でのデータ型の不一致」エラーを取得しますが、クエリはそれなしで完全に正常に動作します。私は、fldsentdateがデータベースの日付として設定されていることを確認しています。どのようにして問題を解決できるかについての提案はありますか?

+0

db.AddParam( "@ collected"、 "N") '、yada-yada-yada。ブール値の列Y-Nを作成しないでください。 – LarsTech

+1

あなたの洞察をいただきありがとうございます。私は既に作成したデータベースで作業しています。何らかの理由で、作成者はこれらのフィールドを文字として設定し、ブール値ではありません。 – bigboi214

+0

コメント部分を読み込むように変更するとどうなりますか?&fldsentdate>#@ date# 'Microsoft Accessは日付の値を囲む#が好きです –

答えて

2

私は問題を解決できました。私は完全にアウトfifdate変数を取って、私にパラメータコードを変更:

db.AddParam("date". date.today.AddDays(-15)) 

何かがfifdateで間違ったつもりだった、と私はそれが今原因とすることができると考えています()。私は直接クエリを使用してfifdateを試して、同じエラーを受信して​​いた。

+0

A-ha、それはまったく違ったものでした。私はDateAddと今問題を持っていました。私の問題は、日付の時代がより正確で、ミリ秒/ナノ秒に正確であり、日付の形式を変えると考えています(Accessが慣れているものと比較して) –

+1

私は同じことを考えていました。変数に日付のみを与えるのではなく、日付と時刻を与えていました。データベース変数は日付だけでした。 – bigboi214

+0

問題はDateTime変数が不変であることです。数学演算では変数は変更されませんが、変更には新しい変数**が返されます。正しいコードは 'fifdate = fifdate.AddDays(-15)'または単に 'fifdate = DateTime.Now.AddDays(-15)'となります。おそらく '.Date'を使って時間を取り除きたいでしょう。 – Plutonix

関連する問題