我用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;其中有用到存储过程的 程序的结果就是显示 ‘成功!’
大家都来帮帮忙了 很急
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;其中有用到存储过程的 程序的结果就是显示 ‘成功!’
大家都来帮帮忙了 很急
改为ADOQS.EXECSQL;如果没数据,说明ADOQS.Eof为真,也就是没有选出数据来。
showmessage(ADOQS.SQL.Text);然后把show出来的结果在查询分析器里执行一下
inputbox('','',ADOQS.SQL.Text);
而且当我showmessage(ADOQS.Fields.fieldbyname('dl').AsString)时 说找不到'dl'
end;
ADOQW.Prepared ;
memo1.text := ADOQW.sql.text;
ADOQW.ExecSQL ;
ADOQS.Next;
然后把memo1.text拷贝到sql查询分析器里看看行不行
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) 然后就开始没反应了 也没显示出错信息!!
帮帮忙了