Enregistrement dans une table ACCESS

Résolu
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008 - 28 avril 2007 à 19:53
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 29 avril 2007 à 19:01
bonjour,

je me penche vers vous , encore une fois, pour résoudre un problème qui peut vous paraitre stupide 'comme tous mes messages'
j'ai une Form composée de 10 textbox "text1(0) à text1(10)"
avec un bouton je dois enregistrer ces textbox dans ma table ACCESS, pour celà j'ai pensé à un boucle comme ceci:
For i=0 to 10
enr(i) = text1(i).text
oRS.AddNew
     oRS.Fields("le nom de mon champ") = enr(i)
next

mais je ne s   ais pas comment faire si bien évidemment celà est faisable.

Merci

12 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 22:37
Salut,

C'est normal, tu ne fait une requête de selection mais une requête action(modification)..
Pour trouver un client ta requête de ressembler à cela :
sQuery "SELECT * From TaTable Where N°client '" & Text1(0).Text & "'"
RstAdo.Open sQuery, TACONNECTIONADO, adOpenDynamic, adLockPessimistic

Ta requête va te renvois le bon client choisi par ton utilisateur, tu n'as plus qu'à l'afficher...Regarde ci-dessous un code de Chaibat05 que j'utilise dans une de mes source, et essaye de comprendre le truc et de modifier à ta convenance :

 With RstAdo
     ' Pour éviter l' erreur du mouvement
      On Error Resume Next
     
         .MoveLast
         .MoveFirst
      If .BOF And .EOF Then
     
        ' Erreur
         MessageBox Me.hwnd, "Veuillez vérifier votre pseudo !", "Erreur pseudo...", vbExclamation Or vbOKOnly
         Txt_pseudo.SetFocus
         .Close
         Exit Sub
        
      End If
     
    ' >suite vérife
         If ![Code] = Txt_code.Text Then
        
           ' Attribution Nom et Prénom à mes variable
            Var_Nom = ![Nom]
            Var_Prénom = ![Prénom]
            Var_Droits = ![Droits]
            Var_Pseudo = ![Pseudo]
           
           ' Préparation du message boite de dialogue
           Msg = "Bonjour " & Var_Nom & " " & Var_Prénom & vbCrLf & vbCrLf & _
                 "Nous sommes le " & StrConv(Format(Now, "dddd dd mmmm yyyy"), vbProperCase) & vbCrLf & vbCrLf & _
                 "Bonne journée !" & vbCrLf & vbCrLf
          
           ' Affichage boite de dialogue
            MessageBox Me.hwnd, Msg, "Validation utilisateur", vbInformation Or vbOKOnly
           
           ' Ferme le recordset
            .Close
           
           ' Unload
            Unload Me
           
         Else
         
           ' Erreur
            MessageBox Me.hwnd, "Veuillez vérifier votre code !", "Erreur code...", vbExclamation Or vbOKOnly
            Txt_code.SetFocus
            .Close
            Exit Sub
         End If
     
     End With

A+
Exploreur

 
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 20:43
Salut Basamir,

De retour ? Je sens que l'on va repartir dans une discussion un peu longue...Au cas on verra par MP pour trouver la bonne et la poster...Ainsi on évitera(du moins pour moi), des postes...Mais avant de continuer, tu as laissé tonmber les requêtes Sql, ou cela fonctionne(ton dernier post avec Chaibat05) ? 

A+
Exploreur

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 20:54
Salut,

Petite précision : Textbox(0) à TextBox(10), cela fait 11 TextBox, non? Parce que pour avoir 10 TextBox :  Textbox(0) à TextBox(9)...Alors tu en as 10 ou 11 ?

A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
28 avril 2007 à 20:57
Pardon 11

Avec Chaibat on a résolu le pb

Merci pour la précision
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 20:59
Salut,

Essaye cette requette, maintenant que tu es familiarisé avec le Recordset...Je suis partit du fait que tu avais 11 TextBox...

' Préparation Requête
                  
                    Dim Sql As String
                   
                    Sql = "UPDATE TaTable " & _                           "SET TonChamp1 '" & Txt_détails(0).Text & "' , TonChamp2 '" & Txt_détails(1).Text & "'," & _                           "TonChamp3 '" & Txt_détails(2).Text & "', TonChamp4 '" & Txt_détails(3).Text & "'," & _                           "TonChamp5 '" & Txt_détails(4).Text & "', TonChamp6 '" & Txt_détails(5).Text & "'," & _                           "TonChamp7 '" & Txt_détails(6).Text & "', TonChamp8 '" & Txt_détails(7).Text & "'," & _                           "TonChamp9 '" & Txt_détails(8).Text & "', TonChamp10 '" & Txt_détails(9).Text & "'," & _
                           "TonChamp11 = '" & Txt_détails(10).Text & "';"
                          
                          
                    RstAdo.Open Sql, TACONNECTIONADO, adOpenDynamic, adLockPessimistic

A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
28 avril 2007 à 21:16
Merci mais je voulais passer par une boucle merci pour l'aide
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 21:21
Salut,

Pourquoi veux-tu impérativement passé par une boucle ? Il faut que tu m'explique !

Ton prog même si c'est minime en temps, va faire sa boucle 10 fois, tandis que la requete le fait en une seule fois ! il y a là quelque chose que je pige pas..

A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
28 avril 2007 à 21:35
en fait c'est une façon de ne pas alourdir le code ni plus ni moins car moi ce que j'ai fait:
     oRS.Fields(Text1(3).DataField) = enr3
     oRS.Fields(Text1(4).DataField) = enr4
     oRS.Fields(Text1(5).DataField) = enr5
     oRS.Fields(Text1(6).DataField) = enr6
     oRS.Fields(Text1(7).DataField) = enr7
     oRS.Fields(Text1(8).DataField) = enr8
     oRS.Fields(Text1(9).DataField) = enr9
     oRS.Fields(Text1(10).DataField) = enr10

Ect..........

sinon j'ai une autre question si tu veux, comment peut on faire pour faire une recherche d'un enregistrement juste en tapant la valeur d'un champ?

Merci
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 avril 2007 à 21:41
Salut,
En mettant dans la requête la clause : WHERE Tonchamp '" & Text1.Text "' , ou dans le cas d'une variable : WHERE Tonchamp " & VAR & "  de type String, et numérique.

Par contre, peut-être que niveau code tu l'alourdi pas avec une boucle, mais tu "gaspilles" du temps...

As-tu essayé la requête ?
A+
Exploreur

 
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
28 avril 2007 à 22:14
oui j'ai essayé ta requête et ça marche je te remercie

pour la recherche, voici comment j'ai fait :
un bouton qui ouvre une frome où tu peux saisir le N°Client "champ de recherche"
dans cette forme je lance la recherche comme suit:
--------------------------------------------------------------
Private Sub ok_recherche_Click()
Dim bingoo As Boolean
Dim enr0, enr1, enr2, enr3, enr4, enr5, enr6, enr7, enr8, enr9, enr10 As String
On Error GoTo Err_Update

' Chemin complet et nom de la base
strDB = "C:\Comerço V1.0.1\comerço.mdb"
' Nom de la table
strTable = "Client"
 
' Ouverture connexion vers la base
Set oConn = New ADODB.Connection
oConn.Provider = "Microsoft.Jet.OLEDB.4.0"
oConn.Open strDB
 
' Ouverture recordset sur la table
Set oRS = New ADODB.Recordset
oRS.CursorLocation = adUseClient
oRS.Open strTable, oConn, adOpenDynamic, adLockOptimistic, adCmdTable

Do While oRS.EOF = False
If oRS.Fields("N°client") = Text1.Text Then
bingoo = True
enr0 = oRS.Fields(Client.Text1(0).DataField)
enr1 = oRS.Fields("Nom")
enr2 = oRS.Fields("Contact")
enr3 = oRS.Fields(Client.Text1(3).DataField)
enr4 = oRS.Fields(Client.Text1(4).DataField)
enr5 = oRS.Fields(Client.Text1(5).DataField)
enr6 = oRS.Fields(Client.Text1(6).DataField)
enr7 = oRS.Fields(Client.Text1(7).DataField)
enr8 = oRS.Fields(Client.Text1(8).DataField)
enr9 = oRS.Fields(Client.Text1(9).DataField)
enr10 = oRS.Fields(Client.Text1(10).DataField)
End If
oRS.MoveNext
Loop
If bingoo = True Then
    Client.Text1(0).Text = enr0
    Client.Text1(1).Text = enr1
    Client.Text1(2).Text = enr2
    Client.Text1(3).Text = enr3

    Client.Text1(4).Text = enr4

    Client.Text1(5).Text = enr5
    Client.Text1(6).Text = enr6

    Client.Text1(7).Text = enr7

    Client.Text1(8).Text = enr8
    Client.Text1(9).Text = enr9


    Client.Text1(10).Text = enr10
Unload Me
Else
MsgBox ("Le client recherché n'existe pas!")
Text1.Text = ""
Text1.SetFocus
     End If
'Dim sQuery As String'sQuery "Update Client Set Nom '" & enr1 & "', Contact='" & enr2 & "' Where N°client = '" & Text1(0).Text & "'"

'oConn.Execute sQuery

'Adodc1.Refresh
'actualiser.CausesValidation = True

Exit Sub
Err_Update:
MsgBox Err.Description
'Adodc1.Refresh
'modifier.CausesValidation = True
Unload Me
End Sub
------------------------------------------------------

mais avec ce code au lieu d'afficher l'enregistrement en question, il modifie l'enregistrement affiché lors du lancement de la requête de recherche.
0
basamir Messages postés 335 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 8 mars 2008
29 avril 2007 à 18:54
Merci bcp [auteurdetail.aspx?ID=17710 Exploreur]
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
29 avril 2007 à 19:01
Salut Basamir,

De rien et bon week-end...

A+
Exploreur

 
0
Rejoignez-nous