a表包含三个字段num1,num2,num3,即一条记录中有3个不同的人的编号
b表包含2个字段:number,name;number是人的编号
查询表a,显示在dbgrid1内
问题:怎么让dbgrid1显示人的姓名而不是编号?(保存时,存编号而不是姓名)
请 高手指点,谢谢!!
b表包含2个字段:number,name;number是人的编号
查询表a,显示在dbgrid1内
问题:怎么让dbgrid1显示人的姓名而不是编号?(保存时,存编号而不是姓名)
请 高手指点,谢谢!!
解决方案 »
- bsSkinPopupMenu中Frame中怎么显示?
- 数据库移地问题,从内地到香港数据搬移出现丢失!
- 有关图片存入数据库的 问题
- 誰知道DELPHI大富翁为什么确认不了帐号?
- ■■■Delphi中过程或函数可以嵌套定义吗?■■■
- 问一个问题!回答者有分!特别好!99999999999999999999999999分!
- 还是英语题
- 为什么不能循环使用GetMem和FreeMem。还有,循环使用TStringList.create和Free也会出错!!
- 发放两个管理软件的源代码,机房管理系统和仪器管理系统,要者可以交换,给分也行//牛虻
- 请问如何修改Paradox数据库的密码?
- 菜鸟问个问题,treeview的结构如何保存为xml文件,并可以从xml文件中读出结构,谢谢!
- 求~象uedit一样,修改exe文件里的IP的思路(100分)送人了~
表a内有3个存number值的字段啊我曾试过据查到num1,num2,num3逐个从b表查出对应的name
但速度很慢,a内有100条记录就得在原来基础上查300次请各位帮忙想想别的方法,急啊,谢谢了!!
那我再说一下哈,
a表包含三个字段num1,num2,num3,即一条记录中有3个不同的人的编号
(num1,num2,num3的值来源于b表的number字段)
b表包含2个字段:number,name;(number是人的编号,name是姓名)
查询表a内的数据,显示在dbgrid1内
一般情况下,dbgrid1将显示3列数据,而这所有的数据都是人的编号
我希望实现的是:让dbgrid1显示3列相应的人的姓名,而不是编号
换句话说吧:让用户看到的是姓名(就好象是给“人的编号”戴相应的面具,
查到的是 编号,可看到的是 姓名)
好了,不知道我这样说是否够详细了
请大家帮忙想想哈,谢谢!
接下来呢?
谢谢!这样是可以了,可是dbgrid就成只读的了,我希望能编辑,请
再帮忙想想,谢谢!!To:bbsftp(烨)
哪有这样的控件啊?能给我一种吗?谢谢!!
1。按楼上各位指点查出的是只读的,怎么才可成可编辑的呢?
2。当num1,num2,num3中某个字段的值为空时,怎么才能查出那条记录呢
比如某条记录中num2='',我在条件中加:or num2='',可还是查不到那条记录
该怎么改呢?请各位高手指点哈,谢谢!!
多表查询能否对结果集进行编辑取决于使用的数据访问引擎,在很多情况下,使用ADO是可以编辑的,使用BDE要复杂些。
上述情况,如果number是B表主键,而且同时是a表外键,使用ADO是可心编辑的
我用的是bde,该怎么做呢?(number不是b 表的主键,它与a 表的关系仅仅是:a表的num1,num2,num3三个字段的值来源于number)
另外,当num1,num2,num3中某个字段的值为空时,怎么才能查出那条记录呢
比如某条记录中num2='',我在条件中加:or num2='',可还是查不到那条记录
该怎么改呢?
请帮忙想一想,谢谢了!!
直接用dbgrid就可以做到,dbgrid显示前有一个事件叫什么来着
procedure TfrmMarkerMng.dbgCyDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
i_test: integer;
begin
if DataCol=1 then
begin
adoDm.qrycheck.Close;
i_test:=strtointdef(column.field.text,-1000);
if i_test>0 then
begin
adoDm.qrycheck.SQL.Text:='select xm from YH_YHXX where PJYDM='+column.Field.Text;
try
adoDm.qrycheck.Open;
except
end;
dbgcy.Canvas.textRect(rect,rect.left+2,rect.top+2,adoDM.qrycheck.fieldByName('xm').AsString);
adoDm.qrycheck.Close;
end;
end;
end;
转换显示就可以了
请以我上面说的那两个表为例说说怎么做,好吗
对了,希望是用tquery,bde,因为我对Tadoquery更陌生
你写的那段代码,没怎么看明白,好想只涉及到一个表啊
另外一个表的内容怎么联系起来,请详细说说
谢谢!!!!
也就是在显示前转换显示的内容.
query.sql.text:='select name from B where number='+columen.field.text;
只有b表,怎么与a 表发生联系啊??
dbgCyDrawColumnCell 这个事件里面
挨个更换出来
还不明白?仔细看看我上面帖的那段代码吧。速度如果慢,想想其他方法减少访问数据库
谢谢楼上各位朋友了!