SQLサーバーを使用して、デルファイ7のテーブルのいくつかのフィールドを更新するプログラムを開発しています. プログラムは次のようになります。
sql := 'UPDATE tb_dt_contract SET '
+' id_schedule = '+quotedstr(label_id_schedule.Caption)
+',start_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_start.Date))
+',finish_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_finish.Date))
+',contract_location = '+quotedstr(uppercase(Edit_location.Text))
+',sign_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_sign.Date))
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
プログラムを実行すると、「'=' 付近の構文が正しくありません」というエラーが表示されます。しかし、showmessage を使用してクエリを表示し、SQL Server Management 2008 で実行すると、正常に動作します。
次に、クエリを次のような部分に分割しようとします。
SQL := 'UPDATE tb_dt_contract SET '
+' id_schedule = '+QUOTEDSTR(label_id_schedule.CAPTION)
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
SQL := 'UPDATE tb_dt_contract SET '
+' start_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_start.Date))
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
SQL := 'UPDATE tb_dt_contract SET '
+' finish_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_finish.Date))
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
SQL := 'UPDATE tb_dt_contract SET '
+' contract_location = '+quotedstr(uppercase(edit_location.Text))
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
SQL := 'UPDATE tb_dt_contract SET '
+' sign_date = '+quotedstr(formatdatetime('mm/dd/yyyy',DateTime_sign.Date))
+' WHERE id = '+quotedstr(label_id.Caption);
ADOQuery1.Close;
ADOQuery1.SQL.Text := sql;
ADOQuery1.ExecSQL;
その後、日付型フィールドを更新するときにのみエラーが発生することがわかりました。同様のクエリを使用してさまざまなテーブルを更新する他のプログラムを開発しましたが、正常に動作します。プロジェクトを閉じて再度開いてみましたが、それでもエラーメッセージが表示されます。私が何をすべきか教えてください..