报错,但找不到,帮忙看看

justforfun 2005-04-18 04:17:28
"不正常的定义参数对象,提供不一致的或不完整的消息"
哪错了
...全文
181 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2005-04-23
  • 打赏
  • 举报
回复
if y=0 then begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select TypeID From Type Where TypeName=''填空题''');
ADOQuery1.Open;
temp:=ADOQuery1.FieldValues['TypeID'];

ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select BH From NYD Where NYD=:NY');
ADOQuery2.Parameters.ParamByName('NY').Value:=NY_ComboBox2.Text;
ADOQuery2.Open;
temp1:=ADOQuery2.FieldValues['BH'];

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO TianKong(TypeID,TM,K1,K2,K3,K4,K5,YTS,NY,CZ)
ADOQuery1.SQL.Add(format('VALUES(%d,''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',%d,%d,''%s'')',[temp,TM_Edit2.Text,
Kong_Edit1.Text,
Kong_Edit2.Text,
Kong_Edit3.Text,
Kong_Edit4.Text,
Kong_Edit5.Text,
StrToInt(Kong_ComboBox.Text),
temp1,
ZJ_ComboBox2.Text]));

ADOQuery1.ExecSQL;
!!!!!!ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select 1 From TianKong');
ADOQuery1.Open;
TH_Edit2.Text:=IntToStr(ADOQuery1.RecordCount+1);
TM_Edit2.Clear;
Kong_Edit1.Clear;
Kong_Edit2.Clear;
Kong_Edit3.Clear;
Kong_Edit4.Clear;
Kong_Edit5.Clear;
end
else showmessage('此题已经存在!');
end;
end;
victor_yang 2005-04-21
  • 打赏
  • 举报
回复
象这种简单的更新,我看就不要用参数了,直接写到sql语句里算了。
peterluolaw 2005-04-19
  • 打赏
  • 举报
回复
用QUOTEDSTR()直接替换使用参数的部分试试
victor_yang 2005-04-19
  • 打赏
  • 举报
回复
把你的数据结构放上来看看。
justforfun 2005-04-19
  • 打赏
  • 举报
回复
temp:=ADOQuery1.FieldValues['TypeID'];
>>>>>>>>>>>>>>>>>>>>>>>>>>>
ADOQuery1.Parameters.ParamByName('temp').Value:=temp;
justforfun 2005-04-19
  • 打赏
  • 举报
回复
上面有源码啊
老大看啊
justforfun 2005-04-19
  • 打赏
  • 举报
回复
检查过了还是不对啊
victor_yang 2005-04-19
  • 打赏
  • 举报
回复
现在的问题是你的参数类型不匹配,你检查下你那几个参数的类型和值的吧。
darkie28 2005-04-19
  • 打赏
  • 举报
回复
凡是插入为字符型的,都要加QuotedStr,比如,ADOQuery1.Parameters.ParamByName('CZ').Value:=QuotedStr(ZJ_ComboBox2.Text);
victor_yang 2005-04-19
  • 打赏
  • 举报
回复
ADOQuery1.Parameters.ParamByName('temp').Value:=temp; //这是什么回事??!!!!!!
ADOQuery1.Parameters.ParamByName('TM').Value:=TM_Edit2.Text;
ADOQuery1.Parameters.ParamByName('K1').Value:=Kong_Edit1.Text;
ADOQuery1.Parameters.ParamByName('K2').Value:=Kong_Edit2.Text;
ADOQuery1.Parameters.ParamByName('K3').Value:=Kong_Edit3.Text;
ADOQuery1.Parameters.ParamByName('K4').Value:=Kong_Edit4.Text;
ADOQuery1.Parameters.ParamByName('K5').Value:=Kong_Edit5.Text;
ADOQuery1.Parameters.ParamByName('YTS').Value:=StrToInt(Kong_ComboBox.Text);
justforfun 2005-04-19
  • 打赏
  • 举报
回复
BH 自动编号
TypeID 数字
TM 文本
K1 文本
K2 文本
K3 文本
K4 文本
YTS 数字
NY 数字
CZ 文本
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>表nyd
BH 自动编号
NYD 文本
justforfun 2005-04-18
  • 打赏
  • 举报
回复
还是错误
victor_yang 2005-04-18
  • 打赏
  • 举报
回复
其实感叹号的地方不是出错的地方,是上面的一句出错了。

YTS,NY,CZ这三个参数的赋值与类型可能不匹配。
从程序上看
YTS:integer
NY:String
CZ:String

但实际上表格的数据类型是什么你要看清楚了。
gzmhero 2005-04-18
  • 打赏
  • 举报
回复
temp:=ADOQuery2.FieldValues['BH'];
ADOQuery1.Parameters.ParamByName('NY').Value:=temp;
ADOQuery1.Parameters.ParamByName('CZ').Value:=ZJ_ComboBox2.Text;
ADOQuery1.ExecSQL;
!!!!!!ADOQuery1.Close;

--->>>>>>>>>>>>>..
temp:=ADOQuery2.FieldByName('BH').AsString;
ADOQuery1.Parameters.ParamByName('NY').Value:=temp;
ADOQuery1.Parameters.ParamByName('CZ').Value:=ZJ_ComboBox2.Text;
ADOQuery1.ExecSQL;
justforfun 2005-04-18
  • 打赏
  • 举报
回复
procedure TTIMuLuRu.LR_Button2Click(Sender: TObject);
type
SZ=array[1..5]of string;
var
temp,x,i,y:integer;
temp1,temp2:string;
SZx:SZ;
begin
y:=0;
i:=1;
SZx[1]:='';
if TM_Edit2.Text='' then ShowMessage('题目不能为空')
else if NY_ComboBox2.Text='' then ShowMessage('难易度不能为空')
else if ZJ_ComboBox2.Text='' then ShowMessage('所在章节不能为空')
else if Kong_ComboBox.Text='' then ShowMessage('空数不能为空')
else begin
temp:=StrToInt(Kong_ComboBox.Text);
SZx[1]:=Kong_Edit1.Text;
SZx[2]:=Kong_Edit2.Text;
SZx[3]:=Kong_Edit3.Text;
SZx[4]:=Kong_Edit4.Text;
SZx[5]:=Kong_Edit5.Text;
for x:=1 To temp do
begin
i:=x;
if SZx[i]='' then break;
end;
end;
if SZx[i]='' then ShowMessage('您少输入了应填空的答案')
else begin
temp1:=TM_Edit2.Text;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT TM FROM TianKong');
ADOQuery2.Open;
While not ADOQuery2.Eof do
begin
temp2:=ADOQuery2.FieldValues['TM'];
if temp1=temp2 then begin
y:=1;
break;
end;
ADOQuery2.Next;
end;
if y=0 then begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select TypeID From Type Where TypeName=''填空题''');
ADOQuery1.Open;
temp:=ADOQuery1.FieldValues['TypeID'];
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO TianKong(TypeID,TM,K1,K2,K3,K4,K5,YTS,NY,CZ) VALUES(:temp,:TM,:K1,:K2,:K3,:K4,:K5,:YTS,:NY,:CZ)');
ADOQuery1.Parameters.ParamByName('temp').Value:=temp;
ADOQuery1.Parameters.ParamByName('TM').Value:=TM_Edit2.Text;
ADOQuery1.Parameters.ParamByName('K1').Value:=Kong_Edit1.Text;
ADOQuery1.Parameters.ParamByName('K2').Value:=Kong_Edit2.Text;
ADOQuery1.Parameters.ParamByName('K3').Value:=Kong_Edit3.Text;
ADOQuery1.Parameters.ParamByName('K4').Value:=Kong_Edit4.Text;
ADOQuery1.Parameters.ParamByName('K5').Value:=Kong_Edit5.Text;
ADOQuery1.Parameters.ParamByName('YTS').Value:=StrToInt(Kong_ComboBox.Text);
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select BH From NYD Where NYD=:NY');
ADOQuery2.Parameters.ParamByName('NY').Value:=NY_ComboBox2.Text;
ADOQuery2.Open;
temp:=ADOQuery2.FieldValues['BH'];
ADOQuery1.Parameters.ParamByName('NY').Value:=temp;
ADOQuery1.Parameters.ParamByName('CZ').Value:=ZJ_ComboBox2.Text;
ADOQuery1.ExecSQL;
!!!!!!ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select 1 From TianKong');
ADOQuery1.Open;
TH_Edit2.Text:=IntToStr(ADOQuery1.RecordCount+1);
TM_Edit2.Clear;
Kong_Edit1.Clear;
Kong_Edit2.Clear;
Kong_Edit3.Clear;
Kong_Edit4.Clear;
Kong_Edit5.Clear;
end
else showmessage('此题已经存在!');
end;
end;
加感叹号的就是运行时报错停的地方
victor_yang 2005-04-18
  • 打赏
  • 举报
回复
如果是在设计期出错,可以将参数的value类型值设为NULL。
如果是在运行期出错,可能是参数值与类型不匹配。
gzmhero 2005-04-18
  • 打赏
  • 举报
回复
出错的代码贴一下呀,这样谁知道才见鬼了呢。
Gfire 2005-04-18
  • 打赏
  • 举报
回复
能不能详细一点啊

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧