dbgrid的显示问题(10分)

  • 主题发起人 主题发起人 xuefeiyang
  • 开始时间 开始时间
X

xuefeiyang

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库中有若干布尔字段
如不进行设置的话在dbgrid中将显示true或false
现在希望根据‘真假’显示‘0,1’或者‘对号,差号’等字符
 
对每个字段建计算字段,string型
如果为true 那么计算字段值为“是”。
 
在TQuery中加入全部字段,然后在选择布尔型字段,在事件页中会有OnGetText/OnSetText
事件,就是读取字段值和设置字段值,在OnGetText事件中编写代码就可以实现你的要求了。
 
你们说得我都知道,但我不希望更改或设置字段,而只想通过dbgrid更改其显示
有办法没有?
 
// Create a function.

CREATE FUNCTION dbo.TypeName

(

@TypeID int

)

RETURNS nvarchar(50) AS

BEGIN

DECLARE @Result nvarchar(50)

If(TypeID = 1) SELECT @Result = 'A'

If(TypeID = 2) SELECT @Result = 'B'

RETURN @Result

END



//User following express to select.

SELECT dbo.TypeName(TypeID) FROM tbl_...

 
在字段OnGetText中判断,然后...
 
用计算字段
 
重画dbgrid不就完了。
 
再说一遍,我不希望更改或设置字段,而只想通过dbgrid更改其显示
to real_clq
如何重画?
 
ip3000这个控件
 
OnDrawDataCell
 
我知道OnDrawDataCell这个事件
但具体怎么用呢?
 
你用SELECT CASE TABLEFIELD WHEN “1” THEN “真” end ff from table
 
to billy_yuan
谢谢,你的办法能够满足我的要求,但是我对带‘case’的这句SQL不太会用,能不能详
细解释一下
例如:同时我还要‘0’显示‘假’呢?
 
再有就是我要这样显示的字段比较多(如10个),再加上其他字段,如果按您上面说得去写
恐怕要写很长一段,有没有简单的办法,通过一段语句让所有有这种要求的字段都如此显示
再次感谢!!
 
我也很关注billyyuan的方法,能说一下吗??
 
用计算字段并不会导致你“更改或设置字段”,实现你所要求的效果,这是最简单的办法,
你不妨先看看什么是计算字段。
 
SELECT CASE RKLX WHEN '0' THEN '正常' ELSE '非正常' end
或者
select case BillType
when 1 then '入库'
when 2 then '销售'
when 3 then '损溢'
when 4 then '预约'
when 5 then '申请'
else '鬼知道是什么'
end
from tablename ;
这下够清楚了吧!
 
多人接受答案了。
 
后退
顶部