Base de données à deux tables
mohalesage
Messages postés
147
Date d'inscription
Statut
Membre
Dernière intervention
-
mohalesage Messages postés 147 Date d'inscription Statut Membre Dernière intervention -
mohalesage Messages postés 147 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Base de données à deux tables
- Fuite données maif - Guide
- Base de registre - Guide
- Nombre de jours entre deux dates excel - Guide
- Supprimer les données de navigation - Guide
- Deux ecran pc - Guide
26 réponses
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
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
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
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
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+
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+
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Sur la feuille de Recherche
Sur la feuille de Consultation
Sur la feuille de Consultation
Sur la feuille de Modification
Sur la feuille de modification
Sur la feuille de Modification ( commande de Modification )
Sur la feuille de modification ( commande de suprimer )
Merci d'avance de toute correction, et pour toute remarque, et aussi pour toute critique
A plus
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
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+
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+
Bonjour l'ami,
Je vous passe le lien, j'espère que mon projet d'apprentissage s'y trouve
https://www.cjoint.com/?3DyvpvdStqV
Bonne chance
Merci d'avance
Je vous passe le lien, j'espère que mon projet d'apprentissage s'y trouve
https://www.cjoint.com/?3DyvpvdStqV
Bonne chance
Merci d'avance
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+
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+
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
Si je la termine d'ici la fin de cette semaine se sera mieux
j'aimerai aussi avoir votre opinion,
merci d'avance
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
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
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
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
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
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
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
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