如题。在datamodule中有adoconection控件和adoquery控件,已经建立连接unit frm_employees_unit;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, ComCtrls, Mask, DB, ADODB,datomod_link;
  //datomod_link为系统的data module单元名
type
  Tfrm_employees = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
     .............
     procedure FormActivate(Sender: TObject);
  private
     Datamod:Tdatamod_link;//声明窗体所调用的类的实例名
  public
     .............
  end;
procedure Tfrm_employees.FormActivate(Sender: TObject);
var
   SqlText:string;
begin 
    Datamod:=Tdatamod_link.Create(nil);//创建类的实例
    Datamod.data_adoq1.Close ;
    Datamod.data_adoq1.SQL.Clear;
    SqlText:='selcect.......from......where......';//该select查询涉及到三个表的连接查询
    Datamod.data_adoq1.SQL.Add(SQLText);
    Datamod.data_adoq1.open;那么,在DBedit中的Datafield字段怎么跟这个查询结果的各个字段对应上啊?它是在程序中从Tstring对象中给SQL属性赋值的,如果在属性窗口中直接赋给SQL那很好办,但我的adoquery1在数据摸块中是给各个窗口共享的,只能动态赋值了怎么解决哈?

解决方案 »

  1.   

    补充下:data_adoq1就是data module中的adoquery控件名
      

  2.   

    用DBEDIT的话,你要在窗体上放一个DATASOURCE1,然后设置它的dataset:DATA_ADOQ1
    然后dbedit1的datasource设置为datasource1
      

  3.   

    用combobox的话
    with  data_adoq1 do
    begin
      close;
      sql.clear;
      sql.add('select name from tablename');
      open;
      while not eof do
      begin
        combobox1.items.add(fieldbyname('name').asstring);
        next;
    end;
    end;
      

  4.   

    TO wudi_1982(Delphi & Vs.NET:
    我觉得你忽略了一个问题,DBedit只能显示一个字段,那要设置DataField属性,但SQL属性是在程序中指定的..设计期间是无法指定的..我问的就是在程序的什么地方怎么指定这个属性?combobox应该是循环赋值吧?这个清楚了。