有一个公司有10个仓库,每个仓库管理员负责1-3个仓库,怎么计算一段时间内,某管理员负责的仓库的进货量?用户表我这样设计(简化了):
yhm ck1 ck2 ck3 ... ck10,用户名:字符型,仓库:布尔型。
在用户管理中,给仓库管理员赋权限,如果负责2号、5号仓库,那么ck2、ck5值为ture。进货表这样设计:
jhsj jhsl ck,进货时间:日期型,进货数量:数字型,仓库:数字型。如果再加个“仓库管理员”也有问题,因为过一段时间,可能这个仓库管理员负责其它仓库了。这两个表设计不知是否合理?
yhm ck1 ck2 ck3 ... ck10,用户名:字符型,仓库:布尔型。
在用户管理中,给仓库管理员赋权限,如果负责2号、5号仓库,那么ck2、ck5值为ture。进货表这样设计:
jhsj jhsl ck,进货时间:日期型,进货数量:数字型,仓库:数字型。如果再加个“仓库管理员”也有问题,因为过一段时间,可能这个仓库管理员负责其它仓库了。这两个表设计不知是否合理?
Select 仓库管理员,SUM(jhsl) As jhsl From 进货表 Where jhsj>='开始日期' and jhsj<='结束日期' Group by 仓库管理员
1、如何获取某管理员负责的仓库,并将其放在变量ck1、ck2、ck3(数字型)中。我想了个笨办法,只是不好意思帖出来。
2、管理员有可能负责1个仓库,有可能负责3个仓库。如果ck3为空(或零),那么 in (ck1,ck2,ck3)对结果有影响吗?
或者使用 if (ck1>0) and (ck2=0) and (ck3=0) then ...=ck1
if (ck1>0) and (ck2>0) and (ck3=0) then ...in (ck1,ck2)
if (ck1>0) and (ck2>0) and (ck3>0) then ...in (ck1,ck2,ck3) ?
要查询的是某仓库管理员“当前”负责的仓库在某段时间的进货量,也就是说有些货并不是他进的,他进的货也可能不包括在其中。怎么知道某仓库管理员负责那几个仓库,并赋值给c1,c2,c3呢?我贴个很笨的代码,希望大家指正:procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k:integer;
c1,c2,c3:integer;
begin
c1:=0;
c2:=0
c3:=0;
with ADOQuery1 do //先搜出包含某管理员的用户记录
begin
Close;
SQL.Clear;
SQL.Add('select * from yhb where yhm=:yhm');//yhb:用户表
Parameters.ParamByName('yhm').Value:=yhm; //登录后用户名已有了值
Open; for i:=1 to 10 do
if Fields[i].AsBoolean=true then
begin
c1:=i;
bereak;
end; for j:=i+1 to 10 do
if Fields[j].AsBoolean=true then
begin
c2:=j;
bereak;
end; for k:=j+1 to 10 do
if Fields[k].AsBoolean=true then
begin
c3:=k;
bereak;
end;
end;
end;
另外本来是缩进的代码,到这里都不行了。怎么弄?