Plusieurs updates (probleme)

Résolu
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007 - 8 juin 2007 à 10:22
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007 - 11 juin 2007 à 11:38
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

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 10:40
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

 
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 juin 2007 à 10:28
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
0
sobullshit Messages postés 178 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 8 juin 2007
8 juin 2007 à 10:42
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)
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
8 juin 2007 à 11:36
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'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 juin 2007 à 11:46
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
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
8 juin 2007 à 13:50
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'
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 juin 2007 à 14:55
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
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
8 juin 2007 à 15:53
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

 
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
8 juin 2007 à 16:18
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'
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 juin 2007 à 16:31
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
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
8 juin 2007 à 18:12
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

 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
8 juin 2007 à 18:15
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

 
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
11 juin 2007 à 09:29
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'
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 09:33
Salut,

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

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
11 juin 2007 à 09:36
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 :) )
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 juin 2007 à 09:42
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
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 09:43
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


 
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
11 juin 2007 à 09:44
Parce que si je mets tout dans le INSERT, pour chaque nouveau renseignement, il va me creer une ligne. J'ai deja essayé
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
11 juin 2007 à 09:46
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

 
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
11 juin 2007 à 09:47
Y'a moyen de tout mettre dans le INSERT TO, sans qu'il crée une ligne pour chaque renseignement ?
0