Mise à jour bdd avec requpête SQL [Résolu]

Signaler
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour à tous,

Je désir mètre à jour ma base de donnée enfin pas entièrement mais une ligne (pour e choix de la ligne ca ne me pose pas de pb j'utilise la clause "WHERE"), dans mon instrucion mais j'ais du mal à trouver la syntaxe exacte pour metre à jour mes champs.

Dois-je les mettre à jours un par un oubien tous ensemble et dans ce cas comme faire pour les deux cas.

Merci.

20 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,

enlève les ' ' qui entoure la condition sur OF

Debut reste inchangé ..... WHERE OF = " & text2.text  (comme c'était au début en fait)  d'ailleurs pense à les enlever de la même facon pour tout les champs de type numérique

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,

La même question à 1 Heure d'interval ne te fera pas avoir la réponse plus vite.

En plus il faut être un peu plus clair dans ta question.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

hi hi hi lol oki bon d'accord dans ce cas si tu pe demander axu admin d'éffacer le message poster dans la section SQL de VB6 mais je me suis dis qu'il valai mieu que je poste dans la section ADO / DAO qui est plus en relation avec mon pb...... enfin je pense !!
 
Merci.

Je me ré-explique :
Donc j'ais un boutton qui me permet d'effectuer un enregistrement dans ma bdd mais dans mon code je doit faire l'hipothèse que si un des champs que je vient de saisir (nom du champs :OF) existe déjà je laisse le choix à l'utilisateur de soit faire un nouvelle enregistrement avec la même valeur de l'OF soit (ce qui me pose pb) d'effectuer une mise a jour sur toute la ligne (tout les champs de ma bdd) correcpondant à la valeur de l'OF.

Voila j'espère que cela est plus claire, je fourni ci-dessous le code de mon boutton:

Private Sub Command1_Click()
Dim reponce As Integer
'Test d'existance de l'OF
Do While Not tb.EOF = True     'temps qu'on est pas a la fin du fichier
  If Text2.Text = tb!OF Then
    reponce = MsgBox("Cette OF : " & Text2.Text & " à déjà été saisie" & Chr
                     (10) & Chr(13) & "Pour une mise à jour 'OUI'" & Chr(10) & Chr(13) 
                     & "Pour  un autre enrgistrement 'NON' ", 3)
    If reponce = 6 Then
   'ICI je ne sais pas ce que je doit mettre pour effectuer la mise à jour
    End If
    If reponce = 7 Then
      tb.AddNew
      Call enregistrer
      Exit Sub
    End If
    Exit Sub
  End If
tb.MoveNext    'Linge suivant
Loop
'Fin test d'existance de l'of
tb.AddNew
Call enregistrer
'Fin du test d'existance de l'OF
End Sub
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

heu......
j'airais bien mis cette ligne de code mais bon ca ne m'avance pas je ne voi pas comment elle peut interpréter quelles valeur mètre :

bd.Execute ("UPDATE * FROM ENREGISTREMENT WHERE OF =" & Text2.Text)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Re,

Effectivement expliqué comme ceci, on comprend déjà vachement mieux

Autant que je me souvienne, l'objet Recordset possède AddNew , mais Possède ausii la procédure Update([Fields], [Values])

Essaie de voir si ceci peu t'aider

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

^^ lol ca doit pas être faux...(je l'avais oublier moi ce ([Fields], [Values])
Je test et te dire si ca marche !!

Merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,

La synthaxe d'un UPDATE est la suivante:
UPDATE NomdelaTable SET NomChamp1 NouvelleValChamp1, NomChamp2 NouvelleValChamp2 ... WHERE OF = VALOFrecherche

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

heu..... je sais pas encore si ca marche mais es que la syntaxe pour plusieur valeur est celle-ci ?
recordset.Update ([Field1],[Field2],[Field3],[Value1],[Value2],[Value3])
ou bien
recordset.Update ([Field1,Value1], [Field2,Value2],[Field3,Value3])
ou bien autre chose ^^

Merci
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

oki merci oublie mon dernier poste
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

donc si je code bien ca donnerais cela :
tb.Update("ENREGISTREMENT Set Ligne Text1.Text,[Code Article] text3.Text,[Date programme]= text4.Text, [Date de prise] = text5.Text, [Heure de prise] = text6.Text, Format = Combo1.Text, NBF = Text7.Text,NBT = Text8.Text, CC = Text9.Text,CS = Text10.Text,CL = Text11.Text,Observation= Text12.Text WHERE OF =" & Text2.Text)

lorsque le prog passe sur cette ligne ca me dis "type imcompatible"
et la pour savoir ce qui ne va pas bonjour ^^ parce que ya pas d'indice!!
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

ca me banderais i je doit mètre &chr(34) devant et derrière chaque textX.text
mais bon je croi que c'est ca !!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Re,

ATTENTION.

La synthaxe que je t'ai donné est une requête SQL donc a faire la ou tu avais mis:

bd.Execute ("UPDATE * FROM ENREGISTREMENT WHERE OF =" & Text2.Text)
bd.Execute ("UPDATE ENREGISTREMENT SET Ligne Text1.text, ...... WHERE OF" & Text2.Text)
 
Voila.

Attention peu être faudra t il entourer les champs de type String ou Char par des ' ' : soit WHERE OF = '" & Text2.Text & "'")

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

Oki Merci mais il subsiste un pb quelque soit la syntaxe de WHERE OF = ....... ca me dis "trops peut de parmaètre 1 attendu."
bd.Execute ("UPDATE ENREGISTREMENT Set Ligne '&Text1.Text',[Code Article] '&text3.Text',[Date programme]= '&text4.Text', [Date de prise] = '&text5.Text', [Heure de prise] = '&text6.Text', Format = '&Combo1.Text', NBF = '&Text7.Text',NBT = '&Text8.Text', CC = '&Text9.Text',CS = '&Text10.Text',CL = '&Text11.Text',Observation= '&Text12.Text' WHERE OF = '& Text2.Text'")

Bon je te remerci encore et si jamais tu trouve je regarderais ca lundi (je suis en week-end a 12h00, dans 10 min)

Merci encore pour ton aide et bon week end.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Re...
*
OH L'autre he  il est en WE et pendant ce temps ce sont les autres qui font sont taf.... pas GLOP du tout.

Enfin bref.

CECI serait peu etre plus correct:

bd.Execute ("UPDATE ENREGISTREMENT Set Ligne ='" & Text1.Text & "',[Code Article] ='" & text3.Text & "',[Date programme]='" & text4.Text & "', [Date de prise] = '" & text5.Text & "', [Heure de prise] = '" & text6.Text & "', Format = '&Combo1.Text', NBF = '" & Text7.Text & "',NBT = '" & Text8.Text & "', CC = '" & Text9.Text & "',CS = '" & Text10.Text & "',CL = '" & Text11.Text & "',Observation= '" & Text12.Text & "' WHERE OF = '" & Text2.Text & "'")

J ai remarque que tu a mis ' autoutr de tout les champs ce qui veux dire que TOUT les champs de ta base de donne sont de type String, tu n'a aucun integer ou autre?

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

si bien sur que j'ais des champs de type interger,date/heure mais je ne pense pas que cela change quelque chose au code !! enfin pour ce que j'y connais moi !!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,

Bien sur que cela change.

les ' ' n 'entoure que les champs de type string cela ne sert a rien de les mettre autour d'un enier. en revanche il est vrai qu'autour d'une date il faut les mettre.

Alors elle fonctionne ou pas.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

Bonjour,

Je suis vraiment désolé de demander de l'aide la dessus, cela peut te paraitre facile mais pour moi c'est une prise de tête de tous les jours, enfin j'espère ne pas avoir éveillé en toi le sentiment d'exploitation pur et simple au contraire a chaque réponce que l'on me donne sur ce forum c'est une bénédiction et un soulagement pour moi !!

Mais bon, pour continuer sur cette instruction en effet, ma base de donnée contien des champs de type date/heure ([Date programme],[Date Prise],[heure de prise]) et aussi numérique (OF,NBT,NBF,CC,CS,CL) et aussi un champs de type mémo(Observation) en fin de compte je n'ais que trois champs de type text (Ligne,Format,[Code Article]) mais dis moi es que je doit changer quoi que ce soit dans mon code de mise a jour en fonction du format de mon champs ou pas

si c'est le cas pense savoir quoi utilisé pour les champs de type date/heure (à la place de [Date programme]='" & text4.Text & "' j'utiliserais la fonction "format(,)" mais pour le numérique ou le mémo la je vois pas du tout 

Pour finir je revient au code que tu m'a donner trés gentillement et qui a du te prendre un certain temps, ca me dis tj qu'il attend un paramètre !!
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

coorection c'été juste un "s" qui manquai mais now ca me dit "type de donné incompatible dans l'expression du critère".

J'en déduit que ca vient de text2.text mais voila ca parais logique vue que c'est un champ de type numérique dans ma base vais voir ce que je pe faire.

voilou ..
Messages postés
168
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
11 septembre 2007

tu sais koi je t'aime .

Ca marche impécablement bien ^^:

bd.Execute ("UPDATE ENREGISTREMENT Set Ligne ='" & Text1.Text & "',[Code Article] ='" & Text3.Text & "',[Date programme]='" & Text4.Text & "', [Date de prise] = '" & Text5.Text & "', [Heure de prise] = '" & Text6.Text & "', Format = '" & Combo1.Text & "', NBF = " & Text7.Text & ",NBT = " & Text8.Text & ", CC = " & Text9.Text & ",CS = " & Text10.Text & ",CL = " & Text11.Text & ",Observations= '" & Text12.Text & "' WHERE OF = " & Text2.Text)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Re,

Content d'avoir enfin réussi...

Aller @+ sur le forum

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée