Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from docu_table where  docu_table.zh_num=:zhang and docu_table. j_num=:jie');
Query1.ParamByName('zhang').Value:=trim(DBEdit1.Text);
Query1.ParamByName('jie').Value:=trim(DBEdit2.Text);
Query1.Prepare;
Query1.Open;showmessage(inttostr(Query1.RecordCount));//此处输出为何是-1?
如上所示的类似代码在运行上面这部分以前,已运行过两次,都没有问题,但执行到这部分时就出错(RecordCount为-1),请问错在哪儿?

解决方案 »

  1.   


      看看你的DBEdit1.Text 和DBEdit2.Text 中的数据是否与数据库中表的中的数据类型与值相同不
      

  2.   

    数据库中是varchar型,那该怎么改才能与DBEdit中的类型匹配?
      

  3.   

    DBEdit 中的内容是查询出来的某张表中的固定字段的值 除了上面那段代码还有其他的没?你可以把DBEdit 换成Edit 试试,Edit的属性中输入值试试
      

  4.   

    to chb5210():
    除了上面那段代码还有其他的两个也用了相同的DBEdit,要避免重用吗?
    另外,Edit我试了一下,查出来的RecordCount还是为-1???
      

  5.   

    varchar型会自动加入空格补满所设的长度,将其改为nvarchar
    或者
    Query1.ParamByName('zhang').Value:=trim(DBEdit1.Text);
    Query1.ParamByName('jie').Value:=trim(DBEdit2.Text);
    =================>Query1.ParamByName('zhang').Value:=DBEdit1.Text;
    Query1.ParamByName('jie').Value:=DBEdit2.Text;
      

  6.   

    试试
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from docu_table where  docu_table.zh_num='''+DBEdit1.Text+''' and docu_table. j_num='''+DBEdit2.Text+'''');
    query1.open;
      

  7.   

    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from docu_table where  docu_table.zh_num = '
                   +chr(39)+DBEdit1.Text+chr(39)+' and docu_table. j_num =' 
                   +chr(39)+DBEdit2.Text+chr(39));
    query1.open;
    showmessage(inttostr(Query1.RecordCount));//