Mise a jour du base access en VB.net [Résolu]

Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
- - Dernière réponse : ManuAntibes
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
- 11 juin 2009 à 20:53
Bonjour

J'ai une erreure et je n'arrive pas à la corrigée.
Je souhaite modifier la colonne  'Validation_Vente ' , et faire une recherche de la ligne  avec 2 ou plusieurs critères.
j'utilise une base Access.

voici mon code :

Dim StrSQL
As
String
Dim cmd
As
New OleDbCommand

Dim tr
As OleDbTransaction
tr = m_Connexion.BeginTransaction
StrSQL "UPDATE Table_Vente SET Validation_Vente 'Supp'  WHERE  Num_Vente = '100003, Date_Vente = '25/06/2009' '"

With cmd

      ' Préparer la commande à mettre à jour
      .Connection = m_Connexion
      .Transaction = tr
      .CommandType = StrSQL
   
Try
      'Executer la commande
      .ExecuteNonQuery()

      'Terminer la transaction
      tr.Commit()

   Catch ex
As Exception
      tr.Rollback()

   End
Try
End
With

voici le message d'erreur : La conversion de la chaîne "UPDATE Table_Vente SET Validatio" en type 'Integer' n'est pas valide.

Merci de votre aide

MANUANTIBES
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
22
3
Merci
Salut,

As-tu testé ta requete directement dans access avant de la faire dans ton programme?

ta requete est doublement fausse a vue d'oeil
Validation_Vente semble un numerique d'apres l'erreur

"UPDATE Table_Vente SET Validation_Vente 'Supp' WHERE Num_Vente '100003, Date_Vente = '25/06/2009' '"

Et ta condition elle doit etre fausse

WHERE Num_Vente '100003' AND Date_Vente '25/06/2009'
Serait mieux

Voir
WHERE Num_Vente 100003 and Date_Vente '25/06/2009'
si num_vente est numerique

pour la date
c'est puet etr #25/06/2009# en access

Et tu n'auras pas ces problemes si tu utilises les requetes paramétrées.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nhervagault
Messages postés
488
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
3
0
Merci
Salut

merci d'avoir repondu

j'ai trouvé le soir même à 00:22:00

voici la reponse

Dim StrSQL
As
String
Dim Validation As
String =
"Sup" ' Dans l'example du haut j'avais ecrie SUPP avec 2 P, cela doit etre un mot clé car il n'en voulais pas.

Dim tr
As OleDbTransactiontr = m_Connexion.BeginTransaction

StrSQL =

String.Format(
"UPDATE Table_Vente " & _

"SET Validation_Vente = '" & Validation &
"' " & _ ' Il faut mettre 1 guillemet de chaque coté

"WHERE b_Rayon_Vente = " & m_Rayon & _  ' Il ne faut rien mettre (pas de 1 guillemet de chaque coté)

" AND c_Balance_Vente = " & m_Balance & _' Il ne faut rien mettre (pas de 1 guillemet de chaque coté)

" AND d_Date_Vente = #" & m_Date &
"#" & _' Il  faut mettre ( un  #  de chaque coté)

" AND h_Heure_Vente = #" & m_Heure &
"#" & _' Il  faut mettre ( un  #  de chaque coté)

" AND e_Vendeur_Vente = " & m_Vendeur & _' Il ne faut rien mettre (pas de 1 guillemet de chaque coté)

" AND f_NumTicket_Vente = " & m_Ticket & _' Il ne faut rien mettre (pas de 1 guillemet de chaque coté)

" AND n_PLU_Vente = " & m_PLU & _' Il ne faut rien mettre (pas de 1 guillemet de chaque coté)

" AND i_PrixKilo_Vente = " & m_Prix.ToString.Replace(
",",
".") & _' Pour les decimals ; Il  faut changer la virgule par un point

" AND j_Poids_Vente = " & m_Poids.ToString.Replace(
",",
".") & _' Pour les decimals ; Il  faut changer la virgule par un point

" AND k_Montant_Vente = " & m_Montant.ToString.Replace(
",",
"."))' Pour les decimals ; Il  faut changer la virgule par un point

Dim cmd
As
New OleDbCommand()

With cmd

' Paramétrer la commande
.Connection = m_Connexion
.Transaction = tr
.CommandText = StrSQL

Try
.ExecuteNonQuery()
tr.Commit()

Catch ex
As Exception

End
Try
End
WithA+ à tous

MANUANTIBES
Commenter la réponse de ManuAntibes