高手幫看看,怎麼取到的PCODE值全部是一樣的啊? begin
            for i:=0 to Qty do //Qty 為數字值
            begin
                Pcode:=IntToStr(StrToInt(Copy(Pcode,3,3))+i);                sq1:='insert into Equipment(Pcode)values('''+Pcode+''')';
                ExeSql(sq1);
            end
          end;

解决方案 »

  1.   

    for i:=0 to Qty do //Qty 為數字值
                begin
                    Pcode:=IntToStr(StrToInt(Copy(Pcode,3,3))+i);//这句在第一个循环时已经改写了Pcode的值,它的长度为1位,第二个循环时Copy(Pcode,3,3)得到的值就是''了。这样的结构是肯定不对的.                sq1:='insert into Equipment(Pcode)values('''+Pcode+''')';
                    ExeSql(sq1);
                end
              end;
      

  2.   

    Pcode111:=pcode;
    for i:=0 to Qty do //Qty 為數字值
                begin
                    Pcode:=pcode111;
                    Pcode:=IntToStr(StrToInt(Copy(Pcode,3,3))+i);//这句在第一个循环时已经改写了Pcode的值,它的长度为1位,第二个循环时Copy(Pcode,3,3)得到的值就是''了。这样的结构是肯定不对的.                sq1:='insert into Equipment(Pcode)values('''+Pcode+''')';
                    ExeSql(sq1);
                end
              end;
      

  3.   

    问题???i from 0 to QryPcode := IntToStr(StrToInt(Copy(Pcode,3,3))+i);
    那么第一次循环过后, pcode 最长只有3位, 可能是 100...999
    有何来在下次循环中从第3位开始,再取3为长度呢?-------------
    此代码有问题。
      

  4.   

    你说你要干什么,
    pCode 里面是什么,你需要循环得到什么.
    我来跟你写
      

  5.   

    回樓上師兄:Pcode:='PC001'QTY是數量值如果QTY=5,則我想作一個循環,累加1,將PC001,PC002,PC003,PC004,PC005插入數據庫。
      

  6.   

    怎么不好使,我的都好使了procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    Pcode,pcode1:string;
    begin
    combobox1.Items.Clear;
    Pcode1:='PC001';
    for i:=0 to 5 do //Qty 為數字值
    begin
      Pcode:=pcode1;
      Pcode:=IntToStr(StrToInt(Copy(Pcode,3,3))+i);//这句在第一个循环时已经改写了Pcode的值,它的长度为1位,第二个循环时Copy(Pcode,3,3)得到的值就是''了。这样的结构是肯定不对的.
      combobox1.Items.Add(pcode);
    end;
    end;
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    sq1,Pcode,pcode1:string;
    begin
    combobox1.Items.Clear;
    Pcode1:='PC001';
    for i:=0 to 5 do //Qty 為數字值
    begin
      Pcode:=pcode1;
      Pcode:=IntToStr(StrToInt(Copy(Pcode,3,3))+i);//这句在第一个循环时已经改写了Pcode的值,它的长度为1位,第二个循环时Copy(Pcode,3,3)得到的值就是''了。这样的结构是肯定不对的.
      combobox1.Items.Add(pcode);
      sq1:='insert into biao1(u1)values('''+Pcode+''')';
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(sq1);
      ADOQuery1.ExecSQL;
    end;
    end;我试过了,能添加到数据库
      

  8.   

    begin
                for i:=0 to Qty do //Qty 為數字值
                begin
                    pCode := Copy(pCode,1,2) + IntToStr(StrToInt(Copy(Pcode,3,3))+i);
                    sq1:='insert into Equipment(Pcode)values('''+Pcode+''')';
                    ExeSql(sq1);
                end
              end;
    ----------------
    只加  Copy(pCode,1,2) +  这个进去就行了
    但是 IntToStr(StrToInt(Copy(Pcode,3,3))+i) 得到的不是 001,002,是 1,2,需要在左边填充'0'
    你应该会吧