在Delphi中用ADO进行开发,怎样才能知道ADODataSet的数据已经被修改过。
注意:ADODataSet是用“ltBatchOptimistic”缓冲模式的。请大家勇跃参加。
注意:ADODataSet是用“ltBatchOptimistic”缓冲模式的。请大家勇跃参加。
解决方案 »
- 如何在代码里做标记,可以来回跳?
- 三天了,快被这个线程逼疯了,高手拉我一把看看问题出在哪里
- 关于SQL SERVER2000 C/S结构客户端访问服务器端数据的问题
- Ado的主從表問提請教
- 很菜的问题,但是分数很高:怎么读写一个文本文件?
- 如何解决在Delphi中使用ADOQuery控件进行插入操作时产生的错误?
- 【求助】求利用数据包的方式模拟IE网页,从而读取网页中的数据源代码
- TDateTime类型数据以及TDatetimePicker控件的简单问题!
- Insufficient memory for this operation.
- 请问,用ado必须要装adoupdate2吗?哪里有下载的?
- 问个小问题!~在线求结果
- Delphi能动态创建控件吗?我的这个打印任务如何完成?
http://kingron.myetang.com(*//
标题:判断ADO数据集是否还有数据没有提交
说明:等待升级
设计:3fly
整理:Zswang
日期:2002-03-03
支持:[email protected]
//*)///////Begin Source
function CacheNotSave(mDataSet: TCustomADODataSet): Boolean;
{ 返回ADO数据集是否还有数据没有提交 }
var
vFiltered: Boolean;
vFilterGroup: TFilterGroup;
vBook: string;
begin
Result := False;
if not mDataSet.Active then Exit;
if mDataSet.LockType <> ltBatchOptimistic then Exit;
vBook := mDataSet.Book;
mDataSet.DisableControls;
try
vFiltered := mDataSet.Filtered;
vFilterGroup := mDataSet.FilterGroup;
try
mDataSet.Filtered := True;
mDataSet.FilterGroup := fgPendingRecords;
Result := mDataSet.RecordCount > 0;
finally
mDataSet.Filtered := vFiltered;
mDataSet.FilterGroup := vFilterGroup;
end;
finally
mDataSet.Book := vBook;
mDataSet.EnableControls;
end;
end; { CacheNotSave }
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.UpdateBatch;
CheckBox1.Checked := CacheNotSave(ADOTable1);
//ActionUpdateBatch.Enabled := CacheNotSave(ADOTable1);
end;procedure TForm1.ADOTable1AfterCancel(DataSet: TDataSet);
begin
CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
end;procedure TForm1.ADOTable1AfterPost(DataSet: TDataSet);
begin
CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
end;procedure TForm1.ADOTable1AfterDelete(DataSet: TDataSet);
begin
CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
end;procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
CheckBox1.Checked := CacheNotSave(TCustomADODataSet(DataSet));
end;
///////End Demo