IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Recordset comme source de mon sous formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut Recordset comme source de mon sous formulaire
    Bonjour,

    Je vient de crée mon recordset qui contient le resultat de ma requete SQL.

    J'amerais affecté à un sous formulaire la source SQL (resultat) de mon recordset afin qui m'affiche les lignes des demandes enregistré dans mon rst.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Case "alerte_1"
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset
     
    End Select
    .

    Aurriez vous une idée de comme effectuer cela ?

    Merci
    Cordialement,

    Rémy

  2. #2
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    salut,

    pourquoi ne pas mettre ta requete SQL comme source de ton sous formulaire directement, plutôt que de passer par un recordset ?

  3. #3
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Parce que je vais avoir plusieurs requêtes SQL donc je ne peut pas me permettre de l'entrer en dur en temps que source du sous formulaire.

  4. #4
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Salut,

    Vas-tu avoir plusieurs requetes pour un même sous-formulaire au même moment?

    Si c'est le cas, tu peux toujours utiliser cette technique en utilisant le mot UNION entre tes requetes sources

  5. #5
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Merci de prendre part à mon souci jimay

    Alors j'ai une SUB (calcul_alerte) avec plusieurs Rocordset.
    j'aimerais que quand je parcours ma sub :

    Si Alerte 1 = Recordset 1 = affecte la valeur de mon recorset 1 à la source du sous formulaire
    Si Alerte 2 = Recordset 2 = affecte la valeur de mon recorset 1 à la source du sous formulaire
    Etc...

    J'ai affecté à mes boutons à l'aide du CASE la valeur :
    btn 1 = alerte 1 = exécute ma SUB (calcul_alerte) et exécute que la partie Alerte 1.
    Pareil pour les boutons suivant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub calcul_alerte(Type_alerte)
     
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim SQL, WHERE As String
    Dim Date_limite_retour_chiffrage As Date
     
     
    Select Case Type_alerte
     
    ' ######### Alerte_1 #########
     
    Case "alerte_1"
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset
     
     
    '######### Alerte_2 #########
     
    Case "alerte_2"
     
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_propal, Now())<=  '" & txb_delai_validation_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
    Me.txb_relance_propal_client.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset
     
     
    '######### Alerte_3 #########
     
     
    '######### PROPAL A TRAITER #########
     
    Case "propal_a_traiter"
     
    SQL = "Select * from [demande_de_service] where reception_chiffrage = "" "
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
    Me.txb_cadrage_a_traiter.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset
     
     
     
    End Select
     
     
    End Sub
    Voila le code de la SUB (calcul_alerte).

    Merci

  6. #6
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Re,

    je n'ai que très peu utilisé les sous formulaires, mais dans chacun de tes Case tu pourrais remplacer cette portion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.NomDuSousForm.Form.RecordSource = SQL
    Ce qui affecterais à ton sous_formulaire les données résultantes de ta requete.
    Par contre tu n'auras plus le RecordCount, donc si cette partie est importante tu peux toujours la laisser

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 30
    Points
    30
    Par défaut
    Salut

    il est possible au choix d'utiliser la propriété .recordsource (on définira la chaine SQL "SELECT blabla" qu'on associe au formulaire) ou bien la propriété .recordset (on définira le recordset comme n'importe quel recordset ADO ou DAO qu'on associe au formulaire).

    Exemple ad hoc de soluce 2: on a un form principal chargé d'effectuer une recherche et d'en présenter les résultats dans un sous form nommé [sub_frm_ResultSearch]:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim rst as 'blabla usuel
    Set rst = 'blabla usuel
     
    strsql = "SELECT MonChamp FROM Matable WHERE blabla"
     
    rst.open strsql
     
    Set Me.sub_frm_ResultSearch.Form.Recordset = rst
     
    rst.Close
    set rst = Nothing
    La FAQ et/ou quelques appuis sur F1 te donneront de plus amples explications.

  8. #8
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    tiens, je ne connaissais pas cette méthode ^^ ça peut être pratique

  9. #9
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Merci de vos réponses.
    J’ai essayé ta méthode Jimay sans réussite malgré plusieurs essaie avec différente formulation. Il y à toujours le même message d’erreur qui apparaît :
    « L’expression entrée fait référence à un objet fermé ou supprimé »

    En ce qui concerne ta méthode lvz00 je t’avouerais que je n’est pas très bien compris sont fonctionnement et sont utilité surtout.

    Dans tout les cas je doit compter le nombre de résultat de ma requête pour les afficher dans un textbox.

    Rémy

  10. #10
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Salut Remus,

    Peut-on voir ton code source qui t'apporte ce message d'erreur ?

  11. #11
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
     
    Me.vue_alerte.Form.RecordSource = SQL
     
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset
    J'ai éssayé cela mais aussi ce que tu ma conseillé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Me.vue_alerte.Form.RecordSource = SQL
     
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset

  12. #12
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    étrange, la 1ere version devrait marcher à première vue.
    Sur quelle ligne apparait l'erreur?

    et as-tu essayé la technique de lvz00?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
     
    Me.vue_alerte.Form.Recordset = rst
     
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    rst.Close ' Fermeture du Recordset

  13. #13
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    Bonjour Developpez

    Citation Envoyé par jimay Voir le message
    Sur quelle ligne apparait l'erreur?
    Elle apparaît quand j'affecte la source de mon sous formulaire (événement surligné en jaune)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.vue_alerte.Form.RecordSource = SQL
    Citation Envoyé par jimay Voir le message
    et as-tu essayé la technique de lvz00?
    Non comme je les dit plus haut je n’est pas trop compris le principe de sont code et surtout sont fonctionnement (je l'avait signalé dans mon poste précédent).

  14. #14
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Points : 59
    Points
    59
    Par défaut
    J’ai essayé plusieurs truc assez simple mais cela ne fonctionne pas également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![Accueil]![vue_alerte].Form.RecordSource = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![Accueil]![vue_alerte].Form.RecordSource = "SQL"
    Je les est rajouté à cette endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     Case "alerte_1"
    SQL = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    Set db = CurrentDb              ' définition de la base
    Set rst = db.OpenRecordset(SQL, dbReadOnly) ' Ouverture du recordset SQL
     
    If rst.RecordCount <> 0 Then
    rst.MoveLast
    End If
     
    Me.txb_relance_resp_ope_snecma.Value = rst.RecordCount
     
    'Forms![Accueil]![vue_alerte].Form.RecordSource = "Select * from [demande_de_service] where  DateDiff('d', [demande_de_service].retour_chiffrage_souhaite_client, Now())<=  '" & txb_delai_retour_cadrage & "'"
     
    'Forms![Accueil]![vue_alerte].Form.RecordSource = "SQL"
     
    rst.Close ' Fermeture du Recordset
    Accueil = Formulaire principale
    vue_alerte = sous formulaire
    La requete SQL que je cherche à affecter est celle contenue dans mon recordset.

Discussions similaires

  1. [Sources] Synchroniser 2 sous-formulaires
    Par stigma dans le forum Contribuez
    Réponses: 15
    Dernier message: 26/08/2016, 15h41
  2. Utiliser un recordset comme source d'un formulaire
    Par Doubibay dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/05/2009, 08h17
  3. recuperer les valeurs de mon sous formulaire.
    Par escobar dans le forum Access
    Réponses: 2
    Dernier message: 28/07/2006, 08h20
  4. source d'un sous-formulaire
    Par Anaxagore dans le forum Access
    Réponses: 2
    Dernier message: 17/05/2006, 12h20
  5. où est mon sous-formulaire ?
    Par yves_fuji dans le forum IHM
    Réponses: 2
    Dernier message: 08/09/2004, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo