Base de données à deux tables

mohalesage Messages postés 162 Statut Membre -  
mohalesage Messages postés 162 Statut Membre -
Bonjour les amis,

Je travaille dans un environnement de VB6 lié à MS Access 2003, avec la méthode d'appel SQL ( Microsoft.Jet.OLEDB.4.0)

J'ai tenté de travaillé avec deux Tables dans une seule Base de données, mais au bout du chemin, je me suis trouvé bloqué.

Dans une table, j'ai enregistré les données personnelles de l'employé : ( Nom, Prénom, Carte d'identité, n° du sécurité sociale, Qualification, poste, la date d'entrée, et le Matricule, avec comme clé le n° de la carte d'identité )

Dans la deuxième table, je voulais enregistré les heures du travail ( l'année, département, la journée, l'heure d'entrée , heure de sortie, le nombre des heures supplémentaires, le cumul des heures ) Aucune clé n'a été spécifiée pour cette deuxième table.

Je vous demande si vous pourriez me montrer comment je dois travailler dans le cas de Deux tables dans une seule base de données, de façon que si je supprime les données du Pointage ( c'est à dire les données enregistrées dans la deuxième table, les données enregistrées dans la première table restent intactes)

Merci d'avance

26 réponses

  • 1
  • 2
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    il me semble que le n°de carte d'identite change si vous la renouveler, donc peut pas etre une cle. Le matricule, normalement ne change pas, peut etre une cle.

    Il faut ajouter cette cle a votre deuxieme table pour faire un lien entre la table une et deux.

    Vous pouvez effacer les donnees de la table deux sans que les donnees de la table une soient affectees.

    requete sql du genre:

    delete * from table2 where matricule=ce_matricule

    Dans votre application, il faudra penser au compactage de votre base de donnees.
    Quand vous supprimez des enregistrements, vous ne les voyez plus mais ils occupent toujours l'espace dans la base. Si vous faites cette operation souvent ou a plus ou moins long terme votre base grossi et cela ralenti les recherches.

    Bon courage
    0
  2. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,
    j'aimerai bien vous envoyer mon projet d'application, pour vous permettre de la repasser et corriger mes erreurs, mais je ne sais pas comment.
    Si il y a une solution, dites la moi. Franchement, je n'arrive pas à débloquer la situation

    Merci d'avance
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    il faut le projet complet: dossier vb6 et base.
    Pour mettre a disposition click sur le lien suivant https://www.cjoint.com/

    Pourquoi du VB6.0 et pas Access ????

    A+
    0
  4. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'ami,

    j'ai cliquer sur le lien htpp//www.joint.com/mais je sais pas comment télécharger le projet entier.
    Fichier par fichier sûrement ne marchera pas.

    expliquez moi plus pour pouvoir vous envoyer mon petit projet

    A plus
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,

    en attendant, j'aimerai vous expliquer mon problème actuel.

    Dans ma conception du projet j'ai élaboré :
    1- Une feuille pour la saisie
    2- une feuille pour la recherche par : matricule
    nom
    prénom

    une feuille de consultation avec une DataGrid, une fois la case du matricule sélectionnée, une feuille de modification avec les données de la ligne sélectionnées apparaissent, et la feuille de consultation disparaît

    le problème est toujours les données d'une seule ligne qui apparaissent, même si une autre ligne qui a été sélectionnée.

    Je mets à votre appréciation mes codes écris sur les feuilles :

    1- De Recherche
    2- De Consultation
    3- De Modification

    Sur la feuille de la Recherche

    Private Sub Form_Load()
    
    On Error Resume Next
    
    FConsultDonnees.Adodc1.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\BDMezgani3.mdb; Persist security info = false"
    
    SQLs = " select * from TableauInfo"
    
    FConsultDonnees.Adodc1.RecordSource = SQLs
    
    Set FConsultDonnees.DataGrid1.DataSource = FConsultDonnees.Adodc1
    
    FConsultDonnees.DataGrid1.AllowAddNew = False
    FConsultDonnees.DataGrid1.AllowUpdate = False
    
    
    
    
    FConsultDonnees.lblCpteur.Caption = "Le nombre des enregistrements :" & "     " & FConsultDonnees.Adodc1.Recordset.RecordCount & "     " & "Personnes"
    FConsultDonnees.Adodc1.Refresh
    
    
    
    FConsultDonnees.DataGrid1.Columns.Item(0).Button = True
    
    
    
    
    End Sub


    Sur la feuille de Recherche

    Private Sub TNom_Change()
    If TMatricule = "" And TNom = ""  Then
    
    SQLs = " Select * from TableauInfo"
    FConsultDonnees.Adodc1.RecordSource = SQLs
    FConsultDonnees.Adodc1.Refresh
    
    FConsultDonnees.lblCpteur.Caption = "Le nombre des enregistrements :" & FConsultDonnees.Adodc1.Recordset.RecordCount & "     " & "Personnes"
    
    Exit Sub
    End If
    
    SQLs = "Select * from TableauInfo " & " where MATRICULE like '" & TMatricule & "%' and NOM like '" & TNom & "%' "
    
    FConsultDonnees.Adodc1.RecordSource = SQLs
    FConsultDonnees.Adodc1.Refresh
    
    FConsultDonnees.lblCpteur.Caption = "Le nombre des enregistrements :" & FConsultDonnees.Adodc1.Recordset.RecordCount & "     " & "Personnes"
    FConsultDonnees.Adodc1.Refresh
    
    
    FConsultDonnees.DataGrid1.Columns.Item(0).Button = True
    
    FConsultDonnees.Show
    Unload Me
    
    End Sub
    


    Sur la feuille de Consultation

    Private Sub DataGrid1_ButtonClick(ByVal ColIndex As Integer)
    On Error GoTo xxx
    
    Select Case ColIndex
    Case 0
    SQLs = " Select * from TableauInfo where CIN = '" & DataGrid1.Text & "'"
    End Select
    
    FModifRensi.Show
    Unload Me
    
    
    xxx:
    
    End Sub


    Sur la feuille de Consultation

    Private Sub Form_Load()
    
    lblCpteur.Caption = "Le nombre des enregistrements :" & "    " & Adodc1.Recordset.RecordCount & "    " & "Personnes"
    Adodc1.Refresh
    
    
    End Sub


    Sur la feuille de Modification

    Private Sub Form_Load()
    
    PoolConnection
    
    SQLs = "select * from TableauInfo"
    
    If RS.State = adStateOpen Then RS.Close
    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic
    
    FillData
    
    
    End Sub


    Sur la feuille de modification

    Sub FillData()
    
    On Error Resume Next
    
    If Not IsNull(RS![MATRICULE]) Then TMatricule = RS![MATRICULE]
    If Not IsNull(RS![NOM]) Then TNom = RS![NOM]
    If Not IsNull(RS![PRENOM]) Then TPrenom = RS![PRENOM]
    If Not IsNull(RS![CIN]) Then TCin = RS![CIN]
    
    CIN = TCin
    
    If Not IsNull(RS![ADRESSE]) Then TAdresse = RS![ADRESSE]
    If Not IsNull(RS![TELEPHONE]) Then TTel = RS![TELEPHONE]
    If Not IsNull(RS![EMAIL]) Then TEmail = RS![EMAIL]
    If Not IsNull(RS![DNAISSANCE]) Then TDNaissance = RS![DNAISSANCE]
    If Not IsNull(RS![LNAISSANCE]) Then TLNaissance = RS![LNAISSANCE]
    If Not IsNull(RS![SEXE]) Then TSexe = RS![SEXE]
    If Not IsNull(RS![NATIONALITE]) Then TNationalite = RS![NATIONALITE]
    If Not IsNull(RS![SFAMILIALE]) Then TSFamiliale = RS![SFAMILIALE]
    If Not IsNull(RS![NENFANT]) Then TNEnfant = RS![NENFANT]
    If Not IsNull(RS![CNSS]) Then TCnss = RS![CNSS]
    If Not IsNull(RS![NINSTRUCTION]) Then TNInstruction = RS![NINSTRUCTION]
    If Not IsNull(RS![QUALIFICATION]) Then TQualification = RS![QUALIFICATION]
    If Not IsNull(RS![DEPARTEMENT]) Then TDepart = RS![DEPARTEMENT]
    If Not IsNull(RS![POSTE]) Then TPoste = RS![POSTE]
    If Not IsNull(RS![DENTREE]) Then TDateEntree = RS![DENTREE]
    'If Not IsNull(RS![DSORTIE]) Then RS![DSORTIE] = TDateSortie
    
    
    
    End Sub


    Sur la feuille de Modification ( commande de Modification )

    Private Sub cmdModifier_Click()
    Dim Reponse As String
    Dim Reponse2 As String
    
    Reponse2 = MsgBox("Cette personne est elle sortante ?", vbCritical + vbQuestion + vbYesNo, "Alors ! Quoi ?")
    
    If Reponse2 = vbYes Then
    
             TDSortie.SetFocus
    Exit Sub
    End If
    
    
    If Not TDSortie = "" Then
    
    
    GoTo oKS:
    
    Else
    
    
    Reponse2 = True
    
    End If
    
    
    
    
    If CIN = TCin Then
    End If
    
    
    SQLs = "select * from TableauInfo where CIN ='" & TCin & "'"
    
    If Rss.State = adStateOpen Then Rss.Close
    Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic
    
    
    If Rss.EOF Then
     
      MsgBox "Ce numéro existe déjà", vbCritical + vbMsgBoxRight, "Erreur"
      
    Else
    
    
     GoTo Dont_Check
    Exit Sub
    End If
    
    
    oKS:
    '------------
    Dont_Check:
    
    
    Reponse = MsgBox("Etes vous sûr de vouloir modifier ces données ?", vbCritical + vbExclamation + vbYesNo, "Alors quoi ?")
    
    If Reponse = vbYes Then
    
    'RS.AddNew
    
    If Not TMatricule = "" Then RS![MATRICULE] = TMatricule
    If Not TNom = "" Then RS![NOM] = TNom
    If Not TPrenom = "" Then RS![PRENOM] = TPrenom
    If Not TCin = "" Then RS![CIN] = TCin
    If Not TAdresse = "" Then RS![ADRESSE] = TAdresse
    If Not TTel = "" Then RS![TELEPHONE] = TTel
    If Not TEmail = "" Then RS![EMAIL] = TEmail
    If Not TDNaissance = "" Then RS![DNAISSANCE] = TDNaissance
    If Not TLNaissance = "" Then RS![LNAISSANCE] = TLNaissance
    If Not TSexe = "" Then RS![SEXE] = TSexe
    If Not TNationalite = "" Then RS![NATIONALITE] = TNationalite
    If Not TSFamiliale = "" Then RS![SFAMILIALE] = TSFamiliale
    If Not TNEnfant = "" Then RS![NENFANT] = TNEnfant
    If Not TCnss = "" Then RS![CNSS] = TCnss
    If Not TNInstruction = "" Then RS![NINSTRUCTION] = TNInstruction
    If Not TQualification = "" Then RS![QUALIFICATION] = TQualification
    If Not TDepart = "" Then RS![DEPARTEMENT] = TDepart
    If Not TPoste = "" Then RS![POSTE] = TPoste
    If Not TDateEntree = "" Then RS![DENTREE] = TDateEntree
    'If Not TDateSortie = "" Then RS![DSORTIE] = TDateSortie
    
    
    RS.Update
    
    MsgBox "Les données sont modifiées", vbCritical + vbInformation, "Enregistrement des données"
    
    Else
    
    FRecherche.Show
    Unload Me
    
    Exit Sub
    End If
    
    TMatricule = ""
    TNom = ""
    TPrenom = ""
    TCin = ""
    TAdresse = ""
    TTel = ""
    TEmail = ""
    TDNaissance = ""
    TLNaissance = ""
    TSexe = ""
    TNationalite = ""
    TSFamiliale = ""
    TNEnfant = ""
    TCnss = ""
    TNInstruction = ""
    TQualification = ""
    TDepart = ""
    TPoste = ""
    TDateEntree = ""
    'TDateSortie = ""
    
    FConsultDonnees.Show
    Unload Me
    
    
    End Sub


    Sur la feuille de modification ( commande de suprimer )

    Private Sub cmdSupprimer_Click()
    Dim Reponse1 As String
    
    SQLs = " Select * from TableauInfo where CIN='" & TCin & "'"
    
    If Rss.State = adStateOpen Then Rss.Close
    Rss.Open SQLs, DB, adOpenKeyset, adLockPessimistic
    
    Reponse1 = MsgBox("Etes vous sûr de vouloir supprimer ces données ?", vbCritical + vbQuestion + vbYesNo, "Alors ! quoi ? ")
    
    If Reponse1 = vbYes Then
    
    If Not TMatricule = "" Then RS![MATRICULE] = TMatricule
    If Not TNom = "" Then RS![NOM] = TNom
    If Not TPrenom = "" Then RS![PRENOM] = TPrenom
    If Not TCin = "" Then RS![CIN] = TCin
    If Not TAdresse = "" Then RS![ADRESSE] = TAdresse
    If Not TTel = "" Then RS![TELEPHONE] = TTel
    If Not TEmail = "" Then RS![EMAIL] = TEmail
    If Not TDNaissance = "" Then RS![DNAISSANCE] = TDNaissance
    If Not TLNaissance = "" Then RS![LNAISSANCE] = TLNaissance
    If Not TSexe = "" Then RS![SEXE] = TSexe
    If Not TNationalite = "" Then RS![NATIONALITE] = TNationalite
    If Not TSFamiliale = "" Then RS![SFAMILIALE] = TSFamiliale
    If Not TNEnfant = "" Then RS![NENFANT] = TNEnfant
    If Not TCnss = "" Then RS![CNSS] = TCnss
    If Not TNInstruction = "" Then RS![NINSTRUCTION] = TNInstruction
    If Not TQualification = "" Then RS![QUALIFICATION] = TQualification
    If Not TDepart = "" Then RS![DEPARTEMENT] = TDepart
    If Not TPoste = "" Then RS![POSTE] = TPoste
    If Not TDateEntree = "" Then RS![DENTREE] = TDateEntree
    'If Not TDateSortie = "" Then RS![DSORTIE] = TDateSortie
    
    
    RS.Delete
    
    MsgBox "Les données sont supprimées", vbCritical + vbInformation, "Suppression des données"
    
    FConsultDonnees.Show
    Unload Me
    
    
    End If
    
    End Sub
    


    Merci d'avance de toute correction, et pour toute remarque, et aussi pour toute critique

    A plus
    0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Pour votre projet a mettre a dispositon, mettez la base dans le meme repertoire et compresse le repertoire de votre projet. Ensuite ci-joint.com et selectionnez le .zip du repertoire.

    En attendant, je recupere votre code.

    A+
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Tout est dedans, je regarde et vous tiens au courant.

    A+
    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Adodc1 de FConsultDonnees: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\ProjetAgafruit3\BDMezgani3.mdb;Persist Security Info=False

    DataSource a revoir, mettre le repertoire de la base, car si le pc ou vous installerez votre appli n'a pas le VB6, cela ne marchera pas.

    Idem pour Adodc1 de FConsultPointage

    Je continue a tester.

    A+
    0
  10. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,

    Je te souhaite bonne réussite.

    A plus
    0
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Combien de temps avez-vous pour terminer votre appli ???
    0
  12. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'ami,

    Si je la termine d'ici la fin de cette semaine se sera mieux
    j'aimerai aussi avoir votre opinion,

    merci d'avance
    0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Si je la termine d'ici la fin de cette semaine c'est pas gagne votre affaire, car il y a beaucoup de travail a faire
    0
  14. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,

    Sincèrement, je ne savais pas que mon affaire est si compliquée.
    Je crois que j'ai trop déconné.

    Merci quand même pour votre attention,
    je te suis reconnaissant

    Bon courage
    0
  15. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Ce n'est pas complique pour celui qui sait faire, mais pour vous ce n'est pas vraiment le cas.
    0
  16. mohalesage Messages postés 162 Statut Membre 1
     
    Re,

    je l'admis; dans mon cas ce n'est pas donné. Il me faut beaucoup d'exrcices

    a plus l'ami
    0
  17. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,

    Quoi de neuf ?

    J'espère que les choses avancent pour le mieux

    A plus
    0
  18. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    J'ai regarde votre fichier, pour ce qui est des recherches, rien ne peut marcher. Votre code est assez evolue mais pas place correctement. La recherche doit se faire avec quoi ???? Un element (matricule ou nom) ou tous ce que vous avez mis
    Il faudrait un bouton de validation de depart de recherche car c'est en lisant le code que nous decouvrons comment ca marche. Meme chose pour la fiche de renseignement
    Tables: TableauPointage---->comment faites vous le lien entre une personne, la campagne et ses horaires
    0
  19. mohalesage Messages postés 162 Statut Membre 1
     
    Bonjour l'Ami,

    En ce qui concerne la recherche, je voulais laisser le choix à l'opérateur, ou il cherche par Matricule ou par le nom.

    concernant le lien entre la personne, la campagne et ses heures de pointage, à mon avis le lien serait une clé, mais je n'arrive pas à fixer une clée avec deux tableaux dans une même base de données.

    Un point à ne pas oublier, je ne connais pas assez le jargon des programmeurs. Je ne suis qu'un débutant

    A plus
    0
  20. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    je ne connais pas assez le jargon des programmeurs qui vous a demande de faire cette appli vb6, que connaissez-vous en programmation ???
    0
  • 1
  • 2