Insertion de ligne
Résolu
begounou
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
begounou Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
begounou Messages postés 42 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai 1 formulaire qui me permet d'enregistrer les données du personnel d'un département de notre structure ce formulaire est basé sur une table nommé DT_personnel_MAG
un autre formulaire qui me permet d'enregistrer les données du personnel d'un autre département de notre structure ce formulaire est basé sur une table nommé DT_personnel_EL
je pouvais cumuler ces 2 données sur la même table, mais je préfère les gérer séparément pour d'autres raisons. mais il se trouve aussi parfois qu'on affecte un salarié d'un département à l'autre.
sur les formulaires principaux, j'ai mis des filtres pour faciliter les recherches,
sur les sous formulaires j'ai mis des boutons d'actions conditionnées par des codes vba que j'ai trouvé sur ce forum pour permettre de modifier et supprimer un enregistrement.
maintenant, je souhaite ajouter un autre bouton d'action sur les sous formulaire pour pouvoir affecter un salarié de la table DT_personnel_MAG à la table DT_personnel_EL.
la table DT_personnel_MAG et la table DT_personnel_EL ont les même colonnes exemple: id_agent; nom_prenom; matricule.
j'ai 1 formulaire qui me permet d'enregistrer les données du personnel d'un département de notre structure ce formulaire est basé sur une table nommé DT_personnel_MAG
un autre formulaire qui me permet d'enregistrer les données du personnel d'un autre département de notre structure ce formulaire est basé sur une table nommé DT_personnel_EL
je pouvais cumuler ces 2 données sur la même table, mais je préfère les gérer séparément pour d'autres raisons. mais il se trouve aussi parfois qu'on affecte un salarié d'un département à l'autre.
sur les formulaires principaux, j'ai mis des filtres pour faciliter les recherches,
sur les sous formulaires j'ai mis des boutons d'actions conditionnées par des codes vba que j'ai trouvé sur ce forum pour permettre de modifier et supprimer un enregistrement.
maintenant, je souhaite ajouter un autre bouton d'action sur les sous formulaire pour pouvoir affecter un salarié de la table DT_personnel_MAG à la table DT_personnel_EL.
la table DT_personnel_MAG et la table DT_personnel_EL ont les même colonnes exemple: id_agent; nom_prenom; matricule.
Configuration: Windows / Chrome 85.0.4183.121
A voir également:
- Insertion de ligne
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Insertion sommaire word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
9 réponses
Bonjour,
tu peux exécuter une requête pour copier du genre :
Et si besoin, ensuite supprimer l'enregistrement dans la table DT_personnel_MAG.
a+
tu peux exécuter une requête pour copier du genre :
dim sql as string sql = "Insert into DT_personnel_EL (id_agent, nom_prenom, matricule...) Values Select * from DT_personnel_MAG where id_agent = " & valeur & ";"
Et si besoin, ensuite supprimer l'enregistrement dans la table DT_personnel_MAG.
a+
begounou
Merci pour la promptitude de votre intervention, cependant, je souhaite que vous m'expliquez un peu plus en détails comment utiliser ce code. parce-que là je galère.
Bonsoir,
ça dépend du comment tu souhaites "sélectionner" l'enregistrement à déplacer dans le sous-form...
Ceci déterminera le "valeur" que j'ai mis en exemple dans le code.
Ensuite, il suffira de mettre ce code sur le bouton qui permettra de copier :
et celui ci pour supprimer
ça dépend du comment tu souhaites "sélectionner" l'enregistrement à déplacer dans le sous-form...
Ceci déterminera le "valeur" que j'ai mis en exemple dans le code.
Ensuite, il suffira de mettre ce code sur le bouton qui permettra de copier :
dim requetesqlcopie as string requetesqlcopie = "Insert into DT_personnel_EL (id_agent, nom_prenom, matricule...) Values Select * from DT_personnel_MAG where id_agent = " & valeur & ";" docmd.runsql requetesqlcopie
et celui ci pour supprimer
dim requetesqlsupp as string requetesqlsupp = "DELETE FROM DT_personnel_MAG where id_agent = " & valeur & ";" docmd.runsql requetesqlsupp
Quel bouton ?
Et surtout, quel code il y a t'il sur ce bouton ?
A+
Et surtout, quel code il y a t'il sur ce bouton ?
A+
sur l'architecture vous avez peut être remarquez qu'il y'a 3 boutons une corbeille, un bouton modifié et le dernier que j'ai inséré pour coller le code que vous venez de me donner
Private Sub Commande60_Click() Dim requetesqlcopie As String requetesqlcopie = "Insert into DT_Personnels_MAG (Nom__Prenom, Matricule, ecole, Date_de_Naissance, Sex, Date-Embauche, Fonction_ID_FK, Qualification_ID_FK, Structure_ID_FK, Catégorie_ID_FK, Corps_ID_FK, Cadre_ID_FK, Position_Admin_ID_FK, Section_ID_FK2, Type_Contrat_ID_FK, Durée_Contrat, P_date, F_date) Values Select * from DT_Personnels_EL where Agent_id = " & Valeur & ";" End Sub
J'ai vu 3 bouton, mais je ne peux pas deviner à quoi ils servaient...
Là dans le code que tu as mis sur le bouton, il ne se passe rien, tu n'exécutes rien, tu affectes une chaine de caractères à une variable...
Le id_agent est où ??? Il correspond à quel champ de la table et quel controle du sous-form ??
A+
Là dans le code que tu as mis sur le bouton, il ne se passe rien, tu n'exécutes rien, tu affectes une chaine de caractères à une variable...
Le id_agent est où ??? Il correspond à quel champ de la table et quel controle du sous-form ??
A+
Bonjour RV71
après plusieurs essaies, je reviens encore vers vous.
je vous envois ci-dessous le code du bouton supprimé, peut être que cela vous permettrez de m'aider
après plusieurs essaies, je reviens encore vers vous.
je vous envois ci-dessous le code du bouton supprimé, peut être que cela vous permettrez de m'aider
Private Sub Commande52_Click() On Error Resume Next Nom__Prenom = Me.Nom__Prenom If IsNull(Nom__Prenom) Then Nom__Prenom = "" ' Matricule = Me.Matricule If IsNull(Matricule) Then Matricule = "" ' Mat_Id = Me.Agent_ID If IsNull(Mat_Id) Then Mat_Id = 0 ' Cadre_ID_FK = Me.Cadre_ID_FK If IsNull(Cadre_ID_FK) Then Cadre_ID_FK = "" ' Corps_ID_FK = Me.Corps_ID_FK If IsNull(Corps_ID_FK) Then Corps_ID_FK = "" ' Catégorie_ID_FK = Me.Catégorie_ID_FK If IsNull(Catégorie_ID_FK) Then Catégorie_ID_FK = "" ' Fonction_ID_FK = Me.Fonction_ID_FK If IsNull(Fonction_ID_FK) Then Fonction_ID_FK = "" ' Structure_ID_FK = Me.Structure_ID_FK If IsNull(Structure_ID_FK) Then Structure_ID_FK = "" ' Section_ID_FK2 = Me.Section_ID_FK2 If IsNull(Section_ID_FK2) Then Section_ID_FK2 = "" ' Message = "Souhaitez-vous supprimer l'agent " & Nom__Prenom & " (" & Trim(Str(Mat_Id)) & ") ?" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Attention, la suppression d'un agent entraîne également" & Chr(13) & Chr(10) & "la supression de tous les mouvements et historiques associés !" ' reponse = MsgBox(Message, vbYesNo + vbQuestion, "Suppression Agent") ' Select Case reponse Case 6 DoCmd.SetWarnings False DoCmd.RunSQL "DELETE DT_Personnels.* FROM DT_Personnels WHERE (((DT_Personnels.Agent_Id)= " & Mat_Id & "));" DoCmd.RefreshRecord DoCmd.Requery Me.Nom__Prenom ' DoCmd.SetWarnings True End Select ' End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Tu as uniquement à copier le code de ton bouton supprimer et le modifier uniquement au niveau de la requête finale, ce qui donnerait :
Tu as uniquement à copier le code de ton bouton supprimer et le modifier uniquement au niveau de la requête finale, ce qui donnerait :
Private Sub Commande60_Click() On Error Resume Next Nom__Prenom = Me.Nom__Prenom If IsNull(Nom__Prenom) Then Nom__Prenom = "" ' Matricule = Me.Matricule If IsNull(Matricule) Then Matricule = "" ' Mat_Id = Me.Agent_ID If IsNull(Mat_Id) Then Mat_Id = 0 ' Cadre_ID_FK = Me.Cadre_ID_FK If IsNull(Cadre_ID_FK) Then Cadre_ID_FK = "" ' Corps_ID_FK = Me.Corps_ID_FK If IsNull(Corps_ID_FK) Then Corps_ID_FK = "" ' Catégorie_ID_FK = Me.Catégorie_ID_FK If IsNull(Catégorie_ID_FK) Then Catégorie_ID_FK = "" ' Fonction_ID_FK = Me.Fonction_ID_FK If IsNull(Fonction_ID_FK) Then Fonction_ID_FK = "" ' Structure_ID_FK = Me.Structure_ID_FK If IsNull(Structure_ID_FK) Then Structure_ID_FK = "" ' Section_ID_FK2 = Me.Section_ID_FK2 If IsNull(Section_ID_FK2) Then Section_ID_FK2 = "" ' Message = "Souhaitez-vous Déplacer l'agent " & Nom__Prenom & " (" & Trim(Str(Mat_Id)) & ") ?" ' reponse = MsgBox(Message, vbYesNo + vbQuestion, "Déplacement Agent") ' Select Case reponse Case 6 dim requetesqlcopie as string requetesqlcopie = "Insert into DT_Personnels_MAG (Nom__Prenom, Matricule, ecole, Date_de_Naissance, Sex, Date-Embauche, Fonction_ID_FK, Qualification_ID_FK, Structure_ID_FK, Catégorie_ID_FK, Corps_ID_FK, Cadre_ID_FK, Position_Admin_ID_FK, Section_ID_FK2, Type_Contrat_ID_FK, Durée_Contrat, P_date, F_date) Values Select * from DT_Personnels_EL where Agent_id = " & Me.Agent_ID & ";" DoCmd.SetWarnings False DoCmd.RunSQL requetesqlcopie 'on copie DoCmd.RunSQL "DELETE DT_Personnels.* FROM DT_Personnels WHERE (((DT_Personnels.Agent_Id)= " & Mat_Id & "));" DoCmd.RefreshRecord DoCmd.Requery Me.Nom__Prenom ' DoCmd.SetWarnings True End Select ' End Sub
oui effectivement j'ai modifié le nom de la table DT_Personnels_EL c'est donc DT_Personnels au lieu de DT_Personnels_EL.
DT_Personnels_MAG existe toujours
https://www.cjoint.com/c/JIDk0NW6n2k
le bouton déplacer est testé sur le formulaire qui s'ouvre par le premier onglé du formulaire principal ce formulaire est basé sur la table DT_Personnels
DT_Personnels_MAG existe toujours
https://www.cjoint.com/c/JIDk0NW6n2k
le bouton déplacer est testé sur le formulaire qui s'ouvre par le premier onglé du formulaire principal ce formulaire est basé sur la table DT_Personnels
Je regarde,
mais tes tables n'ont pas les mêmes champs, il y a un champ tranche_age en plus dans la table dt_personnels
mais tes tables n'ont pas les mêmes champs, il y a un champ tranche_age en plus dans la table dt_personnels
L'autre souci, est que tu as également un champ type 'pièce jointe' dans les tables, il faut donc passer en revue dans la requête l'ensemble des champs...
Edit : en fait, je crois que sql ne veut pas avec ce type de champ...
Il va falloir passer par du dao
Edit : en fait, je crois que sql ne veut pas avec ce type de champ...
Il va falloir passer par du dao
Donc, as-tu réellement besoin de ce champ type pièce jointe ?
Ne peux-tu pas le modifier en type texte long de sorte à avoir le chemin complet du fichier ?
Ca simplifierait grandement, et surtout, éviterait de tout modifier si un jour tu devras insérer un nouveau champ dans les tables concernées...
A te lire
Ne peux-tu pas le modifier en type texte long de sorte à avoir le chemin complet du fichier ?
Ca simplifierait grandement, et surtout, éviterait de tout modifier si un jour tu devras insérer un nouveau champ dans les tables concernées...
A te lire
Donc si tu as exactement les même champs dans les 2 tables et sans champ type pièce jointe, le code suivant fonctionne sans problème
Private Sub Commande60_Click() Nom__Prenom = Me.Nom__Prenom If IsNull(Nom__Prenom) Then Nom__Prenom = "" ' Matricule = Me.Matricule If IsNull(Matricule) Then Matricule = "" ' Mat_Id = Me.Agent_ID If IsNull(Mat_Id) Then Mat_Id = 0 ' Cadre_ID_FK = Me.Cadre_ID_FK If IsNull(Cadre_ID_FK) Then Cadre_ID_FK = "" ' Corps_ID_FK = Me.Corps_ID_FK If IsNull(Corps_ID_FK) Then Corps_ID_FK = "" ' Catégorie_ID_FK = Me.Catégorie_ID_FK If IsNull(Catégorie_ID_FK) Then Catégorie_ID_FK = "" ' Fonction_ID_FK = Me.Fonction_ID_FK If IsNull(Fonction_ID_FK) Then Fonction_ID_FK = "" ' Structure_ID_FK = Me.Structure_ID_FK If IsNull(Structure_ID_FK) Then Structure_ID_FK = "" ' Section_ID_FK2 = Me.Section_ID_FK2 If IsNull(Section_ID_FK2) Then Section_ID_FK2 = "" ' Message = "Souhaitez-vous Déplacer l'agent " & Nom__Prenom & " (" & Trim(Str(Mat_Id)) & ") ?" ' reponse = MsgBox(Message, vbYesNo + vbQuestion, "Déplacement Agent") ' Select Case reponse Case 6 DoCmd.SetWarnings False Dim requetesqlcopie As String requetesqlcopie = "insert into dt_personnels_mag select * from dt_personnels where Agent_id = " & Me.Agent_ID & ";" DoCmd.RunSQL requetesqlcopie 'on copie DoCmd.RunSQL "DELETE DT_Personnels.* FROM DT_Personnels WHERE (((DT_Personnels.Agent_Id)= " & Mat_Id & "));" ' DoCmd.SetWarnings True End Select ' End Sub