VB.Net Requête SQL Acces Update

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
-
Bonjour à tous
J,ai encore un problème que je laissais de côté depuis un bout de temps et j'aimerais bien trouver le bobo...

Je veux faire un Update sur ma BD Acces à partir de VB.Net.

Dans mon fichier acces j'ai 8 colonnes:
Date: Date/Heure
Numero: Texte
Somme: Numérique
Prix: Numérique
Carte: Texte
Date_Achat: Date/Heure
Description: Texte
Cle: NuméroAuto

J'utilise ce code pour ma requête SQL

 RequeteSQLMe "UPDATE Paiements SET [Date] '" & Check_Date & _
                "' ,Numero '" & dtgPaiements.CurrentRow.Cells(2).Value & "', Somme " & dtgPaiements.CurrentRow.Cells(3).Value & ", Prix = " & strPrix & _
                " ,Carte '" & dtgPaiements.CurrentRow.Cells(5).Value & "', [Date_Paiement] '" & Check_Date_Paiement & _
                "', Description '" & dtgPaiements.CurrentRow.Cells(7).Value & "' WHERE Cle " & Ligne.Cells("Cle").Value.ToString()


Voici ce que vaut ma requête dans le Debug
UPDATE Paiements SET [Date] = '' ,Numero = '', Somme = , Prix = 62,19 ,Carte = 'Master Card BMO', [Date_Paiement] = '2009-11-05', Description = 'Médicament11' WHERE Cle = 189




Si vous voyer mon bug.. gênez-vous pas

Merci de votre aide

6 réponses

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut,

Pas sur qu'il aime "Somme = ,", tu dois te débrouiller pour qu'il ai une valeur. Au moins zéro.

Pas sur qu'il aime aussi "Prix 62,19"... Il va préférer "Prix 62.19"

A+
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Bonjour,

Je crois que tu peux omettre la colonne "Somme" si tu n'as rien à y mettre à condition soit qu'elle soit Nullable soit que tu aies défini une valeur par défaut.


Calade
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Bonjour à vous deux.... merci de vos réponses...

Voici ce que j'ai essayé...

Pour ce qui est de la valeur de ma colonne prix.
Je fais un condition si Prix contient un point alors fait telle requête et s'il y a un erreur change le point par une virgule. Je fais cette condition car les ordi ne sont pas configuré tous pareils. Donc je crois, je ne suis pas certain, que ma colonne prix devrais être OK

J'ai essayé de mettre la valeur de 0 sur ma cellule de mon DatagridView de ma colonne Somme et ca bug toujours.

Dans ma BD Access ma colonne Somme a le Null Interdit à Non donc selon moi c'est OK ??

J'ai aussi essayé d'enlever dans la requête SQL Somme mais ca bug toujours....

Si vous voyer autre chose.....
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Pour le prix, c'est à voir.
Pour la somme, je te conseillerais de la forcer à 0 si elle est vide (mais dans ta requête, car à la limite ton DataGridView n'est là que la présentation.

Par contre, il y à la Date en tout premier, j'ai peur qu'il n'aime pas non plus une date sous forme de texte. Là tu peux peut-être la mettre Null si aucune valeur par défaut ne convient.


Calade
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Bonjour

Voici le traitement que je fais (faisais pour corriger le bobo) pour convertir ma date en texte

 FormatString = (dtgPaiements.CurrentRow.Cells(1).Value).ToString
            If (FormatString.TrimEnd().Length 0) Then dtgPaiements.CurrentRow.Cells(1).Value ""
            If dtgPaiements.CurrentRow.Cells(1).Value = "00:00:00" Then
                Check_Date = ""
            Else
                Check_Date = DateTime.Parse(dtgPaiements.CurrentRow.Cells(1).Value).ToShortDateString()
            End If



Ma question comment convertir ma cellule de mon datagrid en null ???

je fais quelque test comme celui-si et il n'affiche jamais le msgbox "Allo"

 If dtgPaiements.CurrentRow.Cells(1) Is DBNull.Value Then
                MsgBox("Allo")
            Else
                Dim test As String
                test = dtgPaiements.CurrentRow.Cells(1).ToString
                MsgBox(test) 'Ici Test ne me donne rien de concluant
            End If



Merci
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Bonjour,

Dans la mesure ou Date est effectivement une Date, il ne faut pas la convertir en String. Tout au plus la mettre à Null ou mieux lui mettre une date par défaut si possible.

Quant à l'affichage dans ton DataGridView, je ne puis malheureusement pas t'aider, mes compétences s'arrête à SQL + VB6 et non .NET.

Désolé, mais tu devrais trouver facilement quelqu'un qui pourrait t'aider sur ce point précis.


Calade