掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DB登録されない状態を解決するには? (ID:44342)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつも世話になっております、きょうこです。 DBテーブルにデータを登録する処理を行っています。 接続はODBC(3.51.01)で DBはMySQL(4.0.27)、Delphi6(pro)です。 データの登録はinsert文で、結合などはありません。 ExecSQLを実行する前に、実際のSQL文をログとして時間とともにCSVに出力しています。 先日、不思議な現象が出てしまい、調査しています。 下記の流れのプログラムで売上1と売上2の登録処理をしたのですが、 実際の売上が両方とも登録されていないという現象が発生しました。 SQL文はCSVに出力しているので、それを調査すると、 売上1,2とも出力されており、中略の部分も最後まで登録が完了されている様に見えます。 出力されていたSQL文を直接DBに接続し、コピーして流すと、登録されます。 SQL文は実際にはExecSQLの前に出力されるので、 ExecSQLで正しく登録が出来ていないという事も考えられ、 エラーが出れば、try文で引っかかると思うのですが、出ていない様です。 エラーの出ないInsert文を実行して、登録されないという事はあるのでしょうか? 今まで、通信が切れたことによるキー違反や、登録テーブルが壊れた場合のエラーは except文に飛び、エラーメッセージが表示されていたので、特に問題はありませんでした。 もしかしたら、DelphiではなくDBに何か問題があると考えられますでしょうか? 今のところ、再現はしていません。 try with Query1 do begin //売上1 Close; SQL.Clear; SQL.Text := wsql1(Insert文); try WriteSaveData(wsql1);←流すSQL文CSVに書き出し関数 ExecSQL; except SQL.Clear; SQL.Text := エラーSQL文をエラー用テーブルに登録するSQL; ExecSQL; Exit; end; //売上2 Close; SQL.Clear; SQL.Text := wsql2(Insert文); try WriteSaveData(wsql2);←流すSQL文CSVに書き出し関数 ExecSQL; except SQL.Clear; SQL.Text := エラーSQL文をエラー用テーブルに登録するSQL; ExecSQL; Exit; end; 中略・・・・他のテーブルへの登録処理や更新処理 end; finally CloseFile(); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.