0

他の情報と一緒にMSACCESSデータベースに日付を保存しています。でも、好きなように検索できないようです。年、月で検索したいのですが。私は使用していますdatetimepicker

現在、私はこのコードを使用してこれを行っています。 ADOTable1.Filter := 'Date > ' + Edit1.Text; ADOTable1.Filtered := True; end;

誰か助けてもらえますか?

4

1 に答える 1

2

2つのオプションがあります。ソリューションでは、文字列リテラルをクエリに渡すという、あまり好ましくない方法を使用します。この場合、渡す値を「エスケープ」する必要があります。たとえば、

ADOTable1.Filter := 'Date > ''' + Edit1.Text + '''';

これにより、次のような行になります

ADOTable1.Filter := 'Date > ''27-Sep-69'''

より良い解決策は、パラメーター化されたクエリを使用することです

select <whatever> from table
where date > :p1

次の方法でパラメータを渡します

ADOTable.parambyname ('p1').asdate:= strtodate (edit1.text);

構文が少しずれている可能性があるため、ADOコンポーネントを使用していないことは認めますが、これはFirebirdで使用されている構文です。

正しい数の引用符を追加することを心配する必要がなく、誰も悪い値を渡すことができないため、パラメーターは生のテキスト値を使用するよりも優れています。edit1.textに「27-Sep-65;Droptable1」が含まれているとどうなるか想像してみてください。-これにより、データベースからテーブルが削除される可能性があります。

于 2013-02-12T13:48:45.010 に答える