thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007
-
9 juin 2006 à 10:08
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
12 juin 2006 à 10:13
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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 juin 2006 à 09:45
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
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 9 juin 2006 à 10:39
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 9 juin 2006 à 10:58
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
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 9 juin 2006 à 11:07
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 ^^
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 9 juin 2006 à 11:24
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!!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 9 juin 2006 à 11:28
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
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 9 juin 2006 à 11:50
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)
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
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 12 juin 2006 à 05:44
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 !!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 juin 2006 à 08:45
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
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 12 juin 2006 à 09:05
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 !!
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 12 juin 2006 à 09:20
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.