RAD Studio 10.3 测试√
成功连接数据库后【连接参考】Delphi FireDAC连接MySQL数据库
1、在窗体上面放一个cxGrid控件,设置属性
然后发现表格中并没有数据,接下来点击 cxGrid 中的 Customize ,然后在右边找到 Columns 可以手动添加点击右边的Add,或者直接检索表中字段点击右边的 Retrieve Fields ,这时候字段就有了。继续搞
2、设置 FDQuery 属性,缓存更新设置为True
3、对数据修改了,需要提交才可以保存在数据库。这时在添加一个 Button 双击写入这两行代码
procedure TForm1.Button1Click(Sender: TObject);
begin
FDQuery1.ApplyUpdates(); // 应用更新(确认更新)
FDQuery1.CommitUpdates; // 提交更新
end;
4、前面已经已经实现了,继续加一点内容。添加一个状态栏【StatusBar】,双击状态栏,然后添加
5、设置 DataSource 的事件【OnDataChange】
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
// 属性
// cachedUpdates 是否缓存更新数据
// ChangeCount 数据变动的数量
// 判断 FDQuery1 内容是否有改动
if FDQuery1.ChangeCount > 0 then
StatusBar1.Panels[0].Text := '有改动--' + FDQuery1.ChangeCount.ToString
else
StatusBar1.Panels[0].Text := '无改动--' + FDQuery1.ChangeCount.ToString;
end;
6、在退出前判断数据是否提交,然后进行提示。
在Form1的事件中找到【OnCloseQuery】双击开搞
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// UpdatesPending 是否有更新挂起【是否有数据变动】
if FDQuery1.UpdatesPending then
case Application.MessageBox('数据已修改,确认不保存退出吗?', '提示',
MB_OKCANCEL + MB_DEFBUTTON2 + MB_TOPMOST) of
IDOK:
begin
CanClose := True;
end;
IDCANCEL:
begin
CanClose := false;
end;
end;
end;
7、记录的状态之UpdateStatus
首先新建字段:点击 FDQuery 首先关闭连接,右键FDQuery -->字段编辑器–>新建字段【然后设置属性】
然后右击表格标题栏,添加一列,单击击添加的列,设置列属性:DataBinding --> State
都设置完成后,在 FDQuery 事件中找到【OnCalcFields】双击开搞
procedure TForm1.FDQuery1CalcFields(DataSet: TDataSet);
begin
// 计算字段
case DataSet.UpdateStatus of
usUnmodified:
DataSet['State'] := '未修改';
usModified:
DataSet['State'] := '已修改';
usInserted:
DataSet['State'] := '已插入数据';
usDeleted:
DataSet['State'] := '已删除';
end;
end;
这些东西设置完了就可以啦,然后会发现删除的没有显示出来,默认的是不显示的,我们再来添加两个Button,来让他们显示和恢复默认
procedure TForm1.Button2Click(Sender: TObject);
begin // FilterChages 设为显示全部
FDQuery1.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified, rtHasErrors];
end;
procedure TForm1.Button3Click(Sender: TObject);
begin // FilterChages 设为默认显示
FDQuery1.FilterChanges := [rtModified, rtInserted, rtUnmodified];
end;
打完收工,自己看一下效果吧,溜了溜了。
学习中记录的一点点笔记,以便以后翻阅。