想学习做个简单的进销存,思路如下:
进,销,退货的录入界面都是一样的,因此写个基类TfrmBase,录入的数据先保存在ClientDataSet的delta,录入完后再用DataSetProvider.ApplyUpdates保存到数据库中,但我执行这个过程时提示“操作失败!”,但我察看数据库中所有记录都已保存好了,请问是为什么?
相关代码如下:
//业务类中定义的更新过程
procedure TMaint.uplateToBase(data: OleVariant; ErrCount: integer;tbName:string);
begin
with DM do
begin
utbUplate.TableName:=tbName;//在数据模块中指定dspUplate相连的utbUplate的表名
dspUplate.ApplyUpdates(data,0,ErrCount);
end;
end;//基类代码
procedure TfrmBase.FormCreate(Sender: TObject);
begin
objMaint:=TMaint.create;//创建业务类TMaint的一个实例
end;procedure TfrmBase.SaveToBase(tbName:string);
var
nErr:integer;
begin
with dscds do
begin
if changecount>0 then
begin
objMaint.uplateToBase(delta,nErr,tbName);//调用更新过程
if nErr>0 then
application.MessageBox('操作失败!',M_TITLE,MB_ICONWARNING)
else
application.MessageBox('操作成功!',M_TITLE,MB_ICONINFORMATION);
end;
MergeChangeLog;
end;
end;//在派生类中执行这个过程提示“操作失败!”,但我察看数据库中所有记录都已保存好了
procedure TfrmJH.actSAVE2BASEExecute(Sender: TObject);
begin
SaveToBase('jh');
inherited;
end;
进,销,退货的录入界面都是一样的,因此写个基类TfrmBase,录入的数据先保存在ClientDataSet的delta,录入完后再用DataSetProvider.ApplyUpdates保存到数据库中,但我执行这个过程时提示“操作失败!”,但我察看数据库中所有记录都已保存好了,请问是为什么?
相关代码如下:
//业务类中定义的更新过程
procedure TMaint.uplateToBase(data: OleVariant; ErrCount: integer;tbName:string);
begin
with DM do
begin
utbUplate.TableName:=tbName;//在数据模块中指定dspUplate相连的utbUplate的表名
dspUplate.ApplyUpdates(data,0,ErrCount);
end;
end;//基类代码
procedure TfrmBase.FormCreate(Sender: TObject);
begin
objMaint:=TMaint.create;//创建业务类TMaint的一个实例
end;procedure TfrmBase.SaveToBase(tbName:string);
var
nErr:integer;
begin
with dscds do
begin
if changecount>0 then
begin
objMaint.uplateToBase(delta,nErr,tbName);//调用更新过程
if nErr>0 then
application.MessageBox('操作失败!',M_TITLE,MB_ICONWARNING)
else
application.MessageBox('操作成功!',M_TITLE,MB_ICONINFORMATION);
end;
MergeChangeLog;
end;
end;//在派生类中执行这个过程提示“操作失败!”,但我察看数据库中所有记录都已保存好了
procedure TfrmJH.actSAVE2BASEExecute(Sender: TObject);
begin
SaveToBase('jh');
inherited;
end;
解决方案 »
- ExpressVerticalGrid 组件中的 TcxRTTIInspector 如何编辑多个控件的属性
- 请教!!大家一个关于图片格式转换的问题!!!
- 如何读取网络上一个页面的html内容
- 如何写一个email 服务器,有没有例子
- 我怎么一下少了500分的可用分?????!!!!
- 两个问题,每题50分,标题说不清楚,详情请进...
- 有谁有MP3或MP3PRO的相关资料吗?给我一份。谢了!
- 请问常用的比较好得程序打包软件都有哪些呀???
- mdi多文档窗口小问题,在线等待有100分拿!!!
- 将一个form从auto-create forms改为available forms 后,怎么样释放其实例资源??
- 高分求:用MODEN(调制解调器)实现自动通知和自动应答系统的编程技术! 欢迎探讨!分不够再开帖!!!
- 弟兄们快救命啊!ADVGRID6怎们使用啊?[悬赏100分]
procedure TMaint.uplateToBase(data: OleVariant;ErrCount: integer;tbName:string);
改为:
procedure TMaint.uplateToBase(data: OleVariant;var ErrCount: integer;tbName:string);
试试!
你数据提交了,但提示失败,估计是已经提交了部分数据,但有失败的数据存在,所以提示操作失败.可以看看是否是数据库的字段不匹配(长度,类型等)!
呵呵,谨供参考.高手指点.
可能是没用var 导致参数没变化吧,应该是这问题