ComboBox赋值问题(100分)

  • 主题发起人 zhouwenlin_1
  • 开始时间
Z

zhouwenlin_1

Unregistered / Unconfirmed
GUEST, unregistred user!
from1 中有2个ComboBox
ComboBox1 对应 供应商表 (供应商编号,供应商名称)
供应商名称
dm.ADO_provider.Open;
(ADO_provider为ADOTable)
while not dm.ADO_provider.Eofdo
begin
cfrm_caigoudan.ComboBox1.Items.Add(dm.ADO_provider.FieldByName('CompanyName').AsString);
dm.ADO_provider.Next;
end;

ComboBox2 对应商品表(商品编号,商品名称,供应商名称)(ADO_product为ADOTable)
怎样为ComboBox2 赋值的时候显示出来的信息是ComboBox1对应的那个供应商的商品?
这个问题还是没整明白?哪位能给个详细的解答啊,兄弟在这里先谢谢了!
 
你可以使用 ComboBox1 addobject 进行操作·~!~
我举个例子
定义你的供应商表 结构:
PCOMPANY= ^TCOMPANY;
TCOMPANY=record
GOODSNO: integer;
GOODSNAME: string;
end;
//加
var
p: PCOMPANY;
p^.GOODSNO:= dm.ADO_provider.FieldByName('NO').asinteger;
p^.GOODSNAME:= dm.ADO_provider.FieldByName('CompanyName').AsString;
ComboBox1.Items.AddObject(p^.GOODSNAME, Tobject(p));
//取
PCOMPANY(ComboBox1.Items.Objects[ComboBox1.ItemIndex])
......下面就要你自己完成了,
 
兄弟,这个问题你不是解决了吗?
你是想要根据商品取供应商呢,还是根据供应商取商品呢,还是既可以根据供应商取商品,还可以根据商品取供应商?
 
你这个商品表有问题
那个最后一个字段不应该是〔供应商名称〕应该用[供应商编号]才可以,否则不符合数据库的主外键约束。。。。
一定要用AdoTable吗?
那就只能这样了。
procedure Tcfrm_caigoudan.ComboBox1Change(Sender: TObject);
begin
cfrm_caigoudan.ComboBox2.Clear;//清空ComboBox2内容
dm.ADO_product.Open;
// (ADO_provider为ADOTable)
dm.ADO_product.Filtered := False;//过滤为否
dm.ADO_product.Filter := 'CompanyName = ' + QuotedStr(ComboBox1.Text);//设置过滤条件为ComboBox1的供应商编号
dm.ADO_product.Filtered := True;//过滤为是
while not dm.ADO_product.Eofdo
begin
cfrm_caigoudan.ComboBox2.Items.Add(dm.ADO_product.FieldByName('商品名称').AsString);
dm.ADO_product.Next;
end;
end;
 
想根据供应商取商品,以前你写那个我试了,没整出来,呵呵呵小弟新学,有点笨,麻烦你了
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
ComboBox1: TComboBox;
//供应商
ComboBox2: TComboBox;
//商品
procedure FormShow(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
self.ADOQuery1.Close;
self.ADOQuery1.SQL.Text := '取供应商的SQL语句';
self.ADOQuery1.Open;
self.ADOQuery2.Close;
self.ADOQuery2.SQL.Text := '取商品的SQL语句';
self.ADOQuery2.Open;
self.ComboBox1.Items.Clear;
self.ADOQuery1.First;
while not self.ADOQuery1.Eofdo
begin
self.ComboBox1.Items.Add(self.ADOQuery1.fieldbyname('CompanyName').AsString);
self.ADOQuery1.next;
end;
self.ComboBox1.ItemIndex := 0;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
self.ADOQuery2.Filtered := false;
self.ADOQuery2.Filter := Format('CompanyName = ''%s''',[ComboBox1.Text]);
self.ADOQuery2.Filter := true;
self.ComboBox2.Items.Clear;
self.ADOQuery2.First;
while not self.ADOQuery2.Eofdo
begin
self.ComboBox2.Items.Add(self.ADOQuery2.fieldbyname('商品').AsString);
self.ADOQuery2.Next;
end;
self.ComboBox2.ItemIndex := 0;
end;

end.
 
谢谢,终于解决了,呵呵呵
 
ComboBox2.Items.Objects[ComboBox1.ItemIndex])
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部