怎样在DBGRID中将有些字段值为0的显示为空白??

fast_qiu 2002-08-21 04:40:13
怎样在DBGRID中将有些字段值为0的显示为空白??
...全文
87 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
madyak 2002-08-21
  • 打赏
  • 举报
回复
此方方法同样适用于Query!
假如对静态字段NUM操作,其为整型!
在该字段的OnGetText事件里处理如下:

不好意思上面的还不完善!
procedure TForm1.Query1NUMGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
if Sender.AsInteger = 0 then
Text := ''
else
Text := Sender.AsString;

end;
blazingfire 2002-08-21
  • 打赏
  • 举报
回复
用TQuery来查数据吧:
Query1.Close;
Query1.SQL.Text:='Select ViewField=case Field when'+
' 0 then null'
' else Field'+
' end '+
' from table'
Query1.Open;
//适合以SQL Server 2000 为后台
madyak 2002-08-21
  • 打赏
  • 举报
回复
假如对静态字段NUM操作,其为整型!
在该字段的OnGetText事件里处理如下:

不好意思上面的还不完善!
procedure TForm1.Table1NUMGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
if Sender.AsInteger = 0 then
Text := ''
else
Text := Sender.AsString;

end;
madyak 2002-08-21
  • 打赏
  • 举报
回复
假如对静态字段NUM操作,其为整型!
在该字段的OnGetText事件里处理如下:

procedure TForm1.Table1NUMGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
if Sender.AsInteger = 0 then
Text := ''
else
Text := TSmallintField(Sender).AsString;

end;
madyak 2002-08-21
  • 打赏
  • 举报
回复
我又找到更好的一方法:
用到静态字段!
假设对TABLE1的Size字段操作,它是整形数!
procedure TForm1.Table1SIZEGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if TSmallintField(Sender).Value=0 then
Text:=''
else
Text:=TSmallintField(Sender).AsString;
end;
xxyzjf 2002-08-21
  • 打赏
  • 举报
回复
table.open;
table.first;
i:=table.fieldcount;
while not table.eof do
begin
for j=0 to i-1 do
begin
if table.fieldbyname(table.fields[i].fieldname).asinteger=0then
begin
table.fieldbyname(table.fields[i].fieldname).asstring:=''
end;
end;
table.next;
end;
lwk_hlj 2002-08-21
  • 打赏
  • 举报
回复
可以啊,你可在在相当的字段事一个onGetText事件判断是否为0,如为0,则
TEXT:=''就可以了
xxyzjf 2002-08-21
  • 打赏
  • 举报
回复
table.open;
table.first;
i:=table.fieldcount;
while not table.eof do
begin
for j=0 to i-1 do
begin
if table.fieldbyname(table.fields[i].fieldname).asinteger=0then
begin
table.fieldbyname(table.fields[i].fieldname).asstring:=''
end;
end;
end;
yunfeng_home 2002-08-21
  • 打赏
  • 举报
回复
如果你是用 SQL Server的话,最好还是在select
语句里用 case 语句处理,呵呵,偶一直都是这样
干的。譬如你吧60—75之间的分数显示为‘及格’,
85—100显示为‘优秀’这样的问题很有效。

例如:
select (case
when fenshu<60 then '及格'
else '不及格'
endcase)
from TableName
反正差不多是这样的,都好久没有写SQL了,查查
Help就知道了

呵呵
madyak 2002-08-21
  • 打赏
  • 举报
回复
试试这种方法:
首选不能将此字段设为Required!(包括数据库表格和客户端);
用循环语句遍历事个表!

Table1.open;
while not Table1.Eof do
begin
if Table1.fieldbname('Number').asInteger=0 then
Table1.fieldbyname('Number').Clear;
Table1.Next;
end;

5,927

社区成员

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

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