關於庫存量vs安全存量的問題 |
尚未結案
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
感謝timhuang大大的回覆...我已測試ok了...
不過仍有一些問題尚未解決...故未將此問題結案!!
---------------------------------------------------
就是關於如何控管出庫品號一定必須為入庫品號阿??
是在qry3之beforepost上作控制ㄇ??
因為我試過了...但沒有其效果...
因為qry3是指向出庫明細...非入庫明細...
那還是要請問各位大大可否再指點高明...
-----------------------------------------------------
感謝大大的協助!!~~~程式設計真的學無止境阿~~~~thanks
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
寫在 qry3 的 beforepost 是其中一種方式沒錯, 不過你得要再利用另一個 query 來進行查詢以判斷是否可以 post, 舉例如下,
procedure TForm1.qry3BeforePost(DataSet: TDataSet); begin tmpQry.Close; tmpQry.SQL.Text := 'select top 1 * from 入庫明細 where 品號 = ''' qry3.FieldByName('品號').AsString ''' '; tmpQry.Open; if not tmpQry.IsEmpty then begin ShowMessage('非在入庫明細的品號 ' qry3.FieldByName('品號').AsString); Abort; end; end; |
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
1. 若你的 tmpQry 是在 beforepost 內的 local variable, 你必須自行建立該 tmpQry 的 instance, 並給定和 qry3 一樣的 databasename , 用完後要自行 free 如:
tmpQry := TQuery.Create(self); //self 會指向這個 form, 當然, 用 nil 亦可, 記得要自行 free 掉即可 tmpQry.DatabaseName := qry3.DatabaseName; .... tmpQry.Free;2. 你下在 tmpQry 中的 sql command 是不是太多 ' (單引號) 啦, 我前面寫的有這麼多嗎? |
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
在 access 中可以利用一種方式來達成, 兩個子查詢相減即可, 如 select top 1 (select sum(入庫數量) from 入庫明細 where 品號='xxx') - (select sum(出庫數量) from out where 品號='xxx') as total from 入庫名細 其中紅色部分請隨意代入任一已存在表皆可, 但必須有一筆以上資料即可.
接下來取回的 total 值, 就可以來判斷是否可以允許出庫, 要注意的地方是修改時, 要考慮目前正在修改的那筆品號的修改前後值的比較以及與剩餘量的關係!!
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
當然是可以囉, 不過弟上面提示的語法就可以取出相減後的值啦, 如何判斷, 就看你的取用方式啊, 如,
var diff: integer; begin ... tmpQuery.SQL.Text := 'select top 1 (select sum(入庫數量) from 入庫明細 where 品號='xxx') - (select sum(出庫數量) from out where 品號='xxx') as total from 入庫名細'; tmpQuery.Open; diff := tmpQuery.FieldByName('total').AsInteger; if diff < 0 then ... diff |
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
|
NILSAN
一般會員 ![]() ![]() 發表:5 回覆:11 積分:3 註冊:2003-11-18 發送簡訊給我 |
timhuang大大:
以下是我Qry3之befroepost之語法.奇怪的地方是diff有時候會失去判斷的功能
.如果某品號之庫存量已經為負值時,則下次領料時diff就會發揮功用,...
如果某品號庫存量為正值時.則diff就不會發揮功用了...一直不解阿
原本想說已ok了..結果又測試時..又發現此漏洞...再指點一下ㄅ...thanks
--------------------------------------------------------------------
var
tmpQry: TQuery;
diff: integer;
Qrya: TQuery;
begin
if (dbedit2.Text = '') then Exit;
tmpQry := TQuery.Create(nil);
tmpQry.DatabaseName := qry3.DatabaseName;
if (dbedit3.Text = '') then Exit;
Qrya := TQuery.Create(nil);
Qrya.DatabaseName := qry3.DatabaseName;
with tmpQry do
begin
close;
SQL.Clear;
SQL.Add(' SELECT * FROM 入庫明細 '
' WHERE 品號 = ''' dbedit2.Text ''' ');
open;
end;
if tmpQry.IsEmpty then
begin
MessageDlg('此物料無庫存品!請查證', mtError, [mbOK], 0);
tmpQry.Free;
tmpQry := nil;
Abort;
end
else if not tmpQry.IsEmpty then
begin
with Qrya do
begin
close;
SQL.Clear;
SQL.Add('select (select sum(入庫數量) from 入庫明細 where 品號=''' dbedit3.Text ''') - (select sum(出庫數量) from out where 品號=''' dbedit3.Text ''') as total from 入庫明細');
open;
diff := Qrya.FieldByName('total').AsInteger;
if diff < 0 then
begin
MessageDlg('此物料庫存量不足!無法提領', mtError, [mbOK], 0);
Qrya.Free;
Qrya := nil;
Abort;
end;
end;
end;
tmpQry.Free;
tmpQry := nil;
end;
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |