0

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;
4

2 に答える 2

2

詳細でデータソースをマスターに設定した場合、マスターのフィールドに一致するパラメーターを詳細で使用してみることができます。したがって、マスターに次がある場合: SELECT field1, field2, field3 FROM table 次に、詳細にある場合: SELECT d_field1, d_field2, d_field3 FROM detail WHERE some_field=:field1 パラメータ 'field1' が、マスターから返されたフィールド (field1) と同じ名前を持つようにします。

于 2010-05-30T01:10:22.677 に答える
0

古代の歴史 (5 年以上前) から言えば、VCL データセットでマスター/ディテールを自動的に処理する方法は、関連付けられた TDatasource コンポーネントにプロパティを設定することでした。例については、http: //delphi.about.com/library/howto/htdbmasterdetail.htmを参照してください。

それ以外の場合は、詳細データセットの SQL で WHERE 句を動的に変更するか、詳細データセットの Filter プロパティを設定します: http://docwiki.embarcadero.com/VCL/en/DB.TDataSet.Filter

于 2010-05-29T20:20:11.387 に答える