单表更新:为什么没有作用?(50分)

  • 主题发起人 主题发起人 w8u
  • 开始时间 开始时间
W

w8u

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端:
Database1.AliasName = 'jlxzbg'
Connected = True
DatabaseName = 'db_Jlxzbg'
HandleShared = True
LoginPrompt = False
query_rjzlkc: TQuery
Active = True
DatabaseName = 'db_Jlxzbg'
SQL.Strings = (
'SELECT rjbh, rjmc, kfs, bbh, rjlx, zynr, cplx, cpsl, cpbz, bz'
'FROM dbo.xz_rjzlkc Dbo_xz_rjzlkc')

dsp_rjzlkc: TDataSetProvider
DataSet = query_rjzlkc
Options = [poAllowCommandText]
ResolveToDataSet=false

client端:
dm_xzbg:TDm_xzbg
DCOMConnection1: TDCOMConnection
Connected = True
ServerName = 'JLXzbgServer.XzbgServer'
ComputerName = 'Jlwgh'

cds_rjzlkc: TClientDataSet
Active = True
ProviderName = 'dsp_rjzlkc'
RemoteServer = DCOMConnection1

一个录入窗口里:
ds_rjzlkc:TdataSource
DataSet = dm_xzbg.cds_rjzlkc

保存:
无论是添加还是修改
with dm_xzbg.cds_rjzlkcdo
begin
if ChangeCount>0 then
begin
ApplyUpdates(-1);
end;
。。。
end;

退出该窗体后,数据未保存到数据库,为什么?
 
补充:win98+delphi5.0+sql server 7.0
 
换成ApplyUpdates(0);试一下
 
在Tquery中的SELECT语句中不要把dbo.xz_rjzlkc重定义为Dbo_xz_rjzlkc. TDatasetProvider
自动生成的SQL更新语句如Insert into Dbo_xz_rjzlkc values(...),提交到SQL Server中将
出错.
 
to qiu_peking:
还是不行。
能告诉我,更新单表时,都要注意什么细节吗?我都是按照李维的书上的步骤来的,
为什么会错误?
 
會不會是你表的欄位編輯器中的欄位資料與現在更新的不太符合﹐以前我就遇到過這個問題。
你也可以設斷點來看﹐一定是中間哪兒出了問題。你先試李維的源代碼﹐再試你自己的。
 
把服务端TQuey的Active设为False,重新编译,运行。
这个问题在看李大人讳维的书时我也遇到过。
 
经过我紧张调试:在client端的 cds_rjzlkc.onreconclieError事件里记录错误信息,
原来是SERVER端的QUERY写得有问题:去掉:DBO.应该是:
SQL.Strings = (
'SELECT rjbh, rjmc, kfs, bbh, rjlx, zynr, cplx, cpsl, cpbz, bz'
'FROM xz_rjzlkc')
结果很正确,可以做任何的更新。
但是,出现了新的问题,当我准备更新时,判断了ChangeCount
with dm_xzbg.cds_rjzlkcdo
begin
if ChangeCount>0 then
begin
ApplyUpdates(-1);
end;
......
end;
结果是 ChangeCount<=0。上面的“结果很正确,可以做任何的更新。”的
前提条件是去掉判断才行?为什么?又要我慢慢的试了。
to :txmaster
"李大人讳维",好尊敬的称呼啊,昨晚我看他书的时候,每到紧要处,我都要大喊一声,
太伟大了。你这个称呼好啊。
 
我知道原因了,要先post。
with dm_xzbg.cds_rjzlkcdo
begin
post;
//add this
if ChangeCount>0 then
begin
ApplyUpdates(-1);
end;
......
end;
 
多人接受答案了。
 
后退
顶部