他の情報と一緒にMSACCESSデータベースに日付を保存しています。でも、好きなように検索できないようです。年、月で検索したいのですが。私は使用していますdatetimepicker
現在、私はこのコードを使用してこれを行っています。
ADOTable1.Filter := 'Date > ' +
Edit1.Text;
ADOTable1.Filtered := True;
end;
誰か助けてもらえますか?
他の情報と一緒にMSACCESSデータベースに日付を保存しています。でも、好きなように検索できないようです。年、月で検索したいのですが。私は使用していますdatetimepicker
現在、私はこのコードを使用してこれを行っています。
ADOTable1.Filter := 'Date > ' +
Edit1.Text;
ADOTable1.Filtered := True;
end;
誰か助けてもらえますか?
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」が含まれているとどうなるか想像してみてください。-これにより、データベースからテーブルが削除される可能性があります。