SQL update ステートメントを使用して一部のフィールド データを変更したら、それが DBGrid に反映されていることを確認する必要があります。実行している正しい方法が正しいかどうかはわかりません -> IBTable.Refresh。とにかく、それは今のところ動作しますが、DBGrid の垂直スクロールバーは最初の更新試行後に下に移動します。更新してから再度更新すると、垂直スクロールバーが小さくなり、DBGrid の中央に移動します。DBGrid自体で値を変更するだけで、フィールドの値を直接更新する方法がわかりません。誰かがその方法の例を示してくれれば幸いです。
IBTable.Refresh が発行された後、DBgrid の垂直スクロールバーを一番上の位置に移動し、一番上の行を選択するにはどうすればよいですか?
EMPLOYEE データベースの例を使用して、データベース (Firebird) と Delphi をまだ学習しているため、私のコードは単純です。
procedure TForm1.Button1Click(Sender: TObject);
begin
//open IBQuery1, SQL command is in the component itself
IBQuery1.Open;
Label1.Caption := 'Tokyo''s budget was $' + TCaption(IBQuery1.FieldValues['BUDGET']);
//clear all SQL commands as it's TStrings and remembers prev. added lines
IBUpdateSQL1.ModifySQL.Clear;
//start building the SQL update statement
IBUpdateSQL1.ModifySQL.Append('update DEPARTMENT');
if IBQuery1.FieldValues['BUDGET'] = '30000' then
IBUpdateSQL1.ModifySQL.Append('set BUDGET = 500000')
else
IBUpdateSQL1.ModifySQL.Append('set BUDGET = 30000');
IBUpdateSQL1.ModifySQL.Append('where LOCATION = ''Tokyo''');
//execute SQL update
IBUpdateSQL1.ExecSQL(ukModify);
//close IBQuery1
IBQuery1.Close;
//let's see new field data
IBTable1.Refresh;
end;
私がやっていることは、選択ステートメントからいくつかのフィールドデータを読み取り、それに応じて他の値に変更したり、その逆を行ったりすることです。
ありがとう