我有查询字段,当字段为空时如何设置0值? 我们知道,没有值的字段在dbgrid中会有一个BLANK。
我可以尝试像这样制作计算字段:
if lookupfield1.Value = 0 then
calcfield.Value := 0
else
calcfield.Value := lookupfield1.Value;
但我会创建许多计算字段。
感谢名单
答案 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中......)