我用的是FOXPRO的表,表结构为tsmh\dzh\jq,分别为字符\字符\日期型的
我用的查询语句为sql.add('select * from sck where dzh=:xuehao');
parambyname('xuehao').AsString:=edit1.text;但是查询的结果是所有tsmh相同而jjq不同的记录如果有三条,可结果只显示一条,是否因为tsmh是关健字段,如果是这样的话该怎么办,还是说些记录被锁了而没激活,foxpro是否有这功能啊,难道一定要改表结构吗?请高手帮忙啊!

解决方案 »

  1.   

    你是放在什么地方看数据的 啊
    你把数据放在 dbgrid中看就有三条啊
      

  2.   

    但是我用label1.caption:=adoquery.recordcount等出结果也是三啊
      

  3.   

    DBGrid1 <-> DataSource1 <-> AdoQuery1是这样连接的吗?AdoQuery1.RecordCount是3
    而在DBGrid1中只显示1条?
      

  4.   

    DBGrid1 <-> DataSource1 <-> AdoQuery1是这样连接的吗?AdoQuery1.RecordCount是3
    而在DBGrid1也显示3条,可实际上符合条件的有八条
      

  5.   

    select * from sck where dzh=:xuehaoSQL文単独執行時符合条件的有八条?
    査査有没有大小写等問題...
      

  6.   

    你的意思是显示的3条记录是tsmh值都不相同的,而如果是重复的值则不包含?
    如果是这样,估计你的ADOQuery可能哪设置错了。
      

  7.   

    大小写没问题,我把query1删掉再放一个,按默认设置还是不行。
      

  8.   

    datasource //dataset?
               //query1?
      

  9.   

    源程序很简单啊,只有单一的查询功能
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var n:integer;
    begin
     if key=vk_return then
    begin
        with query1 do
         begin
          close;
          sql.Clear;
          try
          sql.add('select * from sck where dzh='''+edit1.text+'''');      open;
          except
          sql.Clear;
          end;
            n:=query1.recordcount;
            label2.Caption:=inttostr(n);
           if query1.recordcount>=1 then
            begin
            label1.Visible:=true;
            label1.Caption:=edit1.text+'共借书'+inttostr(n)+'本';
            edit1.Text:=''
            end
            else begin
            label1.Visible:=true;
            label1.Caption:=edit1.Text+'无借书记录';
            edit1.text
            end;
          end;
     end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    query1.databasename:=extractfiledir(application.exename);
    query1.Active:=true;
    end;procedure TForm1.exit2Click(Sender: TObject);
    begin
    close;
    end;