-2
私はコーディングに新しく、学校向けのプロジェクトを持っています。 データベースからレコードを更新/削除するために文字列を日付に変換しようとしていますが、常にData type mismatch in criteria expression
というエラーが表示されます。データベースのフィールド(日付が予約されている)は日付として検証され、文字列入力を日付形式に変換し、データベースからレコード全体を削除しようとしています。データベースを操作するために文字列を日付に変換する方法
sdelete:= combobox.text; //shows options of dates
Year := StrToInt(Copy(sdelete, 1, 4));
Month := StrToInt(Copy(sdelete, 6, 2));
day := StrToInt(Copy(sdelete, 9,2));
date := EncodeDate(Year, Month,Day);
end;//Converting to date format
`ADOdelete.SQL.Text := 'SELECT * FROM [scout] WHERE ([Password] =
"'+Sscout+'"AND [date booked] ="'+FormatDateTime('yyyy/mm/dd',Date)+'")';`
ADOdelete.Open;
ADOdelete.Close;
ADOdelete.SQL.Text:= 'Delete from [scout] WHERE ([date booked]
="'+FormatDateTime('yyyy/mm/dd',Date)+'"AND [password]="'+sscout+'")';
ADOdelete.ExecSQL;
ADOdelete.Free;`
[Scout]
テーブル名 で、Sscoutは内に保存パスワードが設定されているプライベート変数です。 コンボボックスは、このようなyyyy/mm/dd
としてデータベース([予約日])とディスプレイの金額によって移入し、私は、次の変数
var sdelete:string;
Day, Month, Year: Word;
date:Tdatetime;
を持っているがありがとうございました。
文字列連結で値を入力しないでください。[sql injection](https://en.wikipedia.org/wiki/SQL_injection)の脆弱性があります。クエリでパラメータを使用する方法については、日付やその他のタイプの値の正しい変換も行います。 –
より広く認識されているフォーマットyyyy-mm-ddを試してください。しかし、SQLを準備する方法から離れるべきです。形式が確実ではないことに注意してください。 dbms設定とdbmsによって異なります。 –