J’ai un petit problème, pour cela je vous explique ma base
J'ai une table "Horaire" qui est relie par une relation 1 a plusieurs a une
table "Contenu Horaire". Cette derniere est relie a la table employe par une
relation plusieurs a 1. En fait, je veux creer un nouvel enregistrement
horaire correspondant a une date precise. Cette enregistrement contiendra un
sous formulaire (cont horaire). Chaque ligne du sous formulaire fera
reference a un employe. Je sais creer tout cela et ca fonctionne, mais ce que
je veux, c'est que chaque nouvel enregistrememt "horaire" contiennent deja
l'ensemble des employes avec par exemple le champ "Heure_normale" de la table
cont horaire egal a 8 pour chaque employe. Ce qui m'eviterait de
reselectionner + de 100 employes par jour...
Mon code VB pour generer un nouvel enregistrement automatiquement
correspondant a chaque ligne de la table employe en assignant par defaut une
valeur au champ "Heure_normale" ne fonctionne pas…
Voilà le code que j'ai appliqué sur l'évenement Click d'un bouton dans mon
formulaire Horaire.
Dim dbsCurrent As Database
Dim rstEmp As Recordset
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Lors de l'execution, j'obtiens une erreur qui me ramène à la ligne suivante :
VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ";")
et plus particulièrement sur ("Ref_employé") en disant :
erreur de compilation, séparateur de liste attendu.
J'ai essayé de changer plein de trucs mais pas de solution
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe... Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le code pour générer automatiquement un enregistrement par employé et rien ne se passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click() On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database Dim rstEmp As Recordset Set dbsCurrent = OpenDatabase(CurrentDb.Name) Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale, Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")" rstEmp.MoveNext Loop <snip>
Heu... en gros tu essaies... - de sélectionner TOUS les employés (sans clause Where ? ) - de coller 8 dans [Heure_normale] écrit plutôt: Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _ & "Select valeur, ref_employé " _ & "From .... Where ..."
et sans devoir ouvrir de recordset...
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome
Salut,
"Baptiste"
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe...
Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le
code pour générer automatiquement un enregistrement par employé et rien ne se
passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database
Dim rstEmp As Recordset
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF
dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale,
Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")"
rstEmp.MoveNext
Loop
<snip>
Heu... en gros tu essaies...
- de sélectionner TOUS les employés (sans clause Where ? )
- de coller 8 dans [Heure_normale]
écrit plutôt:
Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String
strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _
& "Select valeur, ref_employé " _
& "From .... Where ..."
et sans devoir ouvrir de recordset...
--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe... Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le code pour générer automatiquement un enregistrement par employé et rien ne se passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click() On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database Dim rstEmp As Recordset Set dbsCurrent = OpenDatabase(CurrentDb.Name) Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale, Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")" rstEmp.MoveNext Loop <snip>
Heu... en gros tu essaies... - de sélectionner TOUS les employés (sans clause Where ? ) - de coller 8 dans [Heure_normale] écrit plutôt: Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _ & "Select valeur, ref_employé " _ & "From .... Where ..."
et sans devoir ouvrir de recordset...
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome
Baptiste
Merci pour ta réponse mais je ne suis pas assez expérimenté pour en tirer bonne usage, en clair que dois-je écrire comme code?!
Merci
Salut,
"Baptiste"
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe... Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le code pour générer automatiquement un enregistrement par employé et rien ne se passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click() On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database Dim rstEmp As Recordset Set dbsCurrent = OpenDatabase(CurrentDb.Name) Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale, Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")" rstEmp.MoveNext Loop <snip>
Heu... en gros tu essaies... - de sélectionner TOUS les employés (sans clause Where ? ) - de coller 8 dans [Heure_normale] écrit plutôt: Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _ & "Select valeur, ref_employé " _ & "From .... Where ..."
et sans devoir ouvrir de recordset...
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome
Merci pour ta réponse mais je ne suis pas assez expérimenté pour en tirer
bonne usage, en clair que dois-je écrire comme code?!
Merci
Salut,
"Baptiste"
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe...
Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le
code pour générer automatiquement un enregistrement par employé et rien ne se
passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database
Dim rstEmp As Recordset
Set dbsCurrent = OpenDatabase(CurrentDb.Name)
Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF
dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale,
Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")"
rstEmp.MoveNext
Loop
<snip>
Heu... en gros tu essaies...
- de sélectionner TOUS les employés (sans clause Where ? )
- de coller 8 dans [Heure_normale]
écrit plutôt:
Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String
strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _
& "Select valeur, ref_employé " _
& "From .... Where ..."
et sans devoir ouvrir de recordset...
--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
Merci pour ta réponse mais je ne suis pas assez expérimenté pour en tirer bonne usage, en clair que dois-je écrire comme code?!
Merci
Salut,
"Baptiste"
Désolé...il n'y a plus d'erreur de syntaxe mais rien ne se passe... Je crée une nouvelle fiche horaire, je clique sur mon bouton qui contient le code pour générer automatiquement un enregistrement par employé et rien ne se passe..
rien ne se retrouve dans la table ?
J'ai pourtant bien mes deux champs qui sont crées dans mon sous formulaire...
il sont liés aux champs de la bonne table ?
Voici à nouveau le code que j'utilise :
Private Sub Commande22_Click() On Error GoTo Err_Commande22_Click
Dim dbsCurrent As Database Dim rstEmp As Recordset Set dbsCurrent = OpenDatabase(CurrentDb.Name) Set rstEmp = dbsCurrent.OpenRecordset("SELECT * FROM [Employé];")
Do While Not rstEmp.EOF dbsCurrent.Execute "INSERT INTO [Cont horaire] (Heure_normale, Ref_employé) VALUES (" & 8 & "," & rstEmp.Fields("Ref_employé") & ")" rstEmp.MoveNext Loop <snip>
Heu... en gros tu essaies... - de sélectionner TOUS les employés (sans clause Where ? ) - de coller 8 dans [Heure_normale] écrit plutôt: Values ( 8," & rstEmp.Fields("Ref_employé") & ");"
- et la Ref_employé du recordset dans cette même table ?
Remplace dbsCurrent.Execute par:
DoCmd.RunSQL "Insert Into...
tu aura les messages d'erreurs ;-)
PS: Normalement, tu devrais avoir quelque chose comme:
Dim strSQL As String strSQL = "Insert Into [Cont horaire] (Heure_normale,Ref_Employé) " _ & "Select valeur, ref_employé " _ & "From .... Where ..."
et sans devoir ouvrir de recordset...
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome