dbgrid或dbgridEh中某一字段的值从另一个表中提取,如何实现?对面的大虾看过来!!看过来!!!!!有MM

dashi111 2005-05-17 02:09:26
是这样的有两个表
表product
id name
1 红豆
2 绿豆
3 黄豆

表order
name amount(数量)
红豆 3
黄豆 6

order中字段name是product.name的子集,要求对order有插入,删除,修改的操作,order中name做成多选框形式(内容为product的所有name值)当选中时,且后边的amount不为空才将信息上传(批量上传)至数据库表order中,有什么办法能实现吗?或用其他方式实现也可以,我都想了好几天了,紧急求救,多多感谢!
...全文
229 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dashi111 2005-05-18
  • 打赏
  • 举报
回复
To:Hellolongbin

呵呵,是想两个都显示呢,因为order中的name是product的子集,所以如果是表order里的内容则在product.name前边打勾,不知道能不能实现呢?唉,好像是我表达能力不太好呀!
kmlinda 2005-05-17
  • 打赏
  • 举报
回复
create table product(id number(3),name varchar2(10));
create table order(name varchar2(10),amount number(50);
insert into product(1,'红豆');
insert into product(2,'绿豆');
insert into product(3,'黑豆');
select p.name,nvl(o.amount,0) amount from product p,order o where p.name=o.name(+);
NAME AMOUNT
黑豆 0
红豆 0
绿豆 0


delphi中:
with adoquery1 do
begin
active:=fasle;
sql.clear;
sql.add(' select p.name,nvl(o.amount,0) amount from product p,order o ');
sql.add(' where p.name=o.name(+) ');
active:=true;
end;
dbgrid.dataSource:=adoquery1;

这时在adoquery的update事件中写以下代码
begin
if :amount>0 then
insert into order values(:name,:amount);
end if;
end;
hellolongbin 2005-05-17
  • 打赏
  • 举报
回复
order中name做成多选框形式(内容为product的所有name值)当选中时,且后边的amount不为空才将信息上传

是在界面上显示product中name字段的内容供用户选择,但不是combobox下拉形式的,是把所有内容用checkbox形式显示,并且后边对应Edit框填写与之对应的产品数量,最后传至表order中!明白?
----------------------------------------------
又有点晕,到底界面上显示的是哪个表的name字段?

在上传之前判断后面的edit框有没有内容不用说吧,教你一个简单的方法:你可以放两个query控件,一个操纵表product,一个操纵表order,虽然有点麻烦但简单易懂且不易出错
dashi111 2005-05-17
  • 打赏
  • 举报
回复
To woshilyy:
可是checkbox.caption是从表product的name字段提取出来的,关键就在这!!且供选则的checkbox个数就是表product的纪录个数(name主键)
woshilyy 2005-05-17
  • 打赏
  • 举报
回复
要传回ORDER表
用一条INSERT INTO 语句就可以啦
woshilyy 2005-05-17
  • 打赏
  • 举报
回复
if checkbox1.checked then
begin

s1:='select a.acount from order a where a.name=checkbox.caption';
adoquery1.sql.text:=s;
edit1.text:=adoquery1.fieldbyname('acount').asstring;

end;
先把ADO 连起来
这样就可以把数据显示出来啦
narutokkxi 2005-05-17
  • 打赏
  • 举报
回复
接分~`` 向带星的同志致敬!
dashi111 2005-05-17
  • 打赏
  • 举报
回复
MM可不都是美女呦!!
dashi111 2005-05-17
  • 打赏
  • 举报
回复
To 龙飞白水

dbgrid的datasouce对应 表order,那么dbcheckbox中怎么提取表product中name字段的所有内容供选择呢?能说的详细些吗?
dashi111 2005-05-17
  • 打赏
  • 举报
回复
是在界面上显示product中name字段的内容供用户选择,但不是combobox下拉形式的,是把所有内容用checkbox形式显示,并且后边对应Edit框填写与之对应的产品数量,最后传至表order中!明白?
hellolongbin 2005-05-17
  • 打赏
  • 举报
回复
怎么没大看懂?你是要在程序界面上显示order的内容供客户选取么?批量上传是什么意思?我没看出你的问题难点在哪,选择的时候直接判断amount的值不可以么?
或者你说的再详细些,我最喜欢帮MM,呵呵(擦口水中……)
hellolongbin 2005-05-17
  • 打赏
  • 举报
回复
我是进来看MM的,呵呵
leetzh 2005-05-17
  • 打赏
  • 举报
回复
可以增加一个字段(DBCheckBox),用来判断是否需要上传.另外amount为空的用sql语句就可以过滤。
dashi111 2005-05-17
  • 打赏
  • 举报
回复
自己先顶了,如果我说我是MM,有人相信吗?哈哈!!!!!!

2,497

社区成员

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

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