Delphi数据库访问数据源中的数据

时间:2014-04-16 13:39:56

标签: database delphi datasource

我在Delphi中构建了一个数据集,其中我有一个ADOQuery,它从表中选择2个列...我将该ADOQuery中的一个列拖放到一个表单中,如何从该列中获取我的值。我想将这些值放入组合框中。

unit SCArabica;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, Mask, DBCtrls, Grids, DBGrids;

type
  TForm1 = class(TForm)
ComboBox1: TComboBox;
    DBGrid1: TDBGrid;
    Label9: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  published
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

DATASET代码

unit SCArabicaDataSet;

interface

uses
  SysUtils, Classes, FMTBcd, DB, SqlExpr, ADODB;

type
  TDataModule1 = class(TDataModule)
    ad: TADOConnection;
    ADOQuery1: TADOQuery;
    ADOQuery1CategoriePermisID: TIntegerField;
    ADOQuery1Categorie: TWideStringField;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.

我是Delphi的新手你能指导我一些关于如何在Delphi中构建访问数据库的程序的教程吗?

2 个答案:

答案 0 :(得分:5)

在我看来,一个好的设计是在TDataModule1中添加一个方法来从数据集中获取记录并填充TStrings。然后从主代码中,您只需传递combobox.items。

procedure TDataModule1.FetchRecords(OutStrings : TStrings);
begin
    ADOQuery1.SQL.Text := 'SELECT COMPANY FROm COMPANIES WHERE COUNTRY="BELGIUM"';
    ADOQuery1.Open;
    while not ADOQuery1.Eof do begin
        OutStrings.Add(ADOQuery1.Fields[0].AsString;
        ADOQuery1.Next;
    end;
end;

然后你可以用以下形式编写代码:

ComboBox1.Items.Clear;
DataModule1.FetchRecords(ComboBox1.Items);

我只是在脑海中打出这个,所以也许是一些小错误,但你明白了......

答案 1 :(得分:1)

 while not dm1.ADOQuery2.Eof do
        begin
             DBComboBox1.Items.Add(dm1.ADOQuery2.Recordset.Fields['IDMasina'].Value) ;
             dm1.ADOQuery2.Next;
        end;

这是我的解决方案。

dm1是一个数据源
ADOQuery2是一个DataSet