b[1]:='虚焊';
  b[2]:='漏焊';
  b[3]:='PCB断';
  b[4]:='PCB连';
  b[5]:='错装';
  b[6]:='漏装';
  b[7]:='器件失效';
  b[8]:='锡渣短路';
str:=select sum(sl)as sl ;
if (flag=0) and (flag1=0) and (flag2=0) then
     str:=str+' where gzyy='+''''+b[i]+''''
      else
       str:=str+' and gzyy='+''''+b[i]+'''';
        for i:=1 to 8 do
         begin
          sql.add(str);
          edit1.text:=str;
          open ;
          a[i]:=ADOQuery1.fieldbyname('sl').AsInteger;
          end;
请问这个sql怎么去写啊!

解决方案 »

  1.   

    b[1]:='虚焊';
      b[2]:='漏焊';
      b[3]:='PCB断';
      b[4]:='PCB连';
      b[5]:='错装';
      b[6]:='漏装';
      b[7]:='器件失效';
      b[8]:='锡渣短路';
    str:=‘select sum(sl)as sl from table’;//你没加可以访问的表呀
    if (flag=0) and (flag1=0) and (flag2=0) then
         str:=str+' where gzyy='+''''+b[i]+''''
      else
          str:=str+' where gzyy='+''''+b[i]+'''';//在这你这个判断语句就没必要了
         with adoquery1 do
         begin    
          sql.add(str);//当STR固定了后,这个里边的这一循环,狗屁不如
              edit1.text:=str;
              open ;应是
             for i:=1 to 8 do
    begin a[i]:=ADOQuery1.fieldbyname('sl').AsInteger;
              end;
    end;
      

  2.   

    b[1]:='虚焊';
      b[2]:='漏焊';
      b[3]:='PCB断';
      b[4]:='PCB连';
      b[5]:='错装';
      b[6]:='漏装';
      b[7]:='器件失效';
      b[8]:='锡渣短路';
      str:=select sum(sl)as sl ;
      if (flag=0) and (flag1=0) and (flag2=0) then
         str:=str+' where gzyy='+''''+b[i]+''''
      else
         str:=str+' and gzyy='+''''+b[i]+'''';
      for i:=1 to 8 do
        begin
          ADOQuery1.close;
          ADOQuery1.sql.clear;
          ADOQuery1.sql.add(str);
          edit1.text:=str;
          ADOQuery1.open ;
          a[i]:=ADOQuery1.fieldbyname('sl').AsInteger;
        end;
      

  3.   

    b[1]:='虚焊';
      b[2]:='漏焊';
      b[3]:='PCB断';
      b[4]:='PCB连';
      b[5]:='错装';
      b[6]:='漏装';
      b[7]:='器件失效';
      b[8]:='锡渣短路';
      str:='select sum(sl)as sl from a';
      if (flag=0) and (flag1=0) and (flag2=0) then
         str:=str+' where gzyy='+''''+b[i]+''''
      else
         str:=str+' and gzyy='+''''+b[i]+'''';
      for i:=1 to 8 do
        begin
          ADOQuery1.close;
          ADOQuery1.sql.clear;
          ADOQuery1.sql.add(str);
          edit1.text:=str;
          ADOQuery1.open ;
          a[i]:=ADOQuery1.fieldbyname('sl').AsInteger;
        end;