2012-01-06 9 views
0

フィールドがヌルのときに0値を設定するルックアップフィールドがありますか?私たちが知っているように、値を持たないフィールドにはdbgridにBLANKがあります。フィールド0ヌルの値

私はこのような計算フィールドを作ってみることができます。

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

をしかし、私は作成するために多くの計算されたフィールドを持つことになります。

ありがとう

答えて

0

あなたの質問を正しく理解している場合は、TIntegerFieldにnullが含まれている場合に、空白の代わりにグリッド表示を "0"にする方法を知りたいことがあります。 CALCフィールドより

よりシンプルなアプローチがOnGetTextイベントに

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

を使用することです私はdisplayFormatにプロパティをおもちゃにしました...しかし、NULL値の表示形式に影響を与えていないようです。 (少なくともTDBGridにはない...)

3

はNULL(SQL用語でNULL値)にデータベースフィールドを設定するTField.Clearメソッドを使用します。

if lookupfield1.Value = 0 then 
    calcfield.Clear 
else 
    calcfield.Value := lookupfield1.Value; 
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に設定できます。

関連する問題