Discussion: Listes liées dans un sous formulaire [LibreOffice][Base de données]

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Listes liées dans un sous formulaire

    Bonsoir,

    Je suis en train de créer une base de données pour réaliser des devis. Dans le formulaire "F_Dvs" comportant un sous formulaire "SFDvsDtl", il y a une première liste qui permet de sélectionner la matière à utiliser. Elle est suivie d' une deuxième liste qui elle permet de sélectionner le tarif valide de cette même matière.
    J' ai bien trouvé un exemple qui correspond à ce que je veux faire mais visiblement, j' ai très mal modifié cette macro. En effet, a l' ouverture du formulaire, j' obtiens le message d' erreur intitulé "Message_1".
    De plus, j' ai une erreur dans une requête SQL, voir "Message_2"
    J' aurai bien voulu joindre ma base mais visiblement ce n' est pas possible. Les fichiers ".odb" ne sont pas acceptés.

    Cordialement
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Bonjour El Bosc
    Comme indiqué, il manque une méthode
    method: 'Actualisation'

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Méthode Basic

    Bonsoir,

    Merci Michel de votre réponse. Pourriez-vous m' indiquer comment mettre en place cette méthode.

    Coedialement

  4. #4
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Une piste :
    Cette méthode se trouve dans standard->Bdd mais pas dans standard->FDvs il suffit donc de remplacer et cette erreur disparaît

    La requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Cf_RtcTrf FROM T_RtcTrf WHERE Cf_Rtc =''
    ne fonctionne pas car Cf_Rtc est un integer
    On peut essayer (si la valeur par défaut est 0, ce qui semble le cas ici)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Cf_RtcTrf FROM T_RtcTrf WHERE Cf_Rtc =0

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Erreur sur requete SQL

    Bonsoir,

    Depuis ma dernière intervention, je me suis penché sur les deux erreurs relevés.
    Pour la première, j' ai déplacé le lancement de la macro "Actualisation". Cela semble fonctionner mais à confirmer. Pour l' instant mon soucis est la requète SQL.
    Il n' est pas possible que cela fonctionne car la valeur récupérée dans le contrôle n' est pas la clé de l' article mais sa désignation. Ma condition where est basé sur la seule comparaison possible suivant mes structures de tables entre les clés de l' article sélectionné.
    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
    Dim CtrRtc as Object, CtrTrf as Object
    Dim CfRtcEnCours as String, CfTrfEnCours as String
     
    	Sub ApresMajCP
    	'sur évènement Statut modifié de la liste matière du formulaire F_Dvs
    		on error goto Err_ApresMajCP
    		CtrRtc = ThisComponent.drawpage.Forms.getByName("FDvs").getByName("SFDvsDtl").getByName("SFDvsDtl_Grid").getByName("LstRtc")
    		CtrTrf = ThisComponent.drawpage.Forms.getByName("FDvs").getByName("SFDvsDtl").getByName("SFDvsDtl_Grid").getByName("LstRtcTrf")
    	'défini la valeur de l' article en cours dans la liste	
    		CfRtcEnCours = CtrRtc.CurrentValue
    	'défini les entrées possible de la liste tarif en fonction de l' article en cours	
    		CtrTrf.ListSource() = array("SELECT RtcTrf FROM T_RtcTrf WHERE Cf_Rtc ='" &  CfRtcEnCours & "'")
    	'réactualise le contrôle Tarif
    		CtrTrf.refresh
    	Exit_ApresMajCP:
    		exit sub
    	Err_ApresMajCP:
    		msgbox error
    		resume Exit_ApresMajCP		
    	End Sub
    Lorsque je sélectionne un article dans la colonne matière, j' affiche le nom de la matière mais je sauvegarde la clé de cet article.
    Aussi, en ligne 10, la variable CfRtcEnCours contient, non pas la valeur de la clé mais la désignation de l' article.
    Réultat, la requête en ligne 12 plante.
    Je compare Cf_Rtc qui est la clé de l' article àCfRtcEnCours qui est du texte.

    Comment puis-je régler ce problème?

    Cordialement

    PS:
    J' ai testé votre solution Michel mais cela ne fonctionne pas. Toujours ce problème de sauvegarder une clé et d' afficher une désignation?

  6. #6
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    En mode edition de formulaire , dans le contrôle de matiere , onglet données, champ lié essayez 2 sinon il faudra faire un
    where CONCAT( CONCAT( "RfRtc", ' ' ), "DsgRtc" ) =...

  7. #7
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Column not found:2

    Bonsoir Michel,

    Bon j' ai résolu une partie du problème. Dans le SQL de la liste déroulante Matière,j' ai déplacé le champ Cf_Rtc en deuxième position. Du coup, la variable CfRtcEnCours récupère bien la valeur de la clé du produit sélectionné et non la désignation de l' article. Au final le SQL contenu dans la macro fonctionne.
    Malgré tout,le filtre sur la liste déroulante Matière n' a aucune incidence sur la liste déroulante Tarif. J' ai le message d' erreur suivant:
    Impossible de déterminer le contenu de la zone combinée/zone de liste.
    Column not found: 2
    Manque-t-il une macro sur cette deuxième liste? Macro contenant un critère de type Like.

    Cordialement

  8. #8
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Bonjour,
    Quand je regarde les données du contrôle Tarif, je tombe sur une requête incomplète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Cf_RtcTrf FROM T_RtcTrf WHERE Cf_Rtc =
    je ne vois pas d'où cela sort ...
    Comme la base a subit des modifications, pourriez-vous remettre la nouvelle version en fichier joint compressé pour faciliter l'analyse?

  9. #9
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Copie Base

    Bonsoir,
    Comme demandée, voici la dernière version.
    Bonne soirée
    Fichiers attachés Fichiers attachés

  10. #10
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Merci,
    je vais voir si je peux y faire quelque chose mais sans garantie !

  11. #11
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Bonjour,
    On progresse:
    Si je regarde la colonne matière je vois que dans les événements, statut de l'élément modifié appelle une procédure qui se trouve dans le module Standart.bbd;
    Nom : Capture du 2018-05-13 15-05-26.png
Affichages : 38
Taille : 54,9 Ko
    par contre, il n'y a rien dans la liste tarif. Il faut donc créer une procédure du même genre et l'appliquer au même type d'événement

  12. #12
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Procédure sur tarif

    Bonjour,

    C' est bien ce qu' il me semblait. Je m' attelle à cette procédure et vous tiens au courant du résultat. Dommage que dans la requête SQL on ne puisse introduire un critère se référant au champ du sous-formulaire matière. Sa simplifierait grandement la démarche.

    Cordialement

  13. #13
    Membre régulier
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    mars 2010
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2010
    Messages : 110
    Points : 74
    Points
    74

    Par défaut Listes liées dans un sous formulaire.

    Bonjour,

    Comme promis, je reviens vers vous pour ce problème de listes liées. Le message provenant de basic concernant la mise à jour de la deuxième liste était du à un champ manquant dans la requête. En effet, si la sauvegarde s' effectue bien sur la clé du tarif, l' affichage lui est la valeur de la fourniture.Le champ manquant était RtcTrf. Ci-dessous le code de la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	Rqt ="SELECT ""RtcTrf"",""Cf_RtcTrf"" FROM ""T_RtcTrf"" WHERE ""Cf_Rtc"" =" &  CfRtc
    et pour ceux que cela intéresse, le code des 3 macros nécessaire au bon déroulement de la mise à jour:
    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
    	Dim CtrRtc as Object , CtrTrf AS Object
    	Sub MajListe
     
    		Dim CfRtc as integer
    		Dim Rqt as String
                    'Recupere les données dans les champs concernés
    		CtrRtc = ThisComponent.DrawPage.Forms.getByName("SfDvsDtlFrt").getByName("LstRtc")
    		CtrTrf = ThisComponent.DrawPage.Forms.getByName("SfDvsDtlFrt").getByName("LstRtcTrf")
    		CfRtc = CtrRtc.valueItemList(CtrRtc.SelectedItems(0))
     
    		Rqt ="SELECT ""RtcTrf"",""Cf_RtcTrf"" FROM ""T_RtcTrf"" WHERE ""Cf_Rtc"" =" &  CfRtc 
    		CtrTrf.ListSource = Array(Rqt)
    		CtrTrf.refresh
     
    	End Sub
    '=========================================================================================
    	Sub Actualisation
     
    		Dim ExoTrav
     
    		MajListe 
     
    		ExoTrav= ExoRechercheDansTableau(CtrTrf.ValueItemList, CtrTrf.boundField.Value)
     
    		If ExoTrav <> "#N/A" then
       			CtrTrf.SelectedItems = array(ExoTrav)
    			else
       				CtrTrf.SelectedItems = array(0)
    		End If
     
    	End Sub
    '=========================================================================================
    	Function ExoRechercheDansTableau(ExoTablo, ExoRech)
     
    		dim i as integer
     
    		ExoRechercheDansTableau = "#N/A"
     
    		for i = lbound(ExoTablo) to ubound(ExoTablo)
    		   if ExoTablo(i)= ExoRech then
    		      ExoRechercheDansTableau = i
    		      exit for
    		   end if
    		next i
     
    	end function
    Je joins également la version trois de cette base. Il manque énormément de choses mais c' est un début.

    Cordialement
    Fichiers attachés Fichiers attachés

  14. #14
    Membre éprouvé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 534
    Points : 1 192
    Points
    1 192
    Billets dans le blog
    1

    Par défaut

    Merci d'avoir communiqué la correction !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Listes déroulantes liées dans un sous formulaire
    Par frantz44 dans le forum Access
    Réponses: 4
    Dernier message: 07/12/2015, 08h51
  2. Réponses: 15
    Dernier message: 21/01/2015, 10h14
  3. [AC-2010] probleme liste deroulante liée dans un sous formulaire
    Par azur123 dans le forum IHM
    Réponses: 3
    Dernier message: 07/08/2012, 11h29
  4. Réponses: 8
    Dernier message: 03/08/2008, 14h59
  5. Liste restreinte dans un sous formulaire
    Par Treuze dans le forum Access
    Réponses: 11
    Dernier message: 07/01/2006, 19h38

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