在進行數據庫數據處理中遇到的奇怪問題﹐請大家幫忙分析一下原因....???
我現在有一几個多表關聯的數據庫﹐在數據處理過程中出現聯異常的情況﹐具體情況如下﹕
我現在對入倉記錄中的'收入'字段進行求和運算﹐但是單獨有几類貨物的收入統計出現聯求和運算﹐而是進行后一條記錄對 前一條記錄的收入的覆蓋﹔關鍵是﹕其他貨物的收入統計又是正常是正確的。我保証這些貨物用的是同樣的代碼﹐我用的是 ACCESS數據庫﹐請問這是什么原因﹖是數據庫原因嗎﹖..... 急 謝謝
问题点数:0、回复次数:9Top
1 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 08:43:41 得分 0
注﹕自己發現沒講清楚﹐在說明一下﹕
其實我就是對入倉記錄中不同類別的貨物分開來做'收入'求和﹐當我在統計表中統計該類貨物時﹐這些求和數據就會顯示在我的'本月總收入'攔中﹐現在時同一數據庫中的數據﹐出現不一樣的處理結果。大多數貨物的本月收入攔顯示正確的統計結果﹐而有個別類型的貨物出現不進行統計的現象﹐當重復添加記錄時﹐他的本月總收入總是最后錄入 的那條記錄的收入值﹐還有﹕把這條記錄刪除后﹐竟然還會在統計表中顯示那個記錄值﹗ 其他貨物統計顯示正常....Top
2 楼Shiyl(云淡风清 卷舒自在)回复于 2003-09-04 08:46:24 得分 0
代码Top
3 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 09:08:53 得分 0
代碼你會看到頭痛的﹕這是我一個原來的同事寫的﹔統計葉面的代碼如下。其中收入字段值在表 YmStock 表中...
Add('SELECT val(iif (isnullSpec),'''',spec)), Goods.GoodsNo,Goods.GoodsName,Goods.Unit,');
Add('Goods.Spec,Goods.mCurr,YmStock.*,');
Add('val(format((YmStock.PrevNumber+YmStock.CurInNumber-YmStock.CurFcNumber+YmStock.CurPdNumber),"##0.#,###0.000")) as jc,');
Add('val(format(((YmStock.PrevNumber+CurInNumber+CurPdNumber-CurFcNumber)*YmStock.CurmuPrice*YmStock.muChange),"##0.#,###0.000")) as zj,'); //改因為當前的成本是本月總成本
Add('val(format((YmStock.PrevNumber*YmStock.muPrice*YmStock.muChange),"##0.0")) as syzj');
Add('FROM Goods INNER JOIN YmStock');
Add('ON Goods.GoodsCode =YmStock.GoodsCode');
Add('where Goods.mCode=:mmCode');
Add('and (YmStock.PrevNumber<>0 or YmStock.CurInNumber<>0)')Top
4 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 09:30:55 得分 0
關注...﹗Top
5 楼zhangping1978(gary)回复于 2003-09-04 09:38:21 得分 0
请不要用繁体Top
6 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 09:53:27 得分 0
不好意思 ﹐我用的是繁體系統。Top
7 楼hxshun(顺)回复于 2003-09-04 10:27:17 得分 0
SELECT val(iif (isnullSpec),'''',spec)),Goods.GoodsNo,Goods.GoodsName,
Goods.Unit,Goods.Spec,Goods.mCurr,YmStock.*,
val(format((YmStock.PrevNumber+YmStock.CurInNumber-YmStock.CurFcNumber+YmStock.CurPdNumber),"##0.#,###0.000")) as jc,
val(format(((YmStock.PrevNumber+CurInNumber+CurPdNumber-CurFcNumber)*YmStock.CurmuPrice*YmStock.muChange),"##0.#,###0.000")) as zj,
val(format((YmStock.PrevNumber*YmStock.muPrice*YmStock.muChange),"##0.0")) as syzj
FROM Goods INNER JOIN YmStock ON Goods.GoodsCode =YmStock.GoodsCode
where Goods.mCode=:mmCode and (YmStock.PrevNumber<>0 or YmStock.CurInNumber<>0)
问你一下:用的是SQL Server 吧?在处理Field为Null值的比较和运算时有什么规则?Top
8 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 10:56:10 得分 0
不是﹐用的是ACCESS(我最不喜歡的數據庫)﹐用null值的方式只是取值問題﹐因為SPEC是貨物規格﹐比如規格為﹕ 20*45*20 那么在val(iif (isnull Spec,'''',spec))之后返回值為﹕20
﹔在中間的NULL判斷只是當SPEC為空時﹐賦''值。否則就賦原值。Top
9 楼wellshddelphi(我心飞扬!)回复于 2003-09-04 11:59:28 得分 0
急呀....Top




