我在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中构建访问数据库的程序的教程吗?
答案 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