ローカルのMySQLデータベースにODBC接続しています。
読み出しはできるのですが下記を実行するとエラーになります。
「EOleExeptionクラス例外。
行がみつからないため更新できません。
列の値は最後に読み込まれた後で、変更された可能性があります。」
ADODataSet1.CommandText:='select * from Yakuhin where Ycode=213310';
ADODataSet1.open;
ADODataSet1.edit;
ADODataSet1.fieldbyname('Ysu').asfloat:=50;
ADODataSet1.post;
ADODataSet1.close;
原因は何でしょうか?
環境:WinXp-home,Delphi7-pro,mysql-3.23.49,myodbc-2.50.39
>ADODataSet1.CommandText:='select * from Yakuhin where Ycode=213310';
>ADODataSet1.open;
//該当行が無かったらエラーになるため記述
if ADODataSet.Recordset.RecordCount > 0 then
begin
For i := 0 to ADODataSet.RecordCount -1 do
//一件だけなら必要ないかも
begin
>ADODataSet1.edit;
>ADODataSet1.fieldbyname('Ysu').asfloat:=50;
>ADODataSet1.post;
ADODataSet.Next;
end;
end;
>ADODataSet1.close;
ではないですか?
多分・・・
'where Ycode=213310'に該当するレコードが無いとか
あっ!またやってしまいました。
すいません。
>ADODataSet1.CommandText:='select * from Yakuhin where Ycode=213310';
>ADODataSet1.open;
//該当行が無かったらエラーになるため記述
if ADODataSet1.Recordset.RecordCount > 0 then
begin
//一件だけなら必要ないかも
ADODataSet1.FindFirst;
For i := 0 to ADODataSet1.RecordCount -1 do
begin
>ADODataSet1.edit;
>ADODataSet1.fieldbyname('Ysu').asfloat:=50;
>ADODataSet1.post;
ADODataSet1.Next;
end;
end;
>ADODataSet1.close;
ではないですか?
多分・・・
'where Ycode=213310'に該当するレコードが無いとか
お騒がせしました。m(__)m
ADODataSet1.CommandText:='select * from Yakuhin where Ycode=213310';
ADODataSet1.open;
showmessage(ADODataSet1.fieldbyname('Yname').asstring);
ADODataSet1.edit;
ADODataSet1.fieldbyname('Ysu').asfloat:=50;
ADODataSet1.post;
ADODataSet1.close;
でレコードの内容が表示されますので、「行がみつからないため〜」というのではないように思われます。
?????
OSを再起動しますとエラーが出なくなりました。
お騒がせしました。
ツイート | ![]() |