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

VB 6 et antérieur Discussion :

[VB6] probleme avec affichage donnée dans COMBOBOX en fonction d'info dans la BDD


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 20
    Points
    20
    Par défaut [VB6] probleme avec affichage donnée dans COMBOBOX en fonction d'info dans la BDD
    Je m'explique, je veux afficher le contenu de la combobox qui s'appelle COMBOHORAIRE, en fonction des informations presents dans une table de la base.
    J'ai ma table ABSENCE qui regroupe le numéro de l'abs,la date,le numéro stagiaire, le numéro section, le numéro de la plage horaire d'abs et le numéro matière.

    lorsque je lance mon programme, j'ai une première fenétre qui s'ouvre ou je rentre les info du stagiaire pour l'ajouter dans la table ABSENCE, je selectionne la section puis en fonction de la section j'ai une liste de noms qui apparai dans la COMBONOMS, je selectionne donc le noms et pareil que la section, j'ai la COMBOHORAIRE qui se remplis en fonction des absence(plage_horaire) ou non du stagiaire. Mais je n'arrrive pas a faire marcher ce bout de code. Soit sa ne marche qu'avec un stagiaire soit sa m'efface tous. voici le code:

    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
     
    'Remplis la liste des horaires en fonction du nom , et des absences du jour même.
     
    Private Sub ComboNoms_click()
     
        ComboHoraire.Clear
     
    Dim Rabs, Rstag, Rhor, Nums, connex
     
    'connexion a la base de données
    Set connex = CreateObject("ADODB.Connection")
        connex.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\PTI\Absence.mdb';"
     
    ' Selection du numero stagiaire
    Set Rstag = CreateObject("ADODB.Recordset")
    Set Rstag.ActiveConnection = connex
        Rstag.open "SELECT * FROM Stagiaires WHERE Nom_stag= '" & ComboNoms & "'"
     
    ' Selection des plages horaires de la table HORAIRE en fonction
    ' des plages horaires présentes dans la table ABSENCE
    Set Rhor = CreateObject("ADODB.Recordset")
    Set Rhor.ActiveConnection = connex
        Rhor.open "SELECT * FROM Horaire WHERE Num_horaire NOT IN" & _
        "(SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND " & _
        "Num_stag= " & Rstag("Num_stag") & " ORDER BY Plage_abs)ORDER BY Num_horaire"
     
    ' Selection des plages horaires figurant dans la table ABSENCE
    Set Rabs = CreateObject("ADODB.Recordset")
    Set Rabs.ActiveConnection = connex
        Rabs.open "SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND Num_stag= " & Rstag("Num_stag")
     
            Do While Not Rhor.EOF
                        ' je compare les deux valeurs si celle ci son egale a 1 et
                        ' l'autre a 3 alors je naffiche pas la plage horaire numéro 3
                        If Rabs("Plage_abs") = "1" And Rhor("Num_horaire") = "3" Then
                            Rhor.MoveNext
                        Else
                            'ajouter dans la combo lenregistrement en cours
                                ComboHoraire.AddItem Rhor!Horaire
                            'passer à lenregistrement suivant
                                Rhor.MoveNext
                        End If
            Loop
     
    End Sub
    Petite précision, ma table horaire se compose comme ceci:

    num_horaire-----plage_horaire
    ---1------------8h30/10h30
    ---2------------10h30/12h30
    ---3------------Matin
    ---4------------13h30/15h30
    ---5------------15h30/17h30
    ---6------------Aprés-midi
    ---7------------Journée

    Dans mon code, je veux afficher que les plage horaire ne figurant pas dans la table ABSENCE mais aussi en fonction de la plage horaire certaines ne doivent pas s'afficher, exemple:

    " un stagiaire est absence de 8h30/10h30 donc lors d'une nouvelle saisie (se faisant dans la même journée) la plage horaire 8h30/10h30,ainsi que le Matin et la Journée ne doivent pas s'afficher. "

    J'ai en parti réussi a ne pas afficher la plage horaire Matin mais si je selectionne un autre stagiaire j'ai la même liste qui apparait ou la liste ne se rempli pas , or j'efface la liste a chaque changement de stagiaire.

    Si quelqu'un pouvait m'aider, ou du moins me guider dans mon code je l'en remercie d'avance. sa fait 3 jour que j'y sui dessus et sa me prend un tout petit peu la tête.

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Déja quelques changements...
    C pas grand chose mais plus clair...

    Tu ne parcoure nulle part le Recrordset Rabs
    Il n'y qu'une valeur dedans?

    ET N'oublie pas de fermer tes RECODSET !!!
    Et tes déclarations sont pas superber... Dim ... AS ADODB.Recordset

    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
    'Remplis la liste des horaires en fonction du nom , et des absences du jour même.
     
    Private Sub ComboNoms_click()
     
        ComboHoraire.Clear
     
    Dim Rabs, Rstag, Rhor, Nums, connex
     
    'connexion a la base de données
    Set connex = CreateObject("ADODB.Connection")
        connex.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\PTI\Absence.mdb';"
     
    ' Selection du numero stagiaire
    Set Rstag = CreateObject("ADODB.Recordset")
    Set Rstag.ActiveConnection = connex
        Rstag.open "SELECT * FROM Stagiaires WHERE Nom_stag= '" & ComboNoms & "'"
     
    ' Selection des plages horaires de la table HORAIRE en fonction des plages horaires présentes dans la table ABSENCE
    Set Rhor = CreateObject("ADODB.Recordset")
    Set Rhor.ActiveConnection = connex
        Rhor.open "SELECT * FROM Horaire WHERE Num_horaire NOT IN" & _
        "(SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND " & _
        "Num_stag= " & Rstag("Num_stag") & " ORDER BY Plage_abs)ORDER BY Num_horaire"
     
    ' Selection des plages horaires figurant dans la table ABSENCE
    Set Rabs = CreateObject("ADODB.Recordset")
    Set Rabs.ActiveConnection = connex
        Rabs.open "SELECT Plage_abs FROM Absence WHERE Date_abs=#" & Date & "# AND Num_stag= " & Rstag("Num_stag")
     
            Do While Not Rhor.EOF
                        ' je compare les deux valeurs si celle ci son egale a 1 et l'autre a 3 alors je naffiche pas la plage horaire numéro 3
                        If Not(Rabs("Plage_abs") = "1" And Rhor("Num_horaire") = "3") Then
                            'ajouter dans la combo lenregistrement en cours
                                ComboHoraire.AddItem Rhor!Horaire                           
                        End If
                  'passer à lenregistrement suivant
                  Rhor.MoveNext
            Loop
     
    End Sub

  3. #3
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour

    Désolé, mais je ne lis plus les messages qui débordent, et donc je n'y répond plus. Insères (et insérez pour tous ) des sauts de lignes dans le code pour les lignes trop longues. Ainsi, les topics seront lisibles.

    Pour qu'une ligne de code s'affiche sur plusieurs lignes, utiliser le caractère de soulignement (_), un espace et un retour chariot. Dans une chaîne de caractères, ne pas oublier de fermer la chaîne ("), de mettre &, d'insérer le caractère de soulignement, d'insérer un espace, , de faire un retour chariot et de rouvrir la chaine. Celà donnerait quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "chaîne" & _ 
    "de caractères"
    C'est facile, et cela montrera que vous ne prenez pas les personnes qui répondent pour des .

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Je vien de faire les modification que tu a dis, mais maintenant j'ai un message d'erreur:

    erreur automation


    C'est sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not(Rabs("Plage_abs") = "1" And Rhor("Num_horaire") = "3") Then
    le champ " Rabs("Plage_abs") " n'a aucune valeur même pas NULL.

    Je vais chercher pour essayé de comprendre ce qui ne va pas. Merci pour ton aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/03/2010, 07h31
  2. VB6: Bug d'affichage d'une combobox dans un spread
    Par gromito dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2008, 17h43
  3. [VB6] Probleme avec initialisation d'un Data ADO dans form Load
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/06/2006, 22h41
  4. Probleme avec un Pannel et ComboBox
    Par JuJu° dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/05/2003, 17h37
  5. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 16h33

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