在DBGRID中,用Case语句将指定的值转化为其它字符(比如数据库中'M'显示为'女')时遇到问题。(100分)

  • 主题发起人 主题发起人 foxling
  • 开始时间 开始时间
F

foxling

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGRID中,用Case语句将指定的值转化为其它字符(比如数据库中'M'显示为'女')时遇到问题。
Sql语句为:
'select 性别=case 性别 when ''M'' then ''女'' else ''男'' end from tablename';
用Delphi自带工具Sql Exploer测试通过,但在delphi中测试时不能通过。
错误提示:
Project Project1.exe raised exception class EDBEngineError with
message 'Invalid use of keyword.
Token: =case
Line Number: 1'. Process stopped. Use Step or Run to continue.

测试环境:win98se,delphi5.0,MSSql7.0.
请大家帮忙,给点提示。
 
好象说用了保留字,你的字段用了保留字命名
这段语句应该没问题,改改字段名试试
 
和DBGRID没关系,它只负责显示数据
你检查如果直接对这个DATASET做ACTIVE=TRUE,是不是也错?!
你还可以在数据集的GETTEXT事件里写代码好了,这样SQL很简单,不要CASE
 
同意onedot的意见
 
你可在QUERY控件中使用计算字段,在DBGRID中显示计算出来的字段,而不显示数据库中本身的字段!
这样会更方便一点!
 
主要是SQL语句的错误,如果是用SQL语句的话,应该是
'select decode(性别,''m'',''男'',''w'',''女'') 性别 from tablename'
也可以用第二种方法就是GETTEXT
 
在Field 的OnGetText中加入以下代码:
if sender.value ='m' then text := '男' else text := '女';
 
先用SQL选出来,然后根据结果再做判断
 
如果用了RequestLive=true就不行
 
如果用了RequestLive=true就不行
 
to LeeChange
你抄我的话干嘛?
 
在Field 的OnGetText中加入以下代码:
if sender.value ='m' then text := '男' else text := '女';
 
如果只是用来显示用的,国个计算字段就行了.
根据条件来判断是显示 男 或者 女.
 
'select case 性别 when ''M'' then ''女'' else ''男'' end as 性别 from tablename'
 
是通过ADO吗,如果是就不奇怪,升级到ADO2.6试试
 
CrazyCat 说的是好方法
 
检查你delphi里的sql语句.特别注意引号.
 
这个问题不用那么复杂,去写什么SQL语句分出来,你在DBGRID的COLUMS里,直接指定为计算字段就可以了。
最简单。
 
TBooleanField::[red]DisplayValues[/red]

TBooleanField See also

Controls how the Boolean field is translated to and from display format.

__property AnsiString DisplayValues = {read=FDisplayValues, write
=SetDisplayValues};

Description

Use DisplayValues to specify strings you want used to represent Boolean values.
Use any pair of phrases, separated by a semicolon. For example, to have the
true and false values correspond to the letters T and F, respectively, set
DisplayValues to

Table1LogicalField->DisplayValues = "T;F";

Similarly, to set the values of true and false to the strings Yes and No,
set DisplayValues to

Table1LogicalField->DisplayValues = "Yes;No";

The string associated with true or false can be an empty string. To set the
value for true to an empty string, set DisplayValues to a string that begins
with a semicolon. For example, to associate false with the string Fail, and
true with an empty string, set DisplayValues to

Table1LogicalField->DisplayValues = ";Fail";

To associate false with an empty string, set DisplayValues to the string for
true, with no semicolon at all.

The strings associated with true and false by DisplayValues appear in
data-aware controls when they display the data for a Boolean field. If one
of the strings is an empty string, boolean values associated with that string
appear blank in data-aware controls.

These strings are also used when getting or setting the Boolean field抯
AsString property.
 
修改你的SQL语句,使用JOIN,
可以达到你要的目的
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
881
import
I
后退
顶部