Pb INSERT INTO provenant d'un sous formulaire

rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015 - 10 oct. 2010 à 11:35
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 12 oct. 2010 à 08:53
Bonjour,

Je n'arrive pas à effectuer un INSERT INTO en recherchant les champs d'un sous-formulaire.
Je sais le faire en trouvant les champs du formulaire, mais d'un sous-formulaire comment faire?
Ci-dessous mon code:
Set rst = CurrentDb.OpenRecordset(Forms.frmConsultationADV.Sfrm.Form.RecordSource)
  If Not rst.EOF Then            'si il y a des enregistrements
       	 rst.MoveFirst 'positionnement sur le 1er
       	 While Not rst.EOF          'Boucle pour lire chaque enregistrement
       		 DoCmd.SetWarnings False
       		 'Construire les sql d'une requête d'ajout
       	 sql = "INSERT INTO tblRptExcelADV ( ADV, [OF], Client, N°_OV_Ligne, N°_Commande_Client, Date_Fin_Fabrication_Planifiee, Date_Envoi_Mail_Production, Nlle_Date_Fin_Fab_Planifiee, Date_Modif_Accusé_Départ, Date_derniere_Modif_Date_Accuses )"
       		 sql = sql & " VALUES ('" ?????????????????????

DoCmd.RunSQL (sql)

Rst.moveNext
 	Wend
End If



Si c'est jack qui me réponds, c'est la suite de mon pb WeekDay.
Car les enregistrements, suite à la 1er requête, je les ajoute dans une table temporaire afin de pourvoir les exporter dans un fichier Excel.

Merci d'avance

Christian

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 oct. 2010 à 16:14
Salut Christian.

Comme je te l'ai déjà dit, un minimum de recherche avant de poser une question.
Tape "insert into" dans la recherche parmi les questions du forum et tu verras à quoi ressemble une requète et les pièges de cette syntaxe.
En faisant cette même recherche sur ton moteur de recherche favori, tu serais tombé sur la syntaxe SQL officielle d'une requète insert into.

Pour ce qui est de la syntaxe du contenu d'un RecordSet, l'aide de ton logiciel devrait y répondre --> rst.Fields("mon champ").Value ou rst.fields(1).Value

Donc, fais des recherches par toi même. Le forum n'est là qu'en cas de difficultés insurmontables, pas pour faire de la formation.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015
10 oct. 2010 à 21:09
Bonsoir Jack,

Je cherche, mais c'est pas évident.
Le INSERT INTO de base, ça va. Mais après............
Je débute,et vos conseils sont précieux.
La formation..... c'est la doc perso, des sites comme le tien et des conseils de pro comme toi.
Je suis un autodidacte, et j'ai très peu de formation en informatique.
On m'a demandé d'effectuer un projet, car ayant une connaissance d'Access, j'essaye de satisfaire.
Autrement, c'est peut-être le chemin de plus avoir de job..............
Par moment cela devient compliqué pour mes neurones.
Bref, je te remercie pour toutes l'aides que tu m'as apporté, et désolé de t'avoir énervé.
J'aime ta citation:

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)


Je n'ai pas totalement résolu mon pb, mais je suis obstiné.
Puis j'aime ce que je fais, malgré les problématiques que je rencontre.

Encore merci de ton aide

A bientôt
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 oct. 2010 à 23:41
Non, je ne suis pas énervé, mais je ne vois pas l'utilité de répéter ce qui est cent fois mieux expliqué dans les pages dédiées sur le net, suffit de lire et de tester.

Prends le simple exemple suivant :
Tape "insert into" parmi les questions du forum sur le site et clique sur la première question.
Voilà : tu as un exemple de syntaxe permettant d'insérer des valeurs issues de TextBox dans une requète SQL.
Si tu es un peu curieux, tu comprendras vite comment utiliser la syntaxe de ton RecordSet à la place des TextBox.
0
rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015
11 oct. 2010 à 15:28
Salut Jack,

j'ai enfin résolu monPB.
En mettant le n° du champ, cela à résolu PB.
Voilà la syntaxe:
sql = "INSERT INTO tblRptExcelADV ( ADV, [OF], Client, N°_OV_Ligne, N°_Commande_Client, Date_Fin_Fabrication_Planifiee, Date_Envoi_Mail_Production, Nlle_Date_Fin_Fab_Planifiee, Date_Modif_Accusé_Départ, Date_derniere_Modif_Date_Accuses )"
        sql = sql & " VALUES ('" & rst.fields(22).Value & "','" & rst.fields(0).Value & "'," & _
                    "'" & rst.fields(10).Value & "','" & rst.fields(11).Value & "'," & _
                    "'" & rst.fields(12).Value & "','" & rst.fields(13).Value & "'," & _
                    "'" & rst.fields(19).Value & "','" & rst.fields(18).Value & "'," & _
                    "'" & rst.fields(23).Value & "','" & rst.fields(24).Value & "')"
        'Debug.Print sql
        DoCmd.RunSQL (sql)


En mettant le nom du champ, j'avais l' erreur 3265 Ellement non trouvé dans la collection.

Merci de ton aide et de ta patience....

Christian
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 oct. 2010 à 19:47
Ok, bien joué.
Rappelle toi que les caractères spéciaux (accentués, espace, symboles comme °, etc) ou les noms identiques à celui d'un mot réservé du langage, ne sont pas acceptés en standard dans les noms de champ.
Si tu veux faire tout proprement, encadre ces noms avec des crochets [ et ].

C'est pareil dans les noms utilisés dans Fields("[N°_OV_Ligne]").Value

Dernière chose que tu sais surement à force d'arpenter les forums :
Quand un champ est déclaré dans la DB de type :
- Chaine : encadrement des valeurs avec '
- Date : Encadrement # (quand on utilise le format US)
- Numérique : Pas d'encadrement
0
rch05 Messages postés 32 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 5 mars 2015
11 oct. 2010 à 19:55
Merci pour les infos jack.
Demain, je refairai ma requête plus proprement avec les [].
Ca sera plus parlant.

Bonne soirée, et à bientôt sur le site.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 oct. 2010 à 08:53
PS : Pour connaître le nom des champs à ta disposition dans un RecordSet :
rst.Fields(0).Name
0
Rejoignez-nous