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 :

Programme pointage des ouvriers


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut Programme pointage des ouvriers
    J'ai un grand souci concernant la requête sql dans vb 6.0 avec la référence DAO
    La base de données là voici
    http://site.voila.fr/vb6/relations.JPG
    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
     
    Private Sub Form_Load()
    Dim r As Recordset
    Dim ch As String
     
       'Remplir la grille
       ch = "select EFFECTUE.date_deb,EFFECTUE.date_fin,EFFECTUE.nombre_heure,EFFECTUE.nombre_heures_supp,EFFECTUE.num_tache,EFFECTUE.num_empl,EFFECTUE.jour_travail,EMPLOYE.num_empl,EMPLOYE.nom_empl,Ordre_de_Travaux.num_ot,Ordre_de_Travaux.date_ot,Ordre_de_Travaux.num_tache,SECTION.section,SECTION.num_tache,TACHE.num_tache,TACHE.nature_tache1,TACHE.nature_tache2,TACHE.nature_tache3,TACHE.nature_tache4 From EFFECTUE,EMPLOYE,Ordre_de_Travaux,SECTION,TACHE Where SECTION.num_tache=TACHE.num_tache And Ordre_de_Travaux.num_tache=TACHE.num_tache And EFFECTUE.num_tache=TACHE.num_tache And EFFECTUE.num_empl=EMPLOYE.num_empl"
       Set r = db.OpenRecordset(ch)
       r.MoveFirst
       Do While Not r.EOF
       g.AddItem r(0) & vbTab & r(1) & vbTab & r(2) & vbTab & r(3) & vbTab & r(4) & vbTab & r(5) & vbTab & r(6) & vbTab & r(7) & vbTab & r(8) & vbTab & r(9) & vbTab & r(10) & vbTab & r(11) & vbTab & r(12) & vbTab & r(13) & vbTab & r(14) & vbTab & r(15)
       r.MoveNext
       Loop
     
    End Sub
    mon problème est le voici
    un message
    aucun enregistrement en cours

    par contre j'ai rempli dans chaque table 5 enregistrements
    aidez moi SVP

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    Comment tu fais la référence à ta base de données ?

    Je vois qu'en form load, tu appelles un record set, mais je ne vois pas une déclaration pour la base de données...

    As tu fais quelque part avant de faire db.recordset quelque chose du genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim db as database 
    set db= OpenDatabase("C:\MaBaseDeDonnées.mdb")

  3. #3
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    Bonjour.

    Si ton recordset est ouvert en mode dynaset, il faut peupler l'index en envoyant son pointeur en fin de recordset puis en le ramenant au début.

    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
     
    Private Sub Form_Load()
    Dim r As Recordset
    Dim ch As String
     
       'Remplir la grille
       ch = "select EFFECTUE.date_deb,EFFECTUE.date_fin,EFFECTUE.nombre_heure,EFFECTUE.nombre_heures_supp,EFFECTUE.num_tache,EFFECTUE.num_empl,EFFECTUE.jour_travail,EMPLOYE.num_empl,EMPLOYE.nom_empl,Ordre_de_Travaux.num_ot,Ordre_de_Travaux.date_ot,Ordre_de_Travaux.num_tache,SECTION.section,SECTION.num_tache,TACHE.num_tache,TACHE.nature_tache1,TACHE.nature_tache2,TACHE.nature_tache3,TACHE.nature_tache4 From EFFECTUE,EMPLOYE,Ordre_de_Travaux,SECTION,TACHE Where SECTION.num_tache=TACHE.num_tache And Ordre_de_Travaux.num_tache=TACHE.num_tache And EFFECTUE.num_tache=TACHE.num_tache And EFFECTUE.num_empl=EMPLOYE.num_empl"
       Set r = db.OpenRecordset(ch)
     
       on local error resume next
       r.movelast
       r.MoveFirst
    	if err.number=0 then
    	   Do While Not r.EOF
    		   g.AddItem r(0) & vbTab & r(1) & vbTab & r(2) & vbTab & r(3) & vbTab & r(4) & vbTab & r(5) & vbTab & r(6) & vbTab & r(7) & vbTab & r(8) & vbTab & r(9) & vbTab & r(10) & vbTab & r(11) & vbTab & r(12) & vbTab & r(13) & vbTab & r(14) & vbTab & r(15)
    		   r.MoveNext
    	   Loop
    	end if
    	on local error goto 0
     
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Citation Envoyé par CBFURAX Voir le message
    Bonjour.

    Si ton recordset est ouvert en mode dynaset, il faut peupler l'index en envoyant son pointeur en fin de recordset puis en le ramenant au début.

    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
     
    Private Sub Form_Load()
    Dim r As Recordset
    Dim ch As String
     
       'Remplir la grille
       ch = "select EFFECTUE.date_deb,EFFECTUE.date_fin,EFFECTUE.nombre_heure,EFFECTUE.nombre_heures_supp,EFFECTUE.num_tache,EFFECTUE.num_empl,EFFECTUE.jour_travail,EMPLOYE.num_empl,EMPLOYE.nom_empl,Ordre_de_Travaux.num_ot,Ordre_de_Travaux.date_ot,Ordre_de_Travaux.num_tache,SECTION.section,SECTION.num_tache,TACHE.num_tache,TACHE.nature_tache1,TACHE.nature_tache2,TACHE.nature_tache3,TACHE.nature_tache4 From EFFECTUE,EMPLOYE,Ordre_de_Travaux,SECTION,TACHE Where SECTION.num_tache=TACHE.num_tache And Ordre_de_Travaux.num_tache=TACHE.num_tache And EFFECTUE.num_tache=TACHE.num_tache And EFFECTUE.num_empl=EMPLOYE.num_empl"
       Set r = db.OpenRecordset(ch)
     
       on local error resume next
       r.movelast
       r.MoveFirst
    	if err.number=0 then
    	   Do While Not r.EOF
    		   g.AddItem r(0) & vbTab & r(1) & vbTab & r(2) & vbTab & r(3) & vbTab & r(4) & vbTab & r(5) & vbTab & r(6) & vbTab & r(7) & vbTab & r(8) & vbTab & r(9) & vbTab & r(10) & vbTab & r(11) & vbTab & r(12) & vbTab & r(13) & vbTab & r(14) & vbTab & r(15)
    		   r.MoveNext
    	   Loop
    	end if
    	on local error goto 0
     
    End Sub
    j'ai fais exactement que tu ma proposé , l'erreur est bien résolu mais la grille est totalement vide je ne sais pas quoi faire d'autre

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    est ce que la relation entre les tables ou quoi ?
    intégrités référentiel + jointures+clés tout en ordre
    je ne sais pas trop
    une autre proposition Monsieur...?

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Je ne pratique pas DAO mais ADO, j'ai regardé tout de même ta requete SQL, en la reformulant sur plusieurs lignes, pour y voire un peu plus claire.
    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
    ch = "select " _
            & "EFFECTUE.date_deb," _
            & "EFFECTUE.date_fin," _
            & "EFFECTUE.nombre_heure," _
            & "EFFECTUE.nombrenombre_heures_supp," _
            & "EFFECTUE.num_tache," _
            & "EFFECTUE.num_empl," _
            & "EFFECTUE.jour_travail," _
            & "EMPLOYE.num_empl," _
            & "EMPLOYE.nom_empl," _
            & "Ordre_de_Travaux.num_ot," _
            & "Ordre_de_Travaux.date_ot," _
            & "Ordre_de_Travaux.num_tache," _
            & "SECTION.section," _
            & "SECTION.num_tache," _
            & "TACHE.num_tache," _
            & "TACHE.nature_tache1," _
            & "TACHE.nature_tache2," _
            & "TACHE.nature_tache3," _
            & "TACHE.nature_tache4 " _
                & "From EFFECTUE,EMPLOYE,Ordre_de_Travaux,SECTION,TACHE " _
                    & "Where SECTION.num_tache=TACHE.num_tache And " _
                        & "Ordre_de_Travaux.num_tache=TACHE.num_tache And " _
                        & "EFFECTUE.num_tache=TACHE.num_tache And " _
                        & "EFFECTUE.num_empl=EMPLOYE.num_empl"
    La condition Where me semble aberrante, qu'attends tu comme renvoi de cette condition multiple?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre régulier
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    Citation Envoyé par agan2012 Voir le message
    j'ai fais exactement que tu ma proposé , l'erreur est bien résolu mais la grille est totalement vide je ne sais pas quoi faire d'autre
    Si le recordset renvoyé par la requête SQL est vide, une erreur se produit lors du movelast et du movefirst.
    L'erreur est trappée par le "on error resume next", et err.number est non nul (il n'y a pas d'enregistrement courant).
    La boucle Do...loop n'est donc pas exécutée.

    La question est donc : pourquoi ta requête ne renvoie-elle rien ?
    Je suis pas un killer en SQL, mais la façon dont la tienne est montée me paraît étrange. (Pas le LEFT JOIN ou INNER JOIN, pour tes jointures ? )

  8. #8
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Citation Envoyé par CBFURAX Voir le message
    La question est donc : pourquoi ta requête ne renvoie-elle rien ?
    Je suis pas un killer en SQL, mais la façon dont la tienne est montée me paraît étrange. (Pas le LEFT JOIN ou INNER JOIN, pour tes jointures ? )
    Vous proposez quoi comme solution!!!

  9. #9
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Citation Envoyé par justgreat Voir le message
    Comment tu fais la référence à ta base de données ?

    Je vois qu'en form load, tu appelles un record set, mais je ne vois pas une déclaration pour la base de données...

    As tu fais quelque part avant de faire db.recordset quelque chose du genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim db as database 
    set db= OpenDatabase("C:\MaBaseDeDonnées.mdb")
    voila le code d'ouverture de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub MDIForm_Load()
     
    Set db = OpenDatabase(App.Path & "\pointage.mdb")
    Set se = db.OpenRecordset("SECTION")
    Set ta = db.OpenRecordset("TACHE")
    Set ord = db.OpenRecordset("Ordre_de_Travaux")
    Set em = db.OpenRecordset("EMPLOYE")
    Set ef = db.OpenRecordset("EFFECTUE")
     
    End Sub

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

Discussions similaires

  1. Programme : Table des symboles
    Par Premium dans le forum C
    Réponses: 13
    Dernier message: 02/11/2017, 19h15
  2. Réponses: 12
    Dernier message: 11/04/2006, 17h36
  3. Lancer un programme avec des arguments via IE...
    Par petozak dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 24/03/2006, 11h51
  4. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45
  5. Methode de programmation sur des gros projets
    Par dynobremo dans le forum EDI
    Réponses: 10
    Dernier message: 08/06/2004, 02h59

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