执行插入语句,警告列名或所提供值的数目与表定义不匹配!!!,我开始怀疑俺眼花了,和表仔细对了一下没错!!!!!,而且把该语句放在sql server里执行ok!!!怎么办.高手指点!!

解决方案 »

  1.   

    procedure TForm1.Button11Click(Sender: TObject);
    var
       str,selstr:string;
    begin
      if Trim(edit20.Text)= '' then
      begin
        application.MessageBox('查阅人不可为空', '错误', MB_OK + mb_iconStop);
        exit;
      end;
        if Trim(edit19.Text) = '' then
      begin
        application.MessageBox('请输入档案日期', '错误', MB_OK + mb_iconStop);
        exit;
      end;
      str:='00000001';
      selstr:= 'INSERT INTO QUERYF '+
        ' VALUES ('''+str+''','''+combobox9.text+''','''+combobox16.text+''','''+combobox10.text+''','''+combobox11.text+''','''+edit19.Text+''','''+edit21.Text+''','''+edit20.Text+''','''+combobox12.text+''')';
       //(qrno, subbank, bankname, typename, workname, filedate, querydate, queryor, opertor)
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(selstr);
      Query1.ExecSQL;
      showmessage('登记成功');
    end;域名在注释行里,都为char型,且都可以为空.
      

  2.   

    编译后selstr=INSERT INTO QUERYF  VALUES ('00000001','北仑支行','开发区','凭证','对公','a','','a',''),放在sql server里是可以执行插入的.唉,郁闷!!!!!!!!!
      

  3.   

    你的表的字段都可以为空,没有主键啊。
    定义时不要定义为char,要定义为varchar.
    insert 时把字段也列出来,如insert into queryf(qrno) values('00000001');
      

  4.   

    mssql吗
    最好是insert into 表 (列...) values (值...)
    否则你的表结构顺序和内容会有大大的问题
      

  5.   

    是比较奇怪,这样看看出错吗?
    selstr:= 'INSERT INTO QUERYF VALUES (:qrno, :subbank, :bankname, :typename, :workname, :filedate, :querydate, :queryor, :opertor)';
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(selstr);
      query1.parambyname('qrno').asstring := str;
      query1.parambyname('subbank').asstring := combobox9.text;
      query1.parambyname('bankname').asstring := combobox16.text;
      query1.parambyname('typename').asstring := combobox10.text;
      query1.parambyname('workname').asstring := combobox11.text;
      query1.parambyname('filedate').asstring := edit19.Text;
      query1.parambyname('querydate').asstring := edit21.Text;
      query1.parambyname('queryor').asstring := edit20.Text;
      query1.parambyname('opertor').asstring := combobox12.text;
      Query1.ExecSQL;
      

  6.   

    selstr:= 'INSERT INTO QUERYF (qrno, subbank, bankname, typename, workname, filedate, querydate, queryor, opertor)'+
        ' VALUES ('''+str+''','''+combobox9.text+''','''+combobox16.text+''','''+combobox10.text+''','''+combobox11.text+''','''+edit19.Text+''','''+edit21.Text+''','''+edit20.Text+''','''+combobox12.text+''')';
    加上列名了,警告subbank域名无效!!
      

  7.   

    to  RobinHZ(熊掌) .还是同样的错误,列名不符!!
      

  8.   

    to lws0472(天外飞仙),怎么可能,把selstr的值放在数据库里就可以执行!
      

  9.   

    你在把selstr的值放在数据库里执行时没加列名吧
      

  10.   

    参数问题!例如:把:opertor换成:V_opertor
      

  11.   

    土方法:
    加一个richedit 把你的query.sql 里的sql 语句放到richedit.text 里
    再把richedit.text 的内容复制到 sqlserver里去执行一下试一试
      

  12.   

    高手个P
    告诉你insert into 后面加字段列表
      

  13.   

    ('''+str+''','''+combobox9.text+''','''+combobox16.text+''','''+combobox10.text+''','''+combobox11.text+''','''+edit19.Text+''','''+edit21.Text+''','''+edit20.Text+''','''+combobox12.text+''')'
    改为
    (quotedstr(str),quotedstr(combobox9.text),quotedstr(combobox16.text),quotedstr(combobox10.text),quotedstr(combobox11.text),quotedstr(edit19.Text,edit21.Text),quotedstr(edit20.Text,combobox12.text))'
      

  14.   

    procedure TForm1.Button11Click(Sender: TObject);
    var
       str,selstr:string;
    begin
      if Trim(edit20.Text)= '' then
      begin
        application.MessageBox('查阅人不可为空', '错误', MB_OK + mb_iconStop);
        exit;
      end;
        if Trim(edit19.Text) = '' then
      begin
        application.MessageBox('请输入档案日期', '错误', MB_OK + mb_iconStop);
        exit;
      end;
      str:='00000001';
      selstr:= 'INSERT INTO QUERYF '+   'VALUES('+str+','+QuotedStr(combobox9.text)+','+QuotedStr(combobox16.text)+','+QuotedStr(combobox10.text)+','+combobox11.text+','+QuotedStr(edit19.Text)+','+QuotedStr(edit21.Text)+','+QuotedStr(edit20.Text)+','+ QuotedStr(combobox12.text) + ')';
       //(qrno, subbank, bankname, typename, workname, filedate, querydate, queryor, opertor)
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(selstr);
      Query1.ExecSQL;
      showmessage('登记成功');
    end;
      

  15.   

    Query1.SQL.Add(selstr);
    try
      Query1.ExecSQL;
    except
      inputbox('错误提示','SQL脚本:',selstr);
    end;
    跟踪程序的运行,如果不行,则把对话框中的selstr在查询分析器中执行,
    检查语句
      

  16.   

    ado,要设置一下参数的类型,最好用固定的参数不要动态创建