2012-01-06 3 views
0

J'ai un champ de recherche, comment définir la valeur 0 lorsque le champ est null? comme nous le savons, un champ qui n'a pas de valeur aura un BLANC dans dbgrid.Champ 0 Valeur pour Null

Je peux essayer de faire champ calculé comme ceci:

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

Mais je vais avoir beaucoup de champs calculés pour créer.

Thanx

Répondre

0

Si je comprends bien votre question, vous voulez savoir comment vous pouvez faire un affichage de la grille "0" au lieu de BLANK quand un TIntegerField contient null.

Une approche plus simple que les champs calco serait d'utiliser l'événement OnGetText

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

J'ai joué avec la propriété DisplayFormat ... mais il ne semble pas affecter le format d'affichage des valeurs nulles . (Pas dans TDBGrid au moins ...)

3

Utilisation de la méthode TField.Clear pour définir un champ de base de données à NULL (valeur NULL en termes SQL).

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

Avez-vous essayé:

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

Au lieu d'utiliser des champs calculés, comme alternative, vous pouvez définir la valeur du champ à 0 dans le BeforePost de l'ensemble de données si la valeur du champ est nulle.

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

J'évite les champs calculés chaque fois que je le peux.

Si votre base de données le prend en charge, vous pouvez définir la valeur par défaut du champ sur 0 au niveau de configuration de la table.