2 TADOQUERY master和Detail tablefilter insert

时间:2010-05-29 18:42:38

标签: delphi tadoquery

我如何使用2 Tadoquery并像Tadoquery(主)Tadotable(细节)一样工作!!

    var  tempvar : Variant;             
    begin  
    Edit1.text:=Ano.value;
    Begin  
      with Ano_planeamento do //Laço de consulta por codigo  
       Begin  
        Close;    
        SQL.Clear;  
        SQL.Add('SELECT * from planeamento_ano');  
        SQL.Add('Where ano LIKE ''%'+Edit1.text+'%''');  
        Open; 
        end; 
     end; 
     tempvar := Ano_planeamento.fieldbyname('ano').value;  
     planeamento.close;  
     if tempvar <> null then 
     begin  
      planeamento.SQL.Clear; 
      planeamento.SQL.add('SELECT * FROM planeamento');  
      planeamento.SQL.add(' WHERE ano = ');  
      planeamento.SQL.add('''' + tempvar + '''');   
       // here i nead to filter by ....        
      planeamento.open;

2 个答案:

答案 0 :(得分:2)

如果在详细信息中将数据源设置为主数据,则可以尝试使用与主数据库中的字段匹配的detial中的参数。因此,如果在主人中你有以下内容: SELECT field1, field2, field3 FROM table 然后在细节中你有: SELECT d_field1, d_field2, d_field3 FROM detail WHERE some_field=:field1 这样参数'field1'与从主服务器返回的字段(field1)的名称相同。

答案 1 :(得分:0)

从古代历史(即五年前)开始,使用VCL数据集自动处理主/细节的方法是在相关的TDatasource组件上设置属性。请参阅此处以获取示例:http://delphi.about.com/library/howto/htdbmasterdetail.htm

否则只是动态更改SQL中的WHERE子句以获取详细数据集,或者在详细数据集上设置Filter属性:http://docwiki.embarcadero.com/VCL/en/DB.TDataSet.Filter