见鬼了!!!!!!!!!!!!!!!! 执行插入语句,警告列名或所提供值的数目与表定义不匹配!!!,我开始怀疑俺眼花了,和表仔细对了一下没错!!!!!,而且把该语句放在sql server里执行ok!!!怎么办.高手指点!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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型,且都可以为空. 编译后selstr=INSERT INTO QUERYF VALUES ('00000001','北仑支行','开发区','凭证','对公','a','','a',''),放在sql server里是可以执行插入的.唉,郁闷!!!!!!!!! 你的表的字段都可以为空,没有主键啊。定义时不要定义为char,要定义为varchar.insert 时把字段也列出来,如insert into queryf(qrno) values('00000001'); mssql吗最好是insert into 表 (列...) values (值...)否则你的表结构顺序和内容会有大大的问题 是比较奇怪,这样看看出错吗?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; 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域名无效!! to RobinHZ(熊掌) .还是同样的错误,列名不符!! to lws0472(天外飞仙),怎么可能,把selstr的值放在数据库里就可以执行! 你在把selstr的值放在数据库里执行时没加列名吧 参数问题!例如:把:opertor换成:V_opertor 土方法:加一个richedit 把你的query.sql 里的sql 语句放到richedit.text 里再把richedit.text 的内容复制到 sqlserver里去执行一下试一试 高手个P告诉你insert into 后面加字段列表 ('''+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))' 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; Query1.SQL.Add(selstr);try Query1.ExecSQL;except inputbox('错误提示','SQL脚本:',selstr);end;跟踪程序的运行,如果不行,则把对话框中的selstr在查询分析器中执行,检查语句 ado,要设置一下参数的类型,最好用固定的参数不要动态创建 img1.Picture.Graphic.Empty 是个bug?一用就内存错误 怎样读取access中的一行数据显示在stringgrid中 FastReport4.7.1安装问题 在线等,rave高手请进! SocketConnection控件设置代理的属性是哪个 Delphi 图形处理/多媒体问题 请教将两个DBF文件合并产生一个新DBF文件的方法(急) 在PB中有数据管道用来连接多个数据库,请问在DELPHI中是否有类似的功能? delphi获取外网IP 关于数组的问题?? HINSTANCE,Hinstance,THandle有什么区别?不明白 关于用系统快照取得进程项目的问题
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型,且都可以为空.
定义时不要定义为char,要定义为varchar.
insert 时把字段也列出来,如insert into queryf(qrno) values('00000001');
最好是insert into 表 (列...) values (值...)
否则你的表结构顺序和内容会有大大的问题
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;
' VALUES ('''+str+''','''+combobox9.text+''','''+combobox16.text+''','''+combobox10.text+''','''+combobox11.text+''','''+edit19.Text+''','''+edit21.Text+''','''+edit20.Text+''','''+combobox12.text+''')';
加上列名了,警告subbank域名无效!!
加一个richedit 把你的query.sql 里的sql 语句放到richedit.text 里
再把richedit.text 的内容复制到 sqlserver里去执行一下试一试
告诉你insert into 后面加字段列表
改为
(quotedstr(str),quotedstr(combobox9.text),quotedstr(combobox16.text),quotedstr(combobox10.text),quotedstr(combobox11.text),quotedstr(edit19.Text,edit21.Text),quotedstr(edit20.Text,combobox12.text))'
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;
try
Query1.ExecSQL;
except
inputbox('错误提示','SQL脚本:',selstr);
end;
跟踪程序的运行,如果不行,则把对话框中的selstr在查询分析器中执行,
检查语句