(急)关于DBGrid的使用(100分)

  • 主题发起人 主题发起人 DickWu
  • 开始时间 开始时间
D

DickWu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想生成这样一个DbGrid来显示数据
数据源是3个TQUERY 加Source,
主表单如下:
Booktype_ID,Style_ID,BookName

另外两个是BookType_ID,TypeName
Style_ID,StyleName
凡是ID类的数据都是int类型的,其他是string类型的数据

我想在dbgrid中这样显示:
BookName,StyleName,BookName

就是说用另外两个数据源中的名称来代替原来主表中的相应代码
我改怎么做呢?
我是个处学者,请大家说的详细点,不要认为问题很简单就不说了,好吗?




 
可以加入一个TQUERY组件使用
SELECT ..FROM语句选出要显示
的字段,再将DBGRID的数据源与
TQUERY关联即可,满意否??
 
用Table1打开Booktype_ID表,用table2打开Style_ID表;
在query的Fields editor中加入所有字段,再修Style_ID和Booktype_ID字段对应的Field
如下:
procedure TForm1.Query1Style_IDGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
text:=table2.lookup(['Style_ID'],(Sender as Tfield).asinteger,'Style_Name');
end;
procedure TForm1.Query1Booktype_IDGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
text:=table1.lookup(['Booktype_ID'],(Sender as Tfield).asinteger,'Booktype_Name');
end;

 
amo说的我明白了,kgb你说的我还不明白,能说详细点吗?
具体怎么做呀?
 
这样可不可以:
SELECT tb1.bookname,tb2.typename,tb3.stylename from
tb1,tb2,tb3 where (tb1.Booktype_ID=tb2.Booktype_ID)
and (tb1.styletype_ID=tb3.styletype_ID)

只用一个tquery就可以了.
 
cAkk的方法很好啊,我再试试,
amo, 我没找到你说的GetText事件啊,我在TQuery, DBGrid中都找了,没找到,
在FieldEdit中也没找到,不知道这个事件在哪里?
另外,你说的LookUp是table的方法,请问在TQuery中是否有这个事件?


我连这里很慢,这次用了半小时才看到这个页面,上来一次不容易,希望大家能帮帮我,
非常感谢
 
在query控件上按右键,弹出菜单有个Fields editor......
 
你可以在那个小小的QUERY控件上双击你的鼠标,然后
你就能看见个小窗口,名叫Fields Editor。
然后在那个窗口上按鼠标右键,就有add field,
delete field,add all field.使用add field
选项,你就可以加入一个TField类的对象,这个对象
会自动和你连接的DBGrid相适应。你选中列在Field
editor里面的那行,就能从object inspacter那里
的event页找到相应的事件了,有很多呢!这个问题,也
可以用“计算字段”来解决吧!计算的事件好象是OnCalc
什么的。
 
不好意思,再问一下
类似前面的显示结构,如果当中多了一层关系,
比如还有另一个表idx(字段为id1,id2)
主表中Booktype_ID,Style_ID,BookName中的bookType_id不是直接对应
到表 BookType_ID,TypeName 中的BookType_id,而是对应的该
idx中的id1, 而idx中的id2才对应表 BookType_ID,TypeName
中的BookType_ID,

在这种情况下怎么在dbgrid中显示
BookName,StyleName,BookName

用select语句可以直接实现吗? 或者其他比较简洁的办法?

 
后退
顶部