ACCESS

toocool -  
 toocool -
Bonjour, j'aurai besoin d'aide sur access. j'ai crée une table client avec une liste de champs (non, adresse, materiel installe, reference etc...) , j'ai également créer un formulaire pour pouvoir renseigner tous ces champs, puis un etat afin de pouvoir imprimer.
Mon problème: j'aimerai imprimer cet état par exemple pour un seul client bien défini
comment proceder ? (une explication pas a pas ne sera pas du luxe je débute avec access merci)

2 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Il existe plusieurs façon, voici un exemple :

    Dans un premier temps, il est souhaitable que le formulaire
    soit accroché sur une requête et non sur une(les) table(s).

    Étape 1

    Créer une requête globale qui sélectionne tous les enregistrements
    de toute(s) la(les) table(s).

    Étape 2

    Ouvrir ton formulaire en mode [Modification], et changer la référence
    vers la requête plutôt que vers la table.

    Étape 3

    Créer une requête qui sélectionne tous les champs souhaité dans un état,
    pour un client unique

    Clause Where ID_Client = xyz

    Étape 4

    Créer un État qui s'accroche sur la requête précédamment crée.

    Étape 5

    Installer un bouton dans le pied de page du premier formulaire qui permet
    de naviguer dans tous les enregistrements.

    Private Sub cmd_Execute_Click()

    On Error GoTo Err_cmd_Execute_Click

    'MsgBox Me.TitreFrancais.Value
    MsgBox Me.IDClient.Value

    Exit_cmd_Execute_Click:
    Exit Sub

    Err_cmd_Execute_Click:
    MsgBox Err.Description
    Resume Exit_cmd_Execute_Click

    End Sub

    Étape 6

    Éntrer en mode [Modification] pour la requête du client unique, changer
    le format pour format SQL.

    Copier/Coller le texte de la requête SQL

    Étape 7

    Amener ce texte dans le code du bouton ajouter

    Exemple de requête :

    'SELECT TableVideo.TitreFrancais, TableVideo.Cassette, TableVideo.Annee,
    ' TableVideo.Episode, TableVideo.Nationalite, TableVideo.Style,
    ' TableVideo.Categorie, TableVideo.Duree, TableVideo.Cote,
    ' TableVideo.Realisateur, TableVideo.Serie, TableVideo.TitreAnglais,
    ' TableVideo.Mode, TableVideo.FicheOK, TableVideo.Numero, TableVideo.Stock,
    ' TableVideo.Classe, TableVideo.Type, TableVideo.CompteurHeures,
    ' TableVideo.Qualite, TableVideo.Critiques, TableVideo.NumeroCode,
    ' TableVideo.ActeursPrincipaux, TableVideo.ActeursSecondaires,
    ' TableVideo.Position
    'FROM
    ' TableVideo
    'WHERE
    ' TableVideo.TitreFrancais="ROBIN DES BOIS";

    Étape 8

    Transformer cette requête en chaine de caractères, exemple :

    Dim ReqSQL As String

    ReqSQL = "SELECT TableVideo.TitreFrancais, TableVideo.Cassette, TableVideo.Annee," & _
    "TableVideo.Episode, TableVideo.Nationalite, TableVideo.Style," & _
    "TableVideo.Categorie, TableVideo.Duree, TableVideo.Cote," & _
    "TableVideo.Realisateur, TableVideo.Serie, TableVideo.TitreAnglais," & _
    "TableVideo.Mode, TableVideo.FicheOK, TableVideo.Numero, TableVideo.Stock," & _
    "TableVideo.Classe, TableVideo.Type, TableVideo.CompteurHeures," & _
    "TableVideo.Qualite, TableVideo.Critiques, TableVideo.NumeroCode," & _
    "TableVideo.ActeursPrincipaux, TableVideo.ActeursSecondaires," & _
    "TableVideo.Position " & _
    "FROM TableVideo " & _
    "WHERE " & _
    "TableVideo.TitreFrancais=" & """" & "ROBIN DES BOIS" & """" & ";"

    Étape 9

    Modifier le titre (le numéro de client dans votre cas) par le champ contenant le numéro de client :

    "WHERE " & _
    "TableVideo.TitreFrancais=" & """" & "ROBIN DES BOIS" & """" & ";"

    Devient :

    "WHERE " & _
    "TableVideo.TitreFrancais=" & """" & Me.TitreFrancais.Value & """" & ";"

    Étape 10

    Ajouter la fonction suivante :

    Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean

    Dim Definition As QueryDef

    If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
    ChangeRequeteDef = False
    Else
    Set Definition = CurrentDb.QueryDefs(ChaineRequete)
    Definition.SQL = ChaineSQL
    Definition.Close
    RefreshDatabaseWindow
    ChangeRequeteDef = True
    End If

    End Function
    '

    Étape 11

    Ajouter un appel à la fonction qui change la définition de la requête dans la procédure du bouton.

    et ajouter un appel au lancement de l'état.

    Vous devriez donc avoir le code suivant derrière votre bouton :

    Private Sub cmd_Execute_Click() 
    
    On Error GoTo Err_cmd_Execute_Click 
    
        Dim Ensemble As Recordset 
        Dim ReqSQL As String 
    
        ReqSQL = "SELECT TableVideo.TitreFrancais, TableVideo.Cassette, TableVideo.Annee," & _ 
                    "TableVideo.Episode, TableVideo.Nationalite, TableVideo.Style," & _ 
                    "TableVideo.Categorie, TableVideo.Duree, TableVideo.Cote," & _ 
                    "TableVideo.Realisateur, TableVideo.Serie, TableVideo.TitreAnglais," & _ 
                    "TableVideo.Mode, TableVideo.FicheOK, TableVideo.Numero, TableVideo.Stock," & _ 
                    "TableVideo.Classe, TableVideo.Type, TableVideo.CompteurHeures," & _ 
                    "TableVideo.Qualite, TableVideo.Critiques, TableVideo.NumeroCode," & _ 
                    "TableVideo.ActeursPrincipaux, TableVideo.ActeursSecondaires," & _ 
                    "TableVideo.Position " & _ 
                "FROM TableVideo " & _ 
                "WHERE " & _ 
                    "TableVideo.TitreFrancais=" & """" & Me.TitreFrancais.Value & """" & ";" 
    
        If (ChangeRequeteDef("Req_Titre_Specifique", ReqSQL)) Then 
            Set Ensemble = CurrentDb.OpenRecordset("Req_Titre_Specifique") 
            Ensemble.MoveLast 
            Ensemble.MoveFirst 
            Ensemble.Close 
            DoCmd.OpenReport "État DVD Titre Vidéo", acViewNormal, "", "", acNormal 
        End If 
         
    Exit_cmd_Execute_Click: 
        Exit Sub 
    
    Err_cmd_Execute_Click: 
        MsgBox Err.Description 
        Resume Exit_cmd_Execute_Click 
         
    End Sub 
    ' 
    


    n.b. Méfiez vous des sauts de ligne non souhaité dans ce texte.
    surtout au moment de la création de la requête SQL.

    Cdt

    Lupin
    0
  2. toocool
     
    Merci beaucoup pour ton explication et du temps passé , mais je crois que je vais abandonner cela est un peu trop compliqué pour moi , je ne suis vraiment pas arrivé a ce niveau de compétence merci encore
    0