SQL数据库怎么这么怪的,好多代码不能正常运行 |
答題得分者是:Fishman
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
代码如下: GetSerialNoSuccessful := False; TryCount := 0; while (not GetSerialNoSuccessful) and (TryCount<10) do begin datamoduleform.ADOConnection1.BeginTrans; try ADOQuery6.Close; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add('update tb_yp set'); ADOQuery6.SQL.Add(' tb_yp.库存数量=tb_yp.库存数量-#yhtemp.数量 '); ADOQuery6.SQL.Add(' from tb_yp,#yhtemp '); ADOQuery6.SQL.Add(' where tb_yp.id=#yhtemp.id'); ADOQuery6.ExecSQL; datamoduleform.ADOConnection1.CommitTrans; GetSerialNoSuccessful := True; except datamoduleform.ADOConnection1.RollBackTrans; inc(TryCount); Sleep(50); end; end;问题:当#YHTEMP表中有两个不同的记录时,所谓不同,也就是说ID不一样,两个记录的数量都能正常减掉,当表中两个记录相同时,它只减一个记录的数量了,第二个就不减了,但以前在ACCESS中是没这种错误产生的。按我上面的代码上的操作,理论上应该不管我这个表中有多少个相同的记录,就是有一百个相同的记录,那么这一百个记录中的ID都会和 TB_YP库中的一个ID相同,那么就会减一百个记录的数量的。
------
我的编程起步于ktop,我将永远支持ktop |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
我再用图来表示一下我的问题的意思: 表1(tb_yp) 表2(#yptemp) ID 数量 ID 数量 1 10 1 2 2 20 2 2 执行结果,表一中的数量一栏可以变成8和18 (正确减了数字) 但如果是另一种情况(ID相同时) 表1(tb_yp) 表2(#yptemp) ID 数量 ID 数量 1 10 2 2 2 20 2 2 如果是这样时,表一中的数量就变成了18,但应该是要变成16的 。發表人 - ntjrr 於 2005/08/25 16:34:39
------
我的编程起步于ktop,我将永远支持ktop |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
这是原来的ACCESS数据库中的代码,运行完全正常,没有上述错误,哪位前辈帮我把这段代码改到SQL 中使用,谢谢
ADOQuery6.Close; ADOQuery6.SQL.Clear; ADOQuery6.SQL.Add('update tb_yp,tb_temp set'); ADOQuery6.SQL.Add(' tb_yp.库存数量=tb_yp.库存数量-tb_temp.数量 '); ADOQuery6.SQL.Add(' where tb_yp.id=tb_temp.id'); ADOQuery6.ExecSQL;
------
我的编程起步于ktop,我将永远支持ktop |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi ntjrr,
試試這樣寫: update tb_yp set tb_yp.qty = tb_yp.qty - isnull((select sum(tb_temp.qty) from tb_temp where tb_temp.id = tb_yp.id),0) where tb_yp.id in (select distinct id from tb_temp) 或是這樣寫: update tb_yp set tb_yp.qty = tb_yp.qty - t2.qty from (select id,sum(qty)as qty from tb_temp group by id) t2 where tb_yp.id = t2.id---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |