Base de données à deux tables

Fermé
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 - 22 avril 2013 à 03:07
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 - 11 mai 2013 à 03:13
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

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
22 avril 2013 à 08:24
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
Modifié par mohalesage le 23/04/2013 à 01:20
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 23/04/2013 à 09:18
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
24 avril 2013 à 00:33
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
24 avril 2013 à 01:42
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
24 avril 2013 à 08:08
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
24 avril 2013 à 21:20
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 avril 2013 à 09:51
Bonjour,

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

A+
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 25/04/2013 à 11:31
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
25 avril 2013 à 13:49
Bonjour l'Ami,

Je te souhaite bonne réussite.

A plus
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
25 avril 2013 à 18:29
Re,

Combien de temps avez-vous pour terminer votre appli ???
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
Modifié par mohalesage le 25/04/2013 à 22:14
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
26 avril 2013 à 07:22
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
26 avril 2013 à 15:56
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
26 avril 2013 à 16:28
Re,

Ce n'est pas complique pour celui qui sait faire, mais pour vous ce n'est pas vraiment le cas.
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
26 avril 2013 à 16:57
Re,

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

a plus l'ami
0
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
30 avril 2013 à 00:18
Bonjour l'Ami,

Quoi de neuf ?

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

A plus
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
30 avril 2013 à 08:51
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
mohalesage Messages postés 147 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 31 décembre 2015 1
30 avril 2013 à 15:02
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
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
30 avril 2013 à 15:31
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