Je travaille sur une application vb.net qui importe à partir d'une feuille de calcul Excel.Préservation des valeurs NULL dans une double variable
If rdr.HasRows Then
Do While rdr.Read()
If rdr.GetValue(0).Equals(System.DBNull.Value) Then
Return Nothing
Else
Return rdr.GetValue(0)
End If
Loop
Else
j'utilisais valeur de chaîne pour stocker les valeurs doubles et lors de la préparation de la déclaration de base de données j'utiliser ce code:
If (LastDayAverage = Nothing) Then
command.Parameters.AddWithValue("@WF_LAST_DAY_TAG", System.DBNull.Value)
Else
command.Parameters.AddWithValue("@WF_LAST_DAY_TAG", Convert.ToDecimal(LastDayAverage))
End If
J'ai maintenant des données avec quelques décimales et les données ont été mises dans la variable chaîne en notation scientifique, donc cela semble être la mauvaise approche. Cela n'a pas semblé juste en utilisant la variable de chaîne pour commencer.
Si j'utilise une variable de type double ou décimal, les valeurs excel vierges se présentent comme 0,0.
Comment conserver les valeurs vides?
Note: J'ai essayé
variable comme Nullabe (de Double)
Mais lors du passage de la valeur à l'insert SQL-je obtenir: "objet Nullable doit avoir une valeur."
Solution:
fixe en changeant le type de données du paramètre dans la sous mon appel, puis en utilisant Variable.HasValue faire l'insert DBNull conditionnelle.
Y a-t-il des valeurs qui sont 0.0 qui ne devraient pas être nulle? – Barry
Est-ce que ce champ dans la base de données autorise les valeurs NULL? – R0MANARMY
Oui, il y a 0.0 et il y a des valeurs nulles. C'est le problème :) – Sam