字段0 Null的值

时间:2012-01-06 11:40:02

标签: delphi

我有查询字段,当字段为空时如何设置0值? 我们知道,没有值的字段在dbgrid中会有一个BLANK。

我可以尝试像这样制作计算字段:

if lookupfield1.Value = 0 then
  calcfield.Value := 0 
else 
calcfield.Value := lookupfield1.Value;

但我会创建许多计算字段。

感谢名单

3 个答案:

答案 0 :(得分:3)

使用TField.Clear方法将数据库字段设置为NULL(SQL术语中的NULL值)。

if lookupfield1.Value = 0 then
  calcfield.Clear
else 
  calcfield.Value := lookupfield1.Value;

答案 1 :(得分:0)

你试过了吗?

if lookupfield1.Value = null then
  calcfield.Value := 0 
else 
  calcfield.Value := lookupfield1.Value;

如果字段值为null,则可以在数据集的BeforePost中将字段值设置为0,而不是使用计算字段。

procedure tMyTableBeforePost(Dataset: TDataset);
begin
  if Dataset.fieldbyname('MyField').asstring = '' then 
    Dataset.fieldbyname('MyField').asstring := '0';
end;

我尽可能避免计算字段。

如果您的数据库支持它,您可以在表配置级别将字段的默认值设置为0.

答案 2 :(得分:0)

如果我正确理解了您的问题,您想知道当TIntegerField包含null时,如何使网格显示为“0”而不是BLANK。

比calc字段更简单的方法是使用OnGetText事件

procedure TForm2.ClientDataSet1F1GetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  Text := IntToStr(Sender.AsInteger)
end;

我玩过DisplayFormat属性......但它似乎不会影响null值的显示格式。 (至少在TDBGrid中......)