我在执行一个sql语句的时候,将语句赋给Adoquery.sql.text时区Adoquery1.Open后Adoquery1.Isempty=true;我讲sql.text断点下来拿到pl/sql中去执行发现是有记录的,很无解,各位大哥给个提示

解决方案 »

  1.   

    code=Delphi(Pascal)]
     strsql:='Select ID,转出社区 From ZL_双向转诊转出单 Where 个人档案ID="'+grdah+'" And 状态="申请" And 申请时间=(Select Max(申请时间) From ZL_双向转诊转出单 Where 个人档案ID="'+grdah+'" And 状态="申请")';
      try
      {dm.ExecSql(strsql,errmsg);
        m_strout:=m_strout+dm.QrySvr.Fields[0].AsString+'|';}
        dm.ExecSql(strsql,errmsg);
        if not dm.QrySvr.IsEmpty  then
        begin
            m_zzid:=dm.QrySvr.Fields[0].AsString;
            m_zcsq:=dm.QrySvr.Fields[1].AsString;
            result:=0;
        end
        else result:=1;[[/code]
    帖上一段代码
      

  2.   

    參考一下:
    procedure TRes_HrCq_YD_F.GetoldYDCB;
    begin
      cbb_cb.Properties.Items.Clear;
      cbb_cb.Text:='';
      cbb_cb.Properties.Items.Clear;
      qry_getoppo.Close;
      qry_getoppo.SQL.Clear;
      qry_getoppo.SQL.Add( ' select CB from Res_User_Temp where CB is not null group by CB ');
      qry_getoppo.Open;
      while not qry_getoppo.Eof do
      begin
        cbb_cb.Properties.Items.Add(Trim(qry_getoppo.fieldbyname('CB').AsString));
        qry_getoppo.Next;
      end;
    end;  
      

  3.   

    一样的,ADOQuery还是为空的,崩溃了
      

  4.   

    我把那个状态=‘申请’ 去掉之后就可以取到记录,但是这个表是别人提供的,字段都是汉字的,是ADOQuery的bug,还是有别的解决之道,先谢过了
      

  5.   

    不是ado的bug,是不是字段簡繁體的問題認真檢查一下where條件。
      

  6.   

    状态=‘申请’   的字段类型是不是NVARCHAR?如果是就不奇怪了!不过,建议字段名称最好不要用中文,用英文字母表示就可以了!
      

  7.   

    那你Oracle的字符集应该就不是GB的,可能是Unicode的,你用D2010去做可能就没问题了,还有就是把ADO升级到最新的看看驱动更新后能不能解决这个问题
      

  8.   

    你连接数据集的Datasource有不有连接上数据集啊。检查下
      

  9.   

    字符集的问题,你的Oracle连接驱动程序是什么
      

  10.   


    sqloledb.1你知道你说的是不是这个?谢谢大家啊
      

  11.   

    有没有办法解决啊,改数据表字段是不可能了,用D2010也不太现实,有没有别的办法,那位大哥搞过,我现在的环境的Delphi6+oracle 10g
      

  12.   

    考虑不用ADO,ODBC,使用UniDac看看
      

  13.   

    不想那么麻烦就备份好数据库,改Oracle的字符集,如果不能动那就只有用UniDac或者Odac看看