很简单吧!
首先对商品编码把每个字符串分解开来存在一个数组或者什么里面暂定是数组ShopArr中然后就对数据库操作
var
iLoop : Integer;
begin
with Query do
begin
Close;
SQL.Clear;
SQL.Add('select 商品编号,商品名称,单价 from 商品表');
SQL.Add('where 1 =1 ')
for iLoop := Low(ShopArr) to High(ShopArr) do
begin
if iLoop = 0 then
SQL.Add('and (商品编号 = '''+ShopArr[iLoop]+''')');
else
SQL.Add('or (商品编号 = '''+ShopArr[iLoop]+''')');
end;
Open;
end;
end;//这样就可以了!字符串分解应该没什么问题吧! 代码没有经过测试,先试试看!
首先对商品编码把每个字符串分解开来存在一个数组或者什么里面暂定是数组ShopArr中然后就对数据库操作
var
iLoop : Integer;
begin
with Query do
begin
Close;
SQL.Clear;
SQL.Add('select 商品编号,商品名称,单价 from 商品表');
SQL.Add('where 1 =1 ')
for iLoop := Low(ShopArr) to High(ShopArr) do
begin
if iLoop = 0 then
SQL.Add('and (商品编号 = '''+ShopArr[iLoop]+''')');
else
SQL.Add('or (商品编号 = '''+ShopArr[iLoop]+''')');
end;
Open;
end;
end;//这样就可以了!字符串分解应该没什么问题吧! 代码没有经过测试,先试试看!
1)首先对商品编码把每个字符串分解开来存在一个数组或者什么里面暂定是数组ShopArr中,
把定单里的商品编码分解吗?怎么分解?
能否在详细一点,我用的是ADO做的,俺是新手,谢谢
注意ShopArr是个全局变量!
给你个分解的过程不是最好的,但能用
声明全局数组和过程
ArrValue : Array of String;
procedure MultiCount(sign : String; s : String);
procedure TfrmQYFB.MultiCount(sign : String; s : String);
var
iStart,iEnd,sLeng,i,ArrayLeng : Integer;
vArray : Array of Integer;
begin
sLeng := Length(s);
setLength(vArray,sLeng);
ArrayLeng := 0;
for i := 0 to sLeng do
begin
if Copy(s,i,1) = sign then
begin
vArray[Arrayleng] := i;
ArrayLeng := ArrayLeng + 1;
end;
end;
i := pos(sign,s);
vArray[ArrayLeng] := sLeng+1;
setLength(ShopArr,ArrayLeng);
sLeng := ArrayLeng - 1;
iStart := 1;
iEnd := i -1;
ArrayLeng := 0;
for i :=0 to sLeng do
begin
ShopArr[ArrayLeng] := Copy(s,iStart,iEnd);
ArrayLeng := ArrayLeng + 1;
iStart := vArray[i]+1;
iEnd := vArray[i+1]-iStart;
end;
end;// 调用时参数为 MultiCount(',',query.FieldByName('商品名称').AsString);