VB.Net Requête SQL qui ne fonctionne pas DBNull

cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 1 oct. 2008 à 15:00
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 1 oct. 2008 à 15:17
Salut à tous...


Pour une raison que j'ignore mon UPDATE fonctionnait correctment et maintenant ca ne fonctionne plus :(


Je veux "updater" une ligne de ma base de donnée à partir d'un datagridview.


j'ai une cellule qui est vide et je veux j'.entre une inmfo dans cette cellule...


Lorsdque j'arrive à ma requête SQL j'ai un message d'erreur disant:
La conversion du type 'DBNull' en type 'String' n'est pas valide.


Je ne trouve pas où est mon erreur... Si quelqu'un peut me donner un coup de mains


Merci d'avance


RequeteSQL "UPDATE TableAccess SET Code '" & DtgPlans.CurrentRow.Cells(0).Value & "',nom = '" & Replace(DtgPlans.CurrentRow.Cells(1).Value, "'", "''") & "',des = '" & DtgPlans.CurrentRow.Cells(2).Value & _"',Cod '" & DtgPlans.CurrentRow.Cells(3).Value & "',Fol '" & DtgPlans.CurrentRow.Cells(4).Value & "',Texte = '" & DtgPlans.CurrentRow.Cells(5).Value & _"',Num " & DtgPlans.CurrentRow.Cells(6).Value & ",nomd '" & Replace(DtgPlans.CurrentRow.Cells(7).Value, "'", "''") & "',mult = '" & DtgPlans.CurrentRow.Cells(8).Value & "',Statut = '" & DtgPlans.CurrentRow.Cells(9).Value & "',codeie = '" & DtgPlans.CurrentRow.Cells(10).Value & _
"',[Date] = '" & DtgPlans.CurrentRow.Cells(11).Value & "',Tri = '" & DtgPlans.CurrentRow.Cells(12).Value & "',ancien = '" & DtgPlans.CurrentRow.Cells(13).Value & "',File = '" & DtgPlans.CurrentRow.Cells(14).Value & _
"' WHERE ClePrimaire = " & DtgPlans.CurrentRow.Cells(15).Value

1 réponse

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
1 oct. 2008 à 15:17
bonjour,

C'est parce que tu dois essayé d'affecter une variable (qui n'est pas initialisé et qui a la valeur DBNull) à un champ qui reçoit un String. (ou l'inverse)

test tous tes champs avant de les affecter :

if not IsDBNull (MonTexte) then
'je fais ce que je veux
end if

cela peut t'obliger à scinder la construction de ta chaine de requête
voici un exemple de code que j'ai pu faire :

 ChaineSqlInsert = "INSERT INTO T_Apprenant("
                ChaineSqlValues = "VALUES ('"
                If MonTitre <> "" Then
                    ChaineSqlInsert &= "Titre"
                    ChaineSqlValues &= MonTitre
                Else
                    EstValide = False
                End If

                If EstValide And MonNom <> "" Then
                    ChaineSqlInsert &= ",Nom"
                    ChaineSqlValues &= "','" & MonNom
                Else
                    EstValide = False
                End If
.....
'puis à la fin :
If EstValide Then
                    ChaineSqlInsert &= ")"
                    ChaineSqlValues &= "');"
                    LaRequete = ChaineSqlInsert & ChaineSqlValues
                End If
thierry la fronde
0
Rejoignez-nous