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中,有什么办法能实现吗?或用其他方式实现也可以,我都想了好几天了,紧急求救,多多感谢!
...全文
234 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,有人相信吗?哈哈!!!!!!
notepad--v3.4 windows Notepad--v3.4.0-plugin-Installer.exe 是win10下面的插件版安装包,会关联右键菜单等。 Notepad--v3.4.0-win10-portable.zip 是绿色免安装版本,解压即用,不会关联右键菜单注册表。 Ndd-quick-v3.3.0-win10-single-portable.zip 是单文件绿色免安装版,只包含皮肤和vc依赖库,不含插件、不含文件对比,主推轻量级、快速反应。适合只需要纯粹、轻快级,文本编辑器的用户。不定期发布。 MacOS 版本 Notepad--v3.4.0-mac_x64_12.3.dmg 是macos 12.x 及以后的版本。 Notepad--v3.4.0-mac_arm64_12.3.dmg 是macos 12.x 及以后 arm64 m1/m2芯片 的版本。第一次安装时,需要在设置偏好里面,放开苹果的安装限制,才能正常识别,请自行放开设置一下。 如果还是有问题,参考帖子:#I8JTJN:macOS Sonoma 14.1.1安装提示已损坏:macOS Sonoma 14.1.1安装提示已损坏 uos com.hmja.notepad_3.4.0.0_amd64.deb 是x64 cpu架构的uos系统对应的ndd版本。 其余系统版本后续会发布。 3.4 修改如下: 1 支持文件标签拖入拖出到新窗口的效果。 2 windows下修改快捷键放开。 3 按行号切分大文件。 4 大文件打开时,在文件夹查找所在目录,macos下可能会崩溃问题。 5 目录右键增加删除文件、文件夹功能。 6 补充深色主题下rust语法高亮; lisp 语法失效问题。 7 linux下信号打开文件,不拿锁,打开文件在消息队列去做。

2,507

社区成员

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

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