求助:用delphi向数据库里插入数据 但是数据库里没数据

penguin1158262 2005-05-09 04:54:33
我用delphi向数据库里插入数据 没有出现任何错误 但数据库里就是什么数据都没有 特别奇怪!!!部分代码如下:
var
xiaobanhao,strcodexiaoban,linban,tongjiyear:string;
zyflag:integer;
begin
tongjiyear:=edit1.Text ;
zyflag:=1;
linban:='001';
adoqs.Close;
adoqw.Close; //在找到所有的小班
ADOQS.SQL.Clear ;
ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '+LinBan);
try
ADOQS.Prepared ;
ADOQS.Open;
ADOQW.Close;
while not ADOQS.Eof
do
begin
xiaobanhao:=trim(ADOQS.Fields.fieldbyname('xb').AsString);
strcodexiaoban:=trim(adoqs.Fields.fieldbyname('id').AsString );
xiaobanhao:=' '+xiaobanhao;
ADOQW.SQL.Clear ;
if trim(ADOQS.Fields.fieldbyname('dl').AsString)='针叶林' then
begin
ADOQW.SQL.Add('execute tfdarea_insertrecord '''+strcodexiaoban+''','''+tongjiyear+''','''+xiaobanhao+''','''+ADOQS.Fields.fieldbyname('qs_td').AsString+''','''+ inttostr(zyflag)+''',');
ADOQW.SQL.Add(floattostr(ADOQS.Fields.fieldbyname('mj').AsFloat) +','+floattostr(ADOQS.Fields.fieldbyname('mj').AsFloat) +','+floattostr(ADOQS.Fields.fieldbyname('mj').AsFloat) +','+floattostr(ADOQS.Fields.fieldbyname('mj').AsFloat) +','+floattostr(ADOQS.Fields.fieldbyname('mj').AsFloat) +',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100');
end
else
begin
showmessage('没有进行以上选择!');
end;
ADOQW.Prepared ;
ADOQW.ExecSQL ;
ADOQS.Next;
end;
showmessage('成功!');
except showmessage(adoqw.SQL.Text);
showmessageadoqs.SQL.Text); exit;
end;
ADOQW.Close;
ADOQS.Close;
end;

其中有用到存储过程的 程序的结果就是显示 ‘成功!’
大家都来帮帮忙了 很急
...全文
151 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
penguin1158262 2005-05-10
  • 打赏
  • 举报
回复
ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '''+LinBan+''); 关于这句语句 在showmessage(adoqs.sql.text)时 少了右边的单引号
penguin1158262 2005-05-10
  • 打赏
  • 举报
回复
要不看看这个吧
procedure TForm1.Button1Click(Sender: TObject);
var
str,linban:string;
begin
linban:='001';
adoqs.Close ;
ADOQS.SQL.Clear ;
ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '''+LinBan+'''');
showmessage(adoqs.SQL.Text );
try
ADOQS.Prepared ;
adoqs.ExecSQL ;
while not ADOQS.Eof
do
begin
str:=trim(adoqs.Fields.fieldbyname('dl').AsString);
showmessage(str);
adoqs.Next ;
end;
except
showmessage('错误!');
end;
end;

存储过程在查询分析器里试过了 没问题 只显示了showmessage(adoqs.sql.text) 然后就开始没反应了 也没显示出错信息!!
帮帮忙了
Comer 2005-05-10
  • 打赏
  • 举报
回复
showmessage('没有进行以上选择!');
end;
ADOQW.Prepared ;
memo1.text := ADOQW.sql.text;
ADOQW.ExecSQL ;
ADOQS.Next;


然后把memo1.text拷贝到sql查询分析器里看看行不行
penguin1158262 2005-05-10
  • 打赏
  • 举报
回复
这个基本上来说就是最简单的了
努力偷懒 2005-05-10
  • 打赏
  • 举报
回复
太复杂的东西啦!弄个最主要的东西出来看看吧!

是不是你调用的存储过程有问题啊?
penguin1158262 2005-05-09
  • 打赏
  • 举报
回复
还有 这个语句ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '''+LinBan+'');好像有错 但我不知道错在哪
而且当我showmessage(ADOQS.Fields.fieldbyname('dl').AsString)时 说找不到'dl'
penguin1158262 2005-05-09
  • 打赏
  • 举报
回复
试了上面的方法还是不行
我觉得可能是循环的错误 好像都没有执行到那些if语句
jkx01whg 2005-05-09
  • 打赏
  • 举报
回复
我太菜了,帮不了你
pengxuan 2005-05-09
  • 打赏
  • 举报
回复
把SQL语句输出出来到查询分析器里执行一下看看是什么错误
inputbox('','',ADOQS.SQL.Text);
Comer 2005-05-09
  • 打赏
  • 举报
回复
ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '+LinBan);
showmessage(ADOQS.SQL.Text);

然后把show出来的结果在查询分析器里执行一下
fengzhengren 2005-05-09
  • 打赏
  • 举报
回复
ADOQS.Open;
改为ADOQS.EXECSQL;

如果没数据,说明ADOQS.Eof为真,也就是没有选出数据来。

2,498

社区成员

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

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