一旦我通过SQL更新语句更改了一些字段数据,我需要看到它反映在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;
我正在做的是从select语句中读取一些字段数据,并相应地将其更改为另一个值,反之亦然。
感谢
答案 0 :(得分:0)
“我不知道如何通过在DBGrid本身中更改它来直接更新某个字段中的值,如果有人向我展示如何使用它,我会很感激。” < / p>
不用担心。请改为尝试这个简单的配置。
将以下控件放在表单上。
TIBDatabase
(Tool Palette - Interbase)TIBTransaction
(Tool Palette - Interbase)TIBQuery
(Tool Palette - Interbase)TDataSetProvider
(工具调色板 - 数据访问)TClientDataSet
(工具调色板 - 数据访问)TDataSource
(工具调色板 - 数据访问)TDBGrid
(工具调色板 - 数据控件)TButton
(工具调色板 - 标准版)现在让我们联系起来吧。使用Object Inspector设置一些属性,以便控件一起工作,如下所示。
DefaultTransaction
设置为IBTransaction1(使用Object Inspector中的下拉列表)DefaultDatabase
设置为IBDatabase1 Database
设置为IBDatabase1 Transaction
设置为IBTransaction1 DataSet
设置为IBQuery1 ProviderName
设置为DataSetProvider1 DataSet
设置为ClientDataSet1 DataSource
设置为DataSource1 现在设置一些特定于您的数据库的其他属性
DatabaseName
,LoginPrompt
,Params
SQL
现在激活一些控件。您可以在设计时使用Object Inspector执行此操作,也可以编写等效代码(例如IBDatabase1.Connected := True
)并将其放在按钮的单击事件中(如果您愿意)。
IBDatabase1.Connected
设置为True)IBQuery1.Active
设置为True)ClientDataSet1.Active
设置为True)现在(除了小的打嗝)你应该在DBGrid中有一个完全可编辑的数据集。只需点击那里并编辑你喜欢的任何内容。如果要将以下代码写入另一个按钮的单击事件,则需要保存更改。
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(-1);
这不是唯一可以做到这一点的方法,而且还有很大的改进空间,但现在你应该有一个很好的起点,无论你选择哪个方向都可以从中取得进展。