form1界面输入的数据存入数据库之后,我想将这条记录显示出来
于是在报表页面form2中用了一个QUERY1,
Query1.close;
Query1.SQL.Clear ;
Query1.SQL.Add('select * from 可防性案件月报表 where 编号=:id');
Query1.Params[0].AsString:=form1.edit1.text ;
Query1.Open;
form1.edit1.text中输入的内容是 :编号
这样以来第一次存入的记录(假设编号为2),可以正确预览,但是把FORM1清空,又输入
编号为3的一条新记录,再次预览结果还是编号为2的这条记录的数据
在FORM1的预览按钮中写了form2.Query1.close;form2.Query1.open;
OPEN 换成都市EXECSQL也不行不知道哪儿出错了,试了了多方法就是不行,或者有其他显示一条记录的更好的方法,请指教

解决方案 »

  1.   

    艳艳姑娘,你的方法好像没错,我不清楚你清空是什么意思试试这个
    sql.add('select * from 可防性案件月报表')
    open;然后Query1.filter:='编号='+form1.edit1.text ;Query1.filtered:=true;
      

  2.   

    你上面的语句放在form2什么事件中,form1中的Edit1.text更新后需再重执行一次,否则显示的还是原来的数据。
    一般将其放在Form2.onshow中或专写一个过程,Form1.edit.text的值更新后再执行form2.show;,这样显示的就是新的数据了。
      

  3.   

    试试这个
    Query1.close;
    Query1.SQL.Clear ;
    Query1.SQL.Add('select * from 可防性案件月报表 where 编号='''+edit1.text+'''');
    Query1.Open;
      

  4.   

    up startjoy(星星雨) 
      

  5.   

    试试
    Query1.close;
    Query1.SQL.Clear ;
    Query1.SQL.Add('select * from 可防性案件月报表 where 编号=' + form1.edit1.text );
    Query1.Open;
      

  6.   

    好像少了点什么,给你加上。
    Query1.close;
    Query1.SQL.Clear ;
    Query1.SQL.Add('select * from 可防性案件月报表 where 编号=:id');
    Query1.Params[0].AsString:=form1.edit1.text ;
    Query1.prepare;
    Query1.Open;
      

  7.   

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    Query1.close;
    Query1.SQL.Clear ;
    Query1.SQL.Add('select * from 可防性案件月?表 where ??=:id');
    Query1.Params[0].AsString:=form1.edit1.text ;
    Query1.Open;
    end;把你是代碼寫到Edit1的Onchange事件中吧!
      

  8.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      sql:string;
    begin
       query1.Close;
       query1.SQL.Clear;
       sql:='select * from 可防性案件月报表 
                      where 编号='+''''+edit1.Text+'''';
       query1.SQL.Add(sql);
       datasource1.DataSet:=query1;
       query1.Open;
    end;