就是下面的这段代码了,我想每次保存进仓单都自动生成一个唯一的编号,下次再保存的时候这个编号可以自动加1,可就是弄不出来,现在的程序能通过编译,可运行的时候有错误,经常提示的错误有:将数据类型varchar转换为numeric时出错    ; 要不就是:'jc_'is not a valid integer value我实在是搞不懂了,哪为仁兄知道的,帮帮忙吧,对了,有的时候点击保存的时候提示操作成功,可之后马上就弹出上面所说的错误,当我看数据库的时候,也有保存了的数据,我真的搞不懂了。'
procedure TfrmInput.FormShow(Sender: TObject);
var
 maxnum,temp,inputnum:string;
 newnum:integer;
begin
//显示当前日期
 Edit2.Text:=datetostr(date);
//操作员即登录用户
 Edit3.Text:=frmLogin.Edit1.Text;
//显示进仓单编号
 with ADOQuery1 do begin
  close;
  SQL.Clear;
  SQL.Add('select max(进仓单编号) 最大编号 from 进仓单');
  Open;
 end;//end with
 maxnum:=ADOQuery1.FieldByName('最大编号').AsString;
//防止插入第一条记录的时候发生错误
 if (maxnum='')or(maxnum=' ') then
  temp:='000'
  else
   temp:=copy(maxnum,1,3);
//新插入的进仓单编号为插入前的最大编号+1
   newnum:=strtoint(temp)+1;
//重新组合编码
 if length(inttostr(newnum))=1 then
  inputnum:='jc_0500'+inttostr(newnum);
 if length(inttostr(newnum))=2 then
  inputnum:='jc_050'+inttostr(newnum);
 if length(inttostr(newnum))=3 then
  inputnum:='jc_05'+inttostr(newnum);
 Edit1.Text:=inputnum;end;

解决方案 »

  1.   

    'jc_'is not a valid integer value这种错误一看就是类型不匹配嘛。'jc_'根本不是整型数嘛,你检查你的类型吧。
      

  2.   

    inputnum:='jc_0500'+inttostr(newnum);
    是不是接着想把inputnum转成INT插进数据库啊??那不报错才怪呢..
      

  3.   

    //重新组合编码
    inputnum:=format('jc_05%.3d',[newnum]);从提示的错误看,应该是更新/插入数据时类型错误,
      

  4.   

    真的很乱,现在先不说上面那问题了,先说这个。我想把若干行的数据录入数据库。
    想用stringgrid组件,所以写了如下代码,不知道有什么错误,希望大家指出,因为第一次用 stringgrid组件,所以不怎么会用,知道的就帮帮忙了,只要正确肯定有分的,放心了!procedure TfrmInput.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
     for i:=1 to 100 do
      begin
    //插入新的进仓单数据
       adocommand1.CommandText:='insert into 进仓单 (进仓单编号,料号,名称,数量,单位,进仓日期,操作员,备注)values('''+Edit1.Text+''','''+stringgrid1.Cells[1,i]+''','''+stringgrid1.Cells[2,i]+''','''+stringgrid1.Cells[3,i]+''','''+stringgrid1.Cells[4,i]+''','''+Edit2.Text+''','''+Edit3.Text+''','''+stringgrid1.Cells[5,i]+''')';
       adocommand1.Execute;
       end;
       ShowMessage('进仓单保存成功');
       stringgrid1.Cols[0].Clear;
       stringgrid1.Cols[1].Clear;
       stringgrid1.Cols[2].Clear;
       stringgrid1.Cols[3].Clear;
       stringgrid1.Cols[4].Clear;
       stringgrid1.Cols[5].Clear;
      end;