MySqlを使って開発を行っています。ADOテーブルコンポーネントでデーターを操作しているのですが単純な箇所でエラーが表示され悩んでいます。
下記の様に登録済みのデータ−に同一の値を書き込もうとするとエラーが毎回表示されます。環境はDelphi6、OSはWindowsXpです。
  // エラーが表示される場合(データーは空だったと仮定します。)
  ADOTable1.Open;
  ADOTable1.Append;
  ADOTable1.FieldByName('FIELD1').AsInteger :=100:
  ADOTable1.Post;
  ADOTable1.Edit;
  ADOTable1.FieldByName('FIELD1').AsInteger :=100:
  ADOTable1.Post;
  // エラーが表示さない場合(データーは空だったと仮定します。)
  ADOTable1.Open;
  ADOTable1.Append;
  ADOTable1.FieldByName('FIELD1').AsInteger :=100:
  ADOTable1.Post;
  ADOTable1.Edit;
  ADOTable1.FieldByName('FIELD1').AsInteger :=999:
  ADOTable1.Post;
「エラーメッセージ」
 行が見つからなかったため、更新できません。列の値は最後に読み込まれた後で変更された可能性があります。
  質問1...これはDelphiかMysqlのバグでしょうか?
  質問2...プロパティー0の設定等で回避する方法はありますでしょうか?
  質問3...バグでないとすると何の意味でMysql側からこのメッセージが出るのでしょうか?
Mysqlを利用した開発者の方々、回避方法がありましたらお教え下さい。宜しくお願いします。
「自己解決」
どうもデーター訂正時に全てのフィールドに変更が無いとこのエラーが出るみたいです。テーブル内に数値型のダミー項目を追加して毎回プラス1するとデーターは変更されるのでエラーは出ませんでした。
  // エラーが回避方法(データーは空だったと仮定します。)
  ADOTable1.Open;
  ADOTable1.Append;
  ADOTable1.FieldByName('FIELD1').AsInteger  :=100:
  ADOTable1.FieldByName('COUNTER').AsInteger :=ADOTable1.FieldByName('COUNTER').AsInteger +1;
  ADOTable1.Post;
  ADOTable1.Edit;
  ADOTable1.FieldByName('FIELD1').AsInteger  :=100:
  ADOTable1.FieldByName('COUNTER').AsInteger :=ADOTable1.FieldByName('COUNTER').AsInteger +1:
  ADOTable1.Post;
| ツイート | 
        
         |