答案已近搜过,没有解决用delphi做的一个小东西,但是老提示数据类型不匹配。用的是delphi+access。。各位帮忙!var 
      lfc_blade_left:integer;
//**********************中间代码省略sql.add('insert into blade (blade_left_no) values ('''+lfc_blade_left+''')');//*************************************************下面是数据库字段blade_left_no(整型)33----------------------------------------------------
程序主要作用:根据输入的要领取的产品名称,先从数据库中读取目前剩余的数量,然后往数据库写入一条新的领取记录(blade_left_no字段 数据为 剩余数量-1)。。但是每次都提示,数据类型不匹配。

解决方案 »

  1.   

    lfc_blade_left即是从数据库读取后-1的值。
      

  2.   

    sql.add('insert into blade (blade_left_no) values ('''+inttostr(lfc_blade_left)+''')'); 
      

  3.   

    我数据库字段是integer类型,inttostr不是又成string 了嘛。胡CORE告诉我们不折腾啊。
      

  4.   

    blade_left_no为整形,你赋值时,就不能带引号,带上引号当然要报错了
      

  5.   

    sql.add('insert into blade (blade_left_no) values (+lfc_blade_left+)'); 改成这样机器程序就死了我确定其他部分没有问题,因为将参数改成数字 就OK。
      

  6.   

    整型用个单引号就行了sql.add('insert into blade (blade_left_no) values ('+inttostr(lfc_blade_left)+')'); 或这样sql.add('insert into blade(blade_left_no) values(:blade_left_no)');
    parameters.parambyname('blade_left_no').value := lfc_blade_left;
      

  7.   

     with adoquery1 do
        begin
        close;
        sql.Clear;
        sql.Add('select top 1 * from blade where new_blade_type='''+combobox1.text+'''');
        sql.Add('order by id desc');
        execsql;
        open;    while not eof do
        begin
        lfc_blade_left:=fieldbyname('blade_left_no').asinteger-1;
        end;
        close;
        sql.Clear;
    ********************************************************************前面的代码,麻烦各位神人了,我快搞死了,用完了所有搜索引擎。
      

  8.   


    option1:我数据库里面是integer,你这里用了inttostr,不是又将数据变成string了????
      

  9.   

    7楼的是对的
    你的blade_left_no为整形,sql语句应该是insert into blade (blade_left_no) values (1)
    而不是insert into blade (blade_left_no) values (‘1’),不需要引号
      

  10.   

    //*************************************现场直播
    目前不报错了,但是程序死掉了。
    提交数据前的代码,麻烦各位了。
    procedure  *****************************
    with adoquery1 do 
        begin 
        close; 
        sql.Clear; 
        sql.Add('select top 1 * from blade where new_blade_type='''+combobox1.text+''''); 
        sql.Add('order by id desc');     open;     while not eof do 
        begin 
        lfc_blade_left:=fieldbyname('blade_left_no').asinteger-1; 
        end; 
        close; 
        sql.Clear; 
      

  11.   

     完整代码,,麻烦您给看看。现在是点击提交后,程序就挂了。with adoquery1 do
        begin
        close;
        sql.Clear;
        sql.Add('select top 1 blade_left_no from blade where new_blade_type='''+combobox1.text+'''');
        open;
        while not eof do
        begin
        lfc_blade_left:=fieldbyname('blade_left_no').value -1;
        end;
        close;
        sql.Clear;
        sql.Add('insert into blade (change_date,shift,change_time,team,machine_no,');
        sql.Add('old_blade_no,old_blade_type,old_blade_life,old_blade_expo,');
        sql.Add('new_blade_no,new_blade_type,change_reason,operator,monitor,');
        sql.Add('inputor,blade_left_no) values ');
        sql.Add('(#'+lfc_date+'#,'''+combobox4.text+''','''+lfc_time+''','''+combobox3.text+''','''+edit2.text+''',');
        sql.Add(''''+edit5.text+''','''+combobox2.Text+''','''+edit3.Text+''','''+edit4.Text+''',');
        sql.Add(''''+edit8.Text+''','''+combobox1.text+''','''+edit1.Text+''','''+edit10.Text+''','''+edit11.text+''',');
        sql.add(''''+unit2.user_name+''','+lfc_blade_left+')');
        execsql;
        CLOSE;
        end;
        begin
        application.messagebox('提交成功','caution',MB_ICONWARNING);
    end;
      

  12.   

    完整代码,,麻烦您给看看。现在是点击提交后,程序就挂了。 with adoquery1 do 
        begin 
        close; 
        sql.Clear; 
        sql.Add('select top 1 blade_left_no from blade where new_blade_type='''+combobox1.text+''''); //从数据库读取产品剩余信息
        open; 
        while not eof do 
        begin 
        lfc_blade_left:=fieldbyname('blade_left_no').value -1; //新的产品信息为:lfc_blade_left-1
        end; 
        close; 
        sql.Clear; 
                          //更新数据库
        sql.Add('insert into blade (change_date,shift,change_time,team,machine_no,'); 
        sql.Add('old_blade_no,old_blade_type,old_blade_life,old_blade_expo,'); 
        sql.Add('new_blade_no,new_blade_type,change_reason,operator,monitor,'); 
        sql.Add('inputor,blade_left_no) values '); 
        sql.Add('(#'+lfc_date+'#,'''+combobox4.text+''','''+lfc_time+''','''+combobox3.text+''','''+edit2.text+''','); 
        sql.Add(''''+edit5.text+''','''+combobox2.Text+''','''+edit3.Text+''','''+edit4.Text+''','); 
        sql.Add(''''+edit8.Text+''','''+combobox1.text+''','''+edit1.Text+''','''+edit10.Text+''','''+edit11.text+''','); 
        sql.add(''''+unit2.user_name+''','+lfc_blade_left+')'); 
        execsql; 
        CLOSE; 
        end; 
        begin 
        application.messagebox('提交成功','caution',MB_ICONWARNING); 
    end;
      

  13.   

    while not eof do 
        begin 
        lfc_blade_left:=fieldbyname('blade_left_no').value -1; //新的产品信息为:lfc_blade_left-1 
        end; 
        close; 当然会死,这里在不停的循环while not eof do 
        begin 
        lfc_blade_left:=fieldbyname('blade_left_no').value -1; //新的产品信息为
    fc_blade_left-1 
           Next;//加上这句
        end; 
        close; 
      

  14.   

    THKS  idecl(谢三哥) 。结贴。
      

  15.   

       while not eof do 
        begin 
        lfc_blade_left:=fieldbyname('blade_left_no').asinteger-1; 
        end; 这已经是死循环了。加个next吧