我用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;其中有用到存储过程的 程序的结果就是显示 ‘成功!’ 
大家都来帮帮忙了 很急

解决方案 »

  1.   

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

  2.   

    ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '+LinBan);
    showmessage(ADOQS.SQL.Text);然后把show出来的结果在查询分析器里执行一下
      

  3.   

    把SQL语句输出出来到查询分析器里执行一下看看是什么错误
    inputbox('','',ADOQS.SQL.Text);
      

  4.   

    还有 这个语句ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '''+LinBan+'');好像有错 但我不知道错在哪 
    而且当我showmessage(ADOQS.Fields.fieldbyname('dl').AsString)时 说找不到'dl'
      

  5.   

    ADOQS.SQL.Add('execute mytfdarea_XiaobanSelect '''+LinBan+''); 关于这句语句 在showmessage(adoqs.sql.text)时 少了右边的单引号
      

  6.   

    showmessage('没有进行以上选择!');
              end;
              ADOQW.Prepared ;
    memo1.text := ADOQW.sql.text;
              ADOQW.ExecSQL ;
              ADOQS.Next;
    然后把memo1.text拷贝到sql查询分析器里看看行不行
      

  7.   

    要不看看这个吧
    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) 然后就开始没反应了 也没显示出错信息!!
    帮帮忙了