Problème avec un Datagrid lié a deux tables Access [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
23 septembre 2008
-
Messages postés
6
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
23 septembre 2008
-
Bonjour, je suis un débutant sous VB et j'ai un petit souci et j'aimerais bien avoir votre aide :

J'ai deux tables dans une BD access et j'utilise le control ADO pour la connexion avec VB

- Table "profil" liée a un datagrid qui affiche son contenu

- Table "niveau" liée a un datagrid qui affiche son contenu

- Un dategrid lié au deux tables simultanément via une requête jointure

Quand j'ajoute un enregistrement à la table profil il s'affiche immédiatement dans son datagrid mais pas dans le datagrid lié au deux table (je doit fermer la form et la recharger de nouveau pour que l'enregistrement s'affiche)

Est ce qu'il ya un moyen pour que le datagrid lié au deux table affiche immédiatement l'enregistrement ajouté  à une des deux tables??

Merci d'avance pour votre aide.

veuillez voir le projet ci-joint vous avec un exemple détaillé [site.voila.fr/hichamo/ado_datagrid.zip ICI]

5 réponses

Messages postés
122
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
18 juillet 2009

ajoute ce code:
Private Sub DGP_AfterColUpdate(ByVal ColIndex As Integer)
RsP.Update
Set DGPN.DataSource = Nothing
RsPN.Close
RsPN.CursorLocation = adUseClient
RsPN.Open "Select profil.idp,profil.nom_profil,niveau.idn,niveau.niveau FROM profil,niveau WHERE profil.idn=niveau.idn", CnnP, , adLockPessimistic
Set DGPN.DataSource = RsPN
DGPN.Columns.Remove 0
DGPN.Columns.Remove 1


DGPN.Refresh
End Sub
 une seule connection suffit
remplace alors par ça:
Private Sub Form_Load()
'CONNECION A LA TABLE PROFIL
CnnP.Provider = "Microsoft.jet.OLEDB.4.0"
CnnP.Open App.Path & "\BD.mdb"
RsP.CursorLocation = adUseClient
RsP.Open "Select * FROM profil", CnnP, , adLockPessimistic
Set DGP.DataSource = RsP


RsN.CursorLocation = adUseClient
RsN.Open "Select * FROM niveau", CnnP, , adLockPessimistic
Set DGN.DataSource = RsN


RsPN.CursorLocation = adUseClient
RsPN.Open "Select profil.idp,profil.nom_profil,niveau.idn,niveau.niveau FROM profil,niveau WHERE profil.idn=niveau.idn", CnnP, , adLockPessimistic
Set DGPN.DataSource = RsPN




'JE MASQUE LES COLONNES IDP ET IDN DU DATAGRID
DGPN.Columns.Remove 0
DGPN.Columns.Remove 1
end sub
et ça marche bien
Messages postés
6
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
23 septembre 2008

Désolé, voila l'adresse du lien pour le fichier de projet  : http://site.voila.fr/hichamo/ado_datagrid.zip
Messages postés
122
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
18 juillet 2009

tu reconstruit le datasource pour datagrid après la sisie:
set datagrid.datasource=ado
datagrid.refresh
Messages postés
122
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
18 juillet 2009

j'ai voulu donner jusqu'à la  fin en ce qui concerne ce projet :
if faut controler la saisie de lettre ou la saisie de nombre autre que 1,2,3 donc voici le code:

Private Sub DGP_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
If ColIndex = 2 Then
       If Val(DGP.Text) > 3 Or Val(DGP.Text) < 1 Then
            Cancel = True
            DGP.Text = OldValue
            MsgBox "valeur du champ non valable"
       End If
End If
End Sub
et pour éviter les méssage propre à datagrid ajoute ce code :

Private Sub DGP_Error(ByVal DataError As Integer, Response As Integer)
Response = 0
End Sub
Messages postés
6
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
23 septembre 2008

Merci "comme" pour ta reactivité, tes conseils m'ont été d'une grande utilité,

J'ai pris en compte tes conseils, j'ai amélioré le code et j'ai ajouté d'autres fonctionnalités.

Par rapport à la foncion DGP_AfterColUpdate je pense que je ne vais pas l'utiliser car j'ai désactivé la possibilité de modifier les enregistement à partir du datagrid.

Et par rapport au bout du code qui permet de protéger le combobox contenant les niveau 1,2,3, comment faire pour adapter ce code si je souhaite aujouter d'autres niveaux dans l'avenir?

J'ai un soucis avec les commandes 'Enregistrer la modification' et 'Supprimer' je recois un message d'erreur : "Impossible d'utiliser cette connexion pour effectuer cette opération. Elle est fermée ou non valide dans ce contexte."

J'aimerais bien avoir ton aide sur ce problème

Si tu a d'autres propositions pour améliorer ce code je suis preneur

Merci de télécharger le fichier du projet à cette adresse.

Merci d'avance pour ton aide