三层问题。急!!!在线等候。(100分)

  • 主题发起人 主题发起人 hcw
  • 开始时间 开始时间
H

hcw

Unregistered / Unconfirmed
GUEST, unregistred user!
在客户端一保存所修改的数据就出现:“缺少更新或刷新的键列信息。”,然后就出现:“Key violation.”,请问这是怎么回事?
 
没有主键或客户结果集中没有包含主键
 
我是多表关联产生的结果集,应该怎么设置主键?
 
设置参与更新的列
 
主键的问题,你没有正确的设置或使用错误。
 
应该在哪儿设置参与更新的列?中间层用 TADODataSet
麻烦大家帮帮忙。急!
 
如果你是修改或是删除不要用Post提交。直接用Delete和Edit就行了。如果你用了就会出现上面的情况。
 
to Qv15:
我想修改后再保存,不用 post 怎么保存?谢谢
 
我也很想知道这个问题的答案,顶你一把.
 
多表關聯的數據集大多數情況下都沒辦法直接用update方法,原理我就不說了.
你可以用生成sql命令串的方法,直接execute.別告訴我你不會.
 
那您能不能告诉我三层里怎么做?我刚学习三层。谢谢
 
打個比方,你用多表連接取出一些數據,顯示在介面上,textbox1,textbox2,等等存儲著你的數據,
用字符串連接產生形如"UPDATE you_table set somefield='value_of_textbox1',somefield2='value_of_textbox2' WHERE condition"
然後,放到一個query里execute一下
如果要同時更新多個表,記住使用transaction.
累阿,這是基本功.要做數據庫應用建議一定要會,dataset的方法做數據庫應用是不夠的,只能做非常簡單的.
 
三层里如何把 SQL 语句("UPDATE you_table set somefield='value_of_textbox1',somefield2='value_of_textbox2' WHERE condition")传到服务端?
 
服务端的 DataSetProvider 需设置其Options的 poAllowCommandText
然后客户端的 ClientDataSet.CommandText:='SQL语句';
ClientDataSet.ExecSQL;
//你看是不是
 
是,不过最后是 Execute 执行。问题基本解决了,但我想还是最好能直接保存,还能解决这个问题吗?谢谢各位。
 
直接保存也是可以的,必須把所有相關表的數據一下子QUERY齊全.包括相關表的主鍵
保存的時候就不會出錯.(我說的不會出錯,是出這種錯)
但是還會有其他問題出來,你慢慢就會碰到了.
給分啊!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
816
DelphiTeacher的专栏
D
后退
顶部