缺少更新或刷新的键列信息 请教:我使用adoquery执行:select a.*, b.name from a Left outer JOIN b on a.sid = b.id使用数据库绑定控件进行数据更新,但是提交的时候出现‘缺少更新或刷新的键列信息’提示。a表有主键。我记得原来哪个地方说过,可以对多个表的查询语句中指定一个基表,就可解决这种问题。但是现在忘记怎么操作的了,请各位大侠指点一二,怎么能解决此问题呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TADOQuery 不行TBetterADO 可以 联合表更新,一般需要使用update,edit..post不行 1. 用BDE 有这个功能2. 做成伪三层用 ClientDataset 来实现3. 将sql 写在内联的SQL4. TBetterADO (不支持批理缓存) 樓主 你要更新時把 b.name 取掉試試,改為select a.* from a Left outer JOIN b on a.sid = b.id b.name 取掉是可以的,但是因为我使用绑定控件,这个地方需要进行提值显示,但是又难免会进行改变,虽然这个字段我不进行更新。 如果你不取掉b.name,系統就會認為select a.*, b.name from a Left outer JOIN b on a.sid = b.id 這樣的算一個新表,你的新表沒有主鍵,那更新時就會報 缺少更新或刷新的键列信息 的錯誤. 要不这把语句写到存储过程里,建个临时表,存储过程返回数据集吧.你的ADOQUERY就执行一个存储过程就可以了 大侠们,都不知道ado多表联合时,如何指定一个基表进行更新啊??:(不是用clientdataset方式哈 你用ADODataSet试试.还有,加上连接表的主键! SELECT a.*,b.nameFROM tablea a LEFT OUTER JOIN tableb bON a.id = b.id这样应该可以实现,前提是想关联的2个表。 同志们,散分了 delphi程序可以跨平台吗? 急!安装问题 谁有进销存的文档与数据库? delphi 7中怎么没有报件组件页? 定时器内不可以引用外部过程(函数)吗?急,在线等。(分不够再加) ActiveSkin在delphi中怎么用? 有关dbgrid的columns的问题? 请问在delhpi中,在做sql插入时,这个错误是怎么回事,谢先! register, pascal, cdecl, stdcall, safecall 有什么区别 TCPClient控件如何接大数据量的数据? 有点晕...发帖求助如何建立这个数据库...
1. 用BDE 有这个功能
2. 做成伪三层用 ClientDataset 来实现
3. 将sql 写在内联的SQL
4. TBetterADO (不支持批理缓存)
select a.* from a Left outer JOIN b on a.sid = b.id
FROM tablea a LEFT OUTER JOIN tableb b
ON a.id = b.id
这样应该可以实现,前提是想关联的2个表。