Minihisht
Messages postés6Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention23 septembre 2008
-
18 sept. 2008 à 17:07
Minihisht
Messages postés6Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention23 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]
A voir également:
Problème avec un Datagrid lié a deux tables Access
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 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
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Minihisht
Messages postés6Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention23 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.