Plusieurs updates (probleme)

Résolu
Signaler
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007
-
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007
-
Bonjour à tous.

Voilà, j'ai de nombreux champs de ma table à mettre à jour quand j'appuie sur un bouton.
J'ai essayé de tout mettre sur la meme ligne, mais il y en a trop, donc ca passe à la ligne...mais là message d'erreur, VB n'accepte pas et comprend ca comme une nouvelle instruction, alors que c'est la suite...
J'ai donc essayé de mettre ca dans un nouvel update à la ligne, mais celui ci ne s'execute pas. Le premier marche mais pas le deuxieme.

Si vous pouviez m'aider à updater tous ces champs, parce que je vois pas trop...

Merci d'avance

Zik'

28 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Déjà je pense que ce code ne le mets pas dans l'évènement Form_Load, mais plutôt dans un module à part, regarde ci-dessous l'exemple :

Option Explicit

' Variable Connection base de données
 Public Cnx As New ADODB.Connection

 Cnx.Provider = "Microsoft.Jet.Oledb.4.0"
 Cnx.ConnectionString = "C:\Documents and Settings\Bureau\Stage\Logiciel de caisse\Produits.mdb"
Cnx.Open

Ensuite refait l'essai de la requête update :

Dim Sql As String
Sql = "UPDATE Facture " & _"SET Fact_adr_cli '" & cliad.Text & "', Modep '" & Combo1.Text & "'," & _"fact_montht '" & montht.Text & "', fact_tva '" & tva.Text & "'," & _
"fact_montttc = '" & montttc.Text & "', " & _"Fact_mt1 '" & montant1.Text & "', Fact_mt2 '" & montant2.Text & "'," & _"Fact_mt3 '" & montant3.Text & "', Fact_mt4 '" & montant4.Text & "'," & _"Fact_mt5 '" & montant5.Text & "', Fact_mt6 '" & montant6.Text & "'," & _"Fact_mt7 '" & montant7.Text & "', Fact_mt8 '" & montant8.Text & "'," & _"Fact_mt9 '" & montant9.Text & "' WHERE Tonchamp '" & client.Text & "'

  cnx.Execute Sql

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Comment sépares tu tes lignes?

Methode:

Dim Requete As String
Requete = "Ceci est exemple" & _
"de ligne coupée en plusiers" & _
"Lignes", ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
178
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
8 juin 2007

Faut préciser que le _ permet à VB de voir que l'instruction continu sur la ligne suivante.

(J'anticipe la question "à quoi sert le "?" ? ", merci ma boule de cristal)
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Apparement le " & _ " n'est pas accepté dans une ligne SQL...

Il me souligne la deuxieme ligne, comme quoi il ne la comprends pas.
Je vous copie une partie du code :


sql "UPDATE Facture SET Fact_adr_cli '" + cliad.Text + "' & _   ......... *passage à la ligne*

"Fact_mt1 = '" + montant1.Text + "' etc...

Il n'aime pas ca apparement : message :"attendu numero de ligne ou étiquette..."

Zik'
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Et ceci?sql "UPDATE Facture SET Fact_adr_cli '" + cliad.Text + "'" & _
"......... *passage à la ligne*" & _
"Fact_mt1 = '" + montant1.Text + "        ", ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Je pige pas trop ce que tu veux faire là.
Avant le *passage à la ligne* jdois ecrire la suite de mes instructions ou je mets rien ?
Et je peux pas passer à la ligne sans fermer le double-cote, il en met un automatiquement à la fin de la ligne...

Si tu pouvais juste eclaircir ce point là s'il te plait.

Zik'
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
SAlut,
Voici l'equivalent sur une ligne puis sur plusieurs.
A toi de comprendre la méthode.

Dim Requete As String
Requete = "Ceci est exemple de ligne coupée en plusiersLignes"

Requete = "Ceci est exemple" & _
"de ligne coupée en plusiers" & _
"Lignes"

Est ce que c'est plus clair?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Regarde cet exemple(qui fonctionne) d'une requête update sur plusieurs lignes :

             Sql = "UPDATE Expéditions " & _                  "SET Demandeur '" & Txt_Livraison(3).Text & "', Société '" & Txt_Livraison(4).Text & "', " & _                  "Désignation '" & Txt_Livraison(5).Text & "', Délai '" & Txt_Livraison(6).Text & "', " & _                  "Transporteur '" & Txt_Livraison(7).Text & "', Départ '" & Txt_Livraison(8).Text & "', " & _                  "Affaire '" & Txt_Livraison(9).Text & "', ModifierPar '" & Var_Pseudo & "'," & _                  "DateModife '" & MyDateModife & "'   Where Bl '" & Txt_Livraison(0).Text & "'"

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Bon, ca ne marche toujours pas, je ne vois toujours pas mes enregistrements dans ma BDD.
Jvous donne les codes de ma sub, comme ca vous verrez que j'ai fait exactement pareil qu'Exploreur... (merci en tout cas )

sql = "INSERT INTO Facture(Fact_cli) Values('" + client.Text + "')"
cnx.Execute sql


'Mise à jour des champs Nom, Adresse, Mode de paiement, Montant HT, TVA et Montant TTC

Ligne 1 :sql = "UPDATE Facture " & _Ligne 2 :"SET Fact_adr_cli '" + cliad.Text + "', Modep '" + Combo1.Text + "', fact_montht = '" + montht.Text + "', fact_tva = '" + tva.Text + "', fact_montttc = '" + montttc.Text + "', " & _Ligne 3 :"Fact_mt1 '" + montant1.Text + "', Fact_mt2 '" + montant2.Text + "', Fact_mt3 = '" + montant3.Text + "', Fact_mt4 = '" + montant4.Text + "', Fact_mt5 = '" + montant5.Text + "', Fact_mt6 = '" + montant6.Text + "', Fact_mt7 = '" + montant7.Text + "', Fact_mt8 = '" + montant8.Text + "', Fact_mt9 = '" + montant9.Text + "'"
Ligne 4 :  cnx.Execute sql

Si vous trouvez l'erreur...
Merci d'avance !

Zik'
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Avec cette requete il semble que tout tes champs soient de type Text (ou string) est ce réellement le cas?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Une chose imporatnte à mes yeux : Il faut donner a mangé à ta requête : Comment veux-tu modifier un enregistrement dans ta base, si ta requête ne sait pas quel enregistrement il faut qu'elle modifie ? (Clause WHERE d'une requête)

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Dernière petite chose, utilise plutôt le carractère & au lieu des +, cela pourrait éviter d'avoir des bugs bizarre... 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Effectivement tous mes champs sont de types text, et j'ai bien renseigné ma requete (le WHERE est bien là) et je n'arrive toujours pas à ecrire dans ma base de données...

Ca me bloque depuis plusieurs jours, je vois pas du tout quoi faire, j'ai respecté la syntaxe et j'ai pris des exemples mais rien...

Venez moi en aide s'il vous plait !

Zik'
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Pourrais-tu me montrer comment tu exécutes en code ta requête ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Voilà mon code :

'Codes de sauvegarde dans la base de données
   
sql = "INSERT INTO Facture(Fact_cli) Values('" + client.Text + "')"
cnx.Execute sql



'Mise à jour des champs Nom, Adresse, Mode de paiement, Montant HT, TVA et Montant TTC
sql = "UPDATE Facture " & _    "SET Fact_adr_cli '" + cliad.Text + "', Modep '" + Combo1.Text + "', fact_montht = '" + montht.Text + "', fact_tva = '" + tva.Text + "', fact_montttc = '" + montttc.Text + "', " & _    "Fact_mt1 '" + montant1.Text + "', Fact_mt2 '" + montant2.Text + "', Fact_mt3 = '" + montant3.Text + "', Fact_mt4 = '" + montant4.Text + "', Fact_mt5 = '" + montant5.Text + "', Fact_mt6 = '" + montant6.Text + "', Fact_mt7 = '" + montant7.Text + "', Fact_mt8 = '" + montant8.Text + "', Fact_mt9 = '" + montant9.Text + "'where Fact_cli = '" + client.Text + "'"
    cnx.Execute sql

(Je vais remplacer les + par des & comme tu me disais :) )
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pourquoi ne pas TOUT insérer tes chmpas d'un seul coup plutot que de faire un INSERT suivi d'un UPDATE?
Ou alors j'ai pas compris (lundi oblige)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Bon essaye :

Dim Sql As String


Sql = "UPDATE Facture " & _"SET Fact_adr_cli '" & cliad.Text & "', Modep '" & Combo1.Text & "'," & _"fact_montht '" & montht.Text & "', fact_tva '" & tva.Text & "'," & _
"fact_montttc = '" & montttc.Text & "', " & _"Fact_mt1 '" & montant1.Text & "', Fact_mt2 '" & montant2.Text & "'," & _"Fact_mt3 '" & montant3.Text & "', Fact_mt4 '" & montant4.Text & "'," & _"Fact_mt5 '" & montant5.Text & "', Fact_mt6 '" & montant6.Text & "'," & _"Fact_mt7 '" & montant7.Text & "', Fact_mt8 '" & montant8.Text & "'," & _
"Fact_mt9 = '" & montant9.Text & "'"
 
 cnx.Execute Sql

Vérifie bien aussi que tu es bien connecté à ta base(regarde quand tu lances ton aplli, s'il y a bien le fichier .Ldb de ta base de données qui est ouverte, et si tu n'as pas mis quelque par un On Error Resume Next...


Es-tu bien sûr que de tout tes champs dans ta base sont du type : Texte ?


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Parce que si je mets tout dans le INSERT, pour chaque nouveau renseignement, il va me creer une ligne. J'ai deja essayé
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut Jrivet,

Effectivement ce la serai plus simple et plus direct

Tiens, à la fin de la requête rajoute cela (je suppose que tu as un champ client :

WHERE client = '" & client.Text & "'

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
44
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
30 novembre 2007

Y'a moyen de tout mettre dans le INSERT TO, sans qu'il crée une ligne pour chaque renseignement ?