Problème avec un Datagrid lié a deux tables Access

Résolu
Minihisht Messages postés 6 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 23 septembre 2008 - 18 sept. 2008 à 17:07
Minihisht Messages postés 6 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 23 septembre 2008 - 22 sept. 2008 à 04:35
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

cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
20 sept. 2008 à 02:51
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
3
Minihisht Messages postés 6 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 23 septembre 2008
18 sept. 2008 à 17:09
Désolé, voila l'adresse du lien pour le fichier de projet  : http://site.voila.fr/hichamo/ado_datagrid.zip
0
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
19 sept. 2008 à 13:16
tu reconstruit le datasource pour datagrid après la sisie:
set datagrid.datasource=ado
datagrid.refresh
0
cs_comme Messages postés 122 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 18 juillet 2009
21 sept. 2008 à 14:01
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
0

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

Posez votre question
Minihisht Messages postés 6 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 23 septembre 2008
22 sept. 2008 à 04:35
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
0
Rejoignez-nous