DBGrid中显示不同表的 内容问题

xhj12077021 2007-01-19 10:34:18
有 俩个表,A,B。A和B是1:N的关系,显示A表的内容到DBGrid很简单,我现在要做的是:在DBGrid显示A表内容后,双击DBGrid上的某个记录,就可以把和这个记录向对应的B表中的内容显示到DBGrid上来,请问这个转换怎么做?
...全文
221 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhj12077021 2007-01-22
  • 打赏
  • 举报
回复

这样啊
这样能实现吗?
当前"双击"ID为7的这一行则显示为(B表中内容):

ID Item Books
7 1 Book1
7 2 Book2
7 3 Book3

A表显示在DBGrid:
ID Name
6 Joe
7 Mary
8 John
的 这些就不显示了。

jianke5555 2007-01-22
  • 打赏
  • 举报
回复
楼主的意思是:?
A表正常显示在DBGrid:
ID Name
6 Joe
7 Mary
8 John

当前"双击"ID为7的这一行则显示为:
ID Name
6 Joe
7 Mary
ID Item Books
7 1 Book1
7 2 Book2
7 3 Book3
8 John
是这个效果吧?

哈哈...可惜DBGrid没法实现,推荐你用InfoPower控件,完全可以实现这个功能!!!
xhj12077021 2007-01-22
  • 打赏
  • 举报
回复
DBGrid显示隶属关系?就像树形结构那样,比如省下面是该省的市,市下面是该市的县.
xhj12077021 2007-01-22
  • 打赏
  • 举报
回复

好的
A,B。A和B是1:N的关系,可以级联删除,更新,首先显示A表的内容到DBGrid,我现在要做的是:在DBGrid显示A表内容后,双击DBGrid上A表的某个记录,就可以把和这个记录向对应的B表中的内容显示到DBGrid上来,开始在DBGrid显示的A表的内容不在显示,而是显示B表中和A表相对应的内容。请问这个转换怎么做
xhj12077021 2007-01-19
  • 打赏
  • 举报
回复
commandtext
提示不能修改
呵呵

qzmp_sc 2007-01-19
  • 打赏
  • 举报
回复
使用ADOQuery1,DataSetProvider1,ClientDataSet1,DataSource1,DBGrid1
显示A表数据你自己做了
当想显示B表数据时,在DBGrid1的OnCellClick事件中写入:
var
sTxm : string;
begin
sTxm := ClientDataSet1.FieldByName('A表和B表关联的列名').AsString;
with ClientDataSet1 do
begin
close;
commandtext := 'select * from table where 列名 = '''+sTxm+'''';
open;
end;
end;
hongqi162 2007-01-19
  • 打赏
  • 举报
回复
你的意思是要将两个结果集的内容显示到一个dbgrid中?

那样就是关联查询啊?根据你选择的内容重新做一次查询?

问题描述的不清楚,

最好做一个图例 大家才可以帮你解决问题
xhj12077021 2007-01-19
  • 打赏
  • 举报
回复
呵呵
也许是我没有表达清楚吧
谢谢
我想你这样写是可以的
但是在 运行完
就 不可以了


qzmp_sc 2007-01-19
  • 打赏
  • 举报
回复
你的意思就是这样表达的,我当然只能这样给你解答咯
xhj12077021 2007-01-19
  • 打赏
  • 举报
回复
谢谢 qzmp_sc(你是白云~我是乌鸦)

hwxnhk0326(殺殺人,灌灌水) (
xhj12077021 2007-01-19
  • 打赏
  • 举报
回复
你说的方法可以 运行成功
但是不时我想要的
xhj12077021 2007-01-19
  • 打赏
  • 举报
回复
DataSetProvider1,ClientDataSet1
我没有用过

刚开始接触D6
qzmp_sc 2007-01-19
  • 打赏
  • 举报
回复
with with do打错了,应该是with adoquery1 do
qzmp_sc 2007-01-19
  • 打赏
  • 举报
回复
.....你连DataSetProvider1,ClientDataSet1都没用过???
算了,你这样改,只使用Tadoquery和DataSource1,DBGrid1行了
先实现显示A表的功能
然后在DBGrid1的OnCellClick事件中写入:
var
sTxm : string;
begin
sTxm := adoquery1.FieldByName('A表和B表关联的列名').AsString;
with with do
begin
close;
sql.clear;
sql.text := 'select * from table where 列名 = '''+sTxm+'''';
open;
end;
end;
__ANDY__WU 2007-01-19
  • 打赏
  • 举报
回复
Close 后再改看看.

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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