关于表关联的问题,求助!!!!!!!!!!!

tinylion971 2003-06-11 08:03:08
我先建了一个表A,里面有两个字段“供应商编号”“供应商名称”,输入了几条记录。

又建了一个表B,里面有字段“签订日期”“供应商编号”“供应商名称”,我想在表B输入记录的时候,“供应商编号”“供应商名称”两个字段能从表A中读取,(例如有个象
combox的框用于让我直接选出表A中已填入的记录,放到表B里),请问如何实现呀??
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Acquarius 2003-06-12
  • 打赏
  • 举报
回复
你的表A和表B存在大量的重复字段啊,而且设计也不符合3NF。

表A: SupplierID, SupplierName
表B:DateIn, SupplierID

在表B中输入数据时,我假定你是用一个窗体来做的。那么要用到DBLookupCombobox。

对于DBLCB,你的设置要包括:

Datasource: TableB对应的DS;
Field: SupplierID;
LookupSource: TableA对应的DS;
KeyField: SupplierID;
还有一个Field(名字一下子想不起来了):SupplierName

这样,你在输入时点那个DBLCB,弹出来的是名称,选择一个后将对应的SID存到表B中去。
tinylion971 2003-06-12
  • 打赏
  • 举报
回复
TO Northwindrocker(北风)

能不能输入B表的记录时,DBGRID焦点跳到了如 “供应商”字段,就能有象COMBOX的东西直接选出记录填入B表,这样就不用 INSERT 语句了呀!

所以问题就是COMBOX怎么和DBGIRD的某个记录关联起来那?
tinylion971 2003-06-12
  • 打赏
  • 举报
回复
TO redhf(农民的儿子)

"同时在B表对应的TABLE或QUERY中为“供应商名称”建立LOOKUP字段"

不太懂,能不能说清楚一点,什么叫建立 LOOKUP字段那???
hammer_shi 2003-06-11
  • 打赏
  • 举报
回复
一楼的正确~
redhaifeng 2003-06-11
  • 打赏
  • 举报
回复
用DBLOOKUPCOMBOBOX控件可以实现你的想法!同时在B表对应的TABLE或QUERY中为“供应商名称”建立LOOKUP字段,这样在DBGRID中都可以自动显示了
Northwindrocker 2003-06-11
  • 打赏
  • 举报
回复
给你说个大概的思路
你先把A表的内容取出来加到COMMBOBOX中然后选择在确定后再通过COMBOBOX中的内容在A中取出相应的记录写到B中
COMBOBOX加内容这样写
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select 供应商编号 from A');
adoquery1.open;
while not adoquery1.eof do
begin
combobox1.items.add(adoquery1.fileds[0].asstring);
adoquery1.next;
end;
然后在你选择后确定的时候把供应商编号供应商名称写到B中
adoquery1.close;
adoquery1.sql.clear;
adoqeury1.sql.add('insert into B (签定日期,供应商编号,供应商名称)');
adoquery1.sql.add('(:v1,:v2,:v3)');
adoqeury1.excutsql;
这之前你可以通过SQL取出供应商的编号和名称赋给v2,v3同时把时间赋给V1

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧