|
|
|
|
Bonjour à tous,
j'ai un formulaire de menu [f_principal] composé d'un contrôle "CtlTab0" avec 5 onglets numérotés de 0 à 4.
Je souhaite ouvrir un second formulaire [f_gl] soit en mode ajout dans l'onglet 2, soit en mode modification / Suppression dans l'onglet 3
Je fais un traitement de recherche en onglet 0 et récupère mes résultats dans une zone de liste.
Au double click sur une ligne de la zone de liste, je récupère l'identifiant de mon enregistrement et programme :
docmd.openform "f_gl", acnormal,,strcriteria
cela fonctionne mais m'ouvre [f_gl] comme une fenêtre indépendante et je n'arrive absolument pas à le faire ouvrir en onglet 3.
Comment m'y prendre svp tout en sachant que lorsque je clique sur mon onglet 2, je souhaite ouvrir [f_gl] en mode ajout ?
La cerise sur le gâteau serait de pouvoir ne pas afficher les barres de navigation entre enregistrements ssi je suis dans ce mode ajout !!! Mais là, ce sera pour plus tard, c'est pas le plus important...
En tous les cas, si vous pouviez m'aider à résoudre mon problème parce que je planche dessus depuis plusieurs semaines sans trouver d'issue.
Donc même s'il fallait une solution alternative, je suis preneur de tout ce qui peut me sortir de là !!!
@ très bientôt et mille mercis par avance
TF
Configuration: Windows XP Firefox 3.0.1
Bon, j'ai une bonne nouvelle: En mode Entrée de données, tu es seulement en mode ajout, sans boutons de déplacement. Donc le point qui t'intéressait le moins est résolu...
|
Salut Lately Geek et merci pour ton retour,
|
Après ta ligne DoCmd.OpenForm, tu ajoutes:
|
Salut LatelyGeek,
Private Sub CtlTab0_Change()
' On récupère l'indice de l'onglet actif
Select Case Me.CtlTab0
Case 0 ' Rechercher
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Me.ong_edit.Visible = False
Me.ong_add_record.Visible = True
Case 1 ' Statistiques
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Me.ong_edit.Visible = False
Me.ong_add_record.Visible = True
Case 2 ' Ajouter un enregistrement
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Me.AllowEdits = False
Me.AllowDeletions = False
Me.AllowAdditions = True
Me.Dataentry = True
Case 3 ' Modifier, Supprimer
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Case 4 ' Quitter
' Maintien en affichage de l'onglet appelant = comportement Bouton
If (Me.lbl_No_Onglet.Caption = "NoOnglet") Then
Me.CtlTab0 = 0
Else
Me.CtlTab0 = Me.lbl_No_Onglet.Caption
End If
' Demande de validation cloture ou maintien de l'application ouverte
If MsgBox("Souhaitez-vous quitter l'application en cours ?", vbApplicationModal + vbMsgBoxSetForeground + vbExclamation + vbYesNo + vbDefaultButton1, "Fermeture de l'application ") = vbYes Then
DoCmd.Close
End If
End Select
End Sub
le contrôle onglet ong_edit contient mon formulaire de traitement des données en mode édition avec les propriétés nom = f_editrecords et source = f_records le contrôle onglet ong_add contient mon formulaire de traitement des données en mode ajout avec les propriétés nom = f_addrecords et source = f_records Lorsque l'un de ces deux contrôles est actif, l'autre devient invisible et vice versa. Ce point fonctionne nickel. Le propriété par défaut de f_records sont : AllowEdits = False AllowDeletions = False AllowAdditions = True Dataentry = True Du code de mon formulaire de recherche (case 0) f_search : Private Sub lst_resultat_DblClick(Cancel As Integer)
Dim rst As Recordset
Dim strCriteria As String
Set rst = CurrentDb.OpenRecordset("tbl_TempLstFrm", dbOpenSnapshot)
' recherche les informations de la table
rst.FindFirst ("Table='" & Me.cbo_table & "'")
If rst.NoMatch Then ' non trouvé
MsgBox "Cette table ne possède pas de formulaire. Veuillez renseigner la table des paramètres.", _
vbCritical + vbOKOnly, "formulaire de Recherche"
Exit Sub
Else ' trouvé
If lf_GetTypeField(Me.cbo_table, rst.Fields("Champ")) = dbText Then 'la clef est Texte
strCriteria = "'" & Me.lst_resultat & "'"
Else 'la clef est numérique
strCriteria = Me.lst_resultat
End If
Forms!f_principal!ong_edit.Visible = True
Forms!f_principal!ong_add_record.Visible = False
Forms!f_principal!CtlTab0.Value = 3
Forms!f_principal!f_editrecord!No_enreg.Value = strCriteria
Forms!f_principal.f_editrecord.Form.AllowEdits = True
Forms!f_principal.f_editrecord.Form.AllowDeletions = True
Forms!f_principal.f_editrecord.Form.AllowAdditions = False
Forms!f_principal.f_editrecord.Form.Dataentry = False
End If
End Sub
Lorsque je doucle click sur une ligne de ma zone de liste résultat de recherche, je récupère le numéro de l'enregistrement en strCriteria, j'active l'onglet d'édition et rend invisible celui d'ajout puis je cherche à affecter de nouvelles valeurs aux propriétés allow.... Ce qui ne fonctionne pas : Il semble que, comme mon formulaire de traitement des données se trouve inclu dans un contrôle (l'onglet) du formulaire principal, je n'ai jamais aucun événement au niveau du formulaire d'édition. Je ne parviens donc pas à activer sur un quelconque événement une action de test dans mon formulaire pour savoir si j'accède en mode add ou edit. Donc, je ne sais pas non plus affecter ma variable strCriteria pour une éventuelle clause Select de positionnement sur l'enregistrement appelé. Suis-je bien clair... |
Oh là, je viens ENFIN de comprendre que tu ouvres les formulaires dans les onglets. Je ne suis certaine que ça soit le plus simple.
|
Salut LatelyGeek,
|
C'était aussi une des hypothèse que j'avais testé.
Forms!f_principal!ong_edit.Visible = True
Forms!f_principal!ong_add_record.Visible = False
Forms!f_principal!CtlTab0.Value = 3
'Forms!f_principal!f_editrecord!No_enreg.Value = strCriteria
Me!f_editrecord.Form.AllowEdits = True
Me!f_editrecord.Form.AllowDeletions = True
Me!f_editrecord.Form.AllowAdditions = False
Me!f_editrecord.Form.Dataentry = False |
Rectificatif,
Forms!f_principal!ong_edit.Visible = True
Forms!f_principal!ong_add_record.Visible = False
Forms!f_principal!CtlTab0.Value = 3
'Forms!f_principal!f_editrecord!No_enreg.Value = strCriteria
Forms!f_principal!f_editrecord.Form.AllowEdits = True
Forms!f_principal!f_editrecord.Form.AllowDeletions = True
Forms!f_principal!f_editrecord.Form.AllowAdditions = False
Forms!f_principal!f_editrecord.Form.Dataentry = False
Mille mercis !! un dernier bon geste m'sieurs dames ;-) Comme tu le vois, j'ai laissé en commentaire le passage de critère. En effet, lorsque je l'active il me mentionne erreur 3164, le champ ne peut pas être mis à jour. Ben je sais !!! C'est pas c'que j'te demande !!! J'veux juste que tu te positionnes sur l'enregistrement. En fait je lui passe en commentaire la clef de l'enregistrement que je souhaite atteindre. Est-ce que tu saurais d quelle façon je dois m'y prendre. J'avais l'habitude de critère du Docmd.OpenForm pour cela mais je n'ai plus l'option. En fait, il faudrait que je puisse lui dire quelques chose dans le genre select * from tbl_donnees where no_enreg = strCriteria |
Salut à tous et un grand merci à toi, LatelyGeek,
Forms!f_principal!ong_edit.Visible = True
Forms!f_principal!ong_add_record.Visible = False
Forms!f_principal!CtlTab0.Value = 3
Forms!f_principal!f_editrecord.Form.AllowEdits = True
Forms!f_principal!f_editrecord.Form.AllowDeletions = True
Forms!f_principal!f_editrecord.Form.AllowAdditions = False
Forms!f_principal!f_editrecord.Form.Dataentry = False
Forms!f_principal!f_editrecord.Form.Filter = strCriteria
Forms!f_principal!f_editrecord.Form.FilterOn = True
Extrait du code de f_principal pour permettre l'utilisation du même sous-formulaire f_records en mode ajout Private Sub CtlTab0_Change()
Select Case Me.CtlTab0
Case 0 ' Rechercher
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Me.ong_edit.Visible = False
Me.ong_add_record.Visible = True
Forms!f_principal!f_editrecord.Form.FilterOn = False
Case 2 ' Ajouter un enregistrement
Me.lbl_No_Onglet.Caption = Me.CtlTab0
Forms!f_principal!f_addrecord.Form.AllowEdits = False
Forms!f_principal!f_addrecord.Form.AllowDeletions = False
Forms!f_principal!f_addrecord.Form.AllowAdditions = True
Forms!f_principal!f_addrecord.Form.Dataentry = True
End Select
End Sub |