十万火急!!!(200分)(200分)

  • 主题发起人 主题发起人 xyzhou7
  • 开始时间 开始时间
X

xyzhou7

Unregistered / Unconfirmed
GUEST, unregistred user!
我的应用服务器:ado作连接
我的前台:socket作连接
不知道怎么回事,只要数据库表的主键是integer型,无论如何数据都提交不成功。
请问是怎么回事?
 
有这样的事????我都有你类似的用法,但没出现问题呀
 
不能使用 自动加一 型的字段,如果要用,该字段不要赋值,UPDATE以后,一定要马上 REFRESH。
 
很可能是主键数据相同造成的。它是不会提示你出错的。
要想知道出错消息要在clientdataset的ReconcileError事件当中
procedure TSubMan_DM.CDSetSortAReconcileError(
DataSet: TCustomClientDataSet;
E: EReconcileError;
UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
showmessage(E.Message);
end;
 
在我更新一条记录时(不更新主键),会ApplyUpdates(0)返回-1,
我也showmessage(E.Message);过,可他返回??1,我的天哪!
 
你搜搜你的电脑,有两个文件在delphi的demos目录下叫(RecError.pas和RecError.dfm)
拷到你的工程目录下,要用的地方uses一下.
再在clientdataset的ReconcileError事件里加上
Action := HandleReconcileError(DataSet, UpdateKind, E);
当你保存出错时,就会弹出这RecError窗体,里面会告诉你什么错.
 
jianguobu 的方法很好 但是如果给 最终客户看的话 最话 再写代码 将字段名称汉化
 
谢谢各位楼主:
我照着做了,弹出的对话框中显示的错误消息为:??1
我将应用服务器上的更新模式改为:upWhereChanged以后可以更改 了,但是插入却插入不进去。
 
表的主键类型为:number
 
晕,你就做一个窗体,一个表做成access打包给我,我来帮你查原因
 
//表的结构:
ID Number Primary Key,
NAME Varchar(10)
//保存按钮:
ClientDataSet1.Post;
if ClientDataSet1.ApplyUpdates(-1) = 0 then
begin
ClientDataSet1.Refresh;
Application.MessageBox('保存成功!', PChar(GK_SoftName), MB_OK +
MB_ICONINFORMATION);
end;
 
晚上回家再给做实例.
 
你用Oracle吗?
 
数据库是:oracle8i
 
晕,我没有.
 
好吧,那我自己解决这个问题。
我再问各位大虾一个问题:
数据库:ORACLE8I
应用服务器:用ADO连接
前台:SOCKET连接
我用如下语句:
ClientdataSet.close;
ClientdataSet.commandtext:='select count(*) as ww from tableName';
ClientdataSet.open;
if ClientdataSet.fields[0]<>0 then
//发生错误
....
则发生错误:Value of field 'ww'is out of range。
请问是怎么回事???
 
难道没有人懂吗???
 
可以加一语句调试 if ClientDataSet1.isEmpty then
.....
就知道你到底查到数据没有。
 
我在调试的时候有加“if ClientDataSet1.isEmpty then
”,不为空,但是
一执行到这里”if ClientdataSet.fields[0]<>0 then
“就出错。
我服务器端用的驱动程序是:OraOLEDB.Oracle.1
 
后退
顶部