在窗体显示时加载TComboBox中的内容(从某一表中读取),
我做了一个过程,想对所有类似的TComboBox通过参数传递调用此过程。
 现我把代码显示如下:(错误提示说from附近有语法错误,请高手给予提示)procedure Tfrmfile.GetFromTableToCombox(fieldname,tablename:string;comboxname:tcombobox);
var
  AdoQry:TadoQuery;
  StrTableName:string;
  StrFieldName:string;
  tmpComboxName:Tcombobox;
begin
  fieldname:=strfieldname;
  tablename:=strfieldname;
  tmpcomboxname:=tcombobox.Create(self); 
  comboxname:=tmpcomboxname;
  adoqry:=tadoquery.Create(self); 
  AdoQry.connection:=datam.ADOConn;
  with adoqry do
    begin
      close;
      sql.Add('select ' + fieldname + ' from ' + tablename);
      Active:=true;
      open;
if recordcount>0 then
      begin
        first;
        while not eof do
          begin
            comboxname.Items.Add(fieldbyname(fieldname).AsString);
            next;
          end;
      end;
    end;
end;

解决方案 »

  1.   

    DBLookupComboBox在你这个程序中不能用吗?如果只是读取字段的值,那你就用这个吧DBLookupComboBox!
      

  2.   

    你将这句
    'select ' + fieldname + ' from ' + tablename
    showmessage出来看看
    fieldname与tablename是否正确
      

  3.   

    procedure TForm1.CmbFill(cds: TClientDataSet; ssql: string; cmb: TComboBox);
    begin
       //cmb.Clear;
       cmb.clear;
       socketread.Open;
       cds.Data := socketRead.appserver.TT_S006002(ssql);
       cds.First;   while not cds.Eof do
       begin
          cmb.Items.add(cds.fields[0].asstring);
          cds.Next;
       end;   socketRead.close;end;
    自己看看,应该可以给一些帮助
      

  4.   

    Spetime := 'select Perivalue from TT_PeriOfTime ';
       cmbFIll(CdsCmb, sgroup, Cmbgroup);
      

  5.   

    str:字段名  strtablename:表名  AdditionStr:其他的搜索条件。
    procedure GetComboList(Combo: TComboBox; str: string;
      strtablename: string; AdditionStr: string = '');
    var
      i: Integer;
      dsTemp: TADODataSet;
    begin
      dsTemp := TADODataSet.Create(Application);
      dsTemp.Connection := FrmShebeiMain.ADOConnection1;
      dsTemp.CommandText := 'select distinct ' + str + ' from ' + strtablename +
        ' where ' + str + '<>' + ''' ''' + AdditionStr;
      dsTemp.filtered := false;
      dsTemp.Active := True;
      Combo.Items.Clear;
      combo.text := '';
      if dsTemp.RecordCount > 0 then
      begin
        dsTemp.First;
        Combo.Items.Add('');
        for i := 0 to dsTemp.RecordCount - 1 do
        begin
          Combo.Items.Add(Trim(dsTemp.FieldByName(str).AsString));
          dsTemp.Next;
        end;
      end;
      dsTemp.Free;
    end;
      

  6.   

    procedure GetFromTableToCombox(FieldName,TableName:string;
          ADOConnection:TADOConnection;Strings: TStrings);
    -----------
    procedure TForm1.GetFromTableToCombox(FieldName,TableName:string;ADOConnection:TADOConnection;
    Strings:TStrings);
    var
      AdoQry:TadoQuery;
    begin
      adoqry:=tadoquery.Create(self);
      AdoQry.connection:=ADOConnection;  Assert((trim(FieldName)<>'') and (trim(TableName)<>''),'SQL 语句错误');  with adoqry do
      begin
        sql.Add('select ' + FieldName + ' from ' + TableName);
        open;    if RecordCount>0 then
        begin
          first;
          while not Eof do
          begin
            Strings.Add(FieldByName(FieldName).AsString);
            next;
          end;
        end;
        close;
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      GetFromTableToCombox('sup_id','supp',ADOConnection1,ComboBox1.Items)
    end;