【问题标题】:2 TADOQUERY master and Detail tablefilter insert2 TADOQUERY master and Detail tablefilter insert
【发布时间】:2010-05-29 18:42:37
【问题描述】:

我如何使用 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;

【问题讨论】:

    标签: delphi tadoquery


    【解决方案1】:

    如果您在详细信息中将数据源设置为主数据源,那么您可以尝试在详细信息中使用与主数据中的字段匹配的参数。因此,如果在 master 中您有以下内容: SELECT field1, field2, field3 FROM table 然后在详细信息中: SELECT d_field1, d_field2, d_field3 FROM detail WHERE some_field=:field1 使参数‘field1’与master返回的字段(field1)同名。

    【讨论】:

      【解决方案2】:

      从古代历史来看(即五年前),使用 VCL 数据集自动处理主/详细信息的方式是通过设置相关 TDatasource 组件的属性。示例见此处:http://delphi.about.com/library/howto/htdbmasterdetail.htm

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-24
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多