Access VBA et recordset
RiriQC
Messages postés
7
Statut
Membre
-
RiriQC Messages postés 7 Statut Membre -
RiriQC Messages postés 7 Statut Membre -
Bonjour,
Je me lance dans le VBA et après moultes tentatives me voila bloqué et en quête d'assistance...
Je souhaiterais à l'activation d'un formulaire que celui-ci aille chercher dans une table (non reliée au formulaire) appelée Diffusion, la présence ou non de valeurs (codes des services en diffusion) et s'il les trouvent de m'activer la case à cocher correspondante.
Private Sub Form_Current()
SELECT Diffusion.Indexdoc, Diffusion.CodeService FROM Diffusion WHERE (((Diffusion.CodeService)=1))
If (((Diffusion.Indexdoc)=[Forms]![Documents].[Indexdoc]) AND ((Diffusion.CodeService)=1)) Then
Cocher256 = True
Else
Cocher256 = False
End If
End Sub
Apparemment il faut que je passe par le recordset pour faire quelque chose de ce genre, j'ai fait quelques tests pour l'instant infructeux.
Merci de m'éclairer de vos lumières !
Je me lance dans le VBA et après moultes tentatives me voila bloqué et en quête d'assistance...
Je souhaiterais à l'activation d'un formulaire que celui-ci aille chercher dans une table (non reliée au formulaire) appelée Diffusion, la présence ou non de valeurs (codes des services en diffusion) et s'il les trouvent de m'activer la case à cocher correspondante.
Private Sub Form_Current()
SELECT Diffusion.Indexdoc, Diffusion.CodeService FROM Diffusion WHERE (((Diffusion.CodeService)=1))
If (((Diffusion.Indexdoc)=[Forms]![Documents].[Indexdoc]) AND ((Diffusion.CodeService)=1)) Then
Cocher256 = True
Else
Cocher256 = False
End If
End Sub
Apparemment il faut que je passe par le recordset pour faire quelque chose de ce genre, j'ai fait quelques tests pour l'instant infructeux.
Merci de m'éclairer de vos lumières !
A voir également:
- Access VBA et recordset
- Access appdata - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
- Acer quick access - Forum logiciel systeme
- Excel compter cellule couleur sans vba - Guide
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
11 réponses
Bonjour,
Ce code est fait pour ce connecter a toutes les bases access
Bon courage
Ce code est fait pour ce connecter a toutes les bases access
Private Sub Form_Current()
'Outils, References, ajouter Microsoft DAO 3.6 object library
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Chemin_Base = "C:\........\nomdelabase.mdb ou ACCDB"
'chaine de connexion: enlever ,*.accdb si pas 2007 et plus
connstring = "DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}; DBQ=" & Chemin_Base
'Connexion a la base
conn.Open connstring
'Requete SQL
SQL = "SELECT Indexdoc, CodeService FROM Diffusion WHERE CodeService=1"
'Ouverture du recordset
rs.Open SQL, conn, 3, 3
'cela suppose qu'il n'y a qu'un seul enregistrement!!!!!!!!
If (Diffusion.Indexdoc = [Forms]![Documents].[Indexdoc]) And _
(Diffusion.CodeService = 1) Then
Cocher256 = True
Else
Cocher256 = False
End If
rs.Close
End Sub
Bon courage
Merci pour les infos de connexion. J'ai cependant un problème d'ODBC (Source de données introuvable et nom de pilote non spécifié).
Y a t-il d'autres moyens d'ouvrir un recordset ?
Y a t-il d'autres moyens d'ouvrir un recordset ?
Hello
Voila le code qui génère le message d'erreur ODBC
Je viens également de m'acheter un livre sur le VBA histoire de mieux comprendre ce que je fais...... Merci encore pour votre assistance
Private Sub Form_Current()
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Chemin_Base = " Q:\Gestion documentaire\Gestion doc.accdb "
connstring = "DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}; DBQ=" & Chemin_Base
conn.Open connstring
SQL = "SELECT Indexdoc, CodeService FROM Diffusion WHERE CodeService=1"
rs.Open SQL, conn, 3, 3
If (Diffusion.Indexdoc = [Forms]![Documents].[Indexdoc]) And (Diffusion.CodeService = 1) Then
Cocher256 = True
Else
Cocher256 = False
End If
rs.Close
End Sub
Voila le code qui génère le message d'erreur ODBC
Je viens également de m'acheter un livre sur le VBA histoire de mieux comprendre ce que je fais...... Merci encore pour votre assistance
Private Sub Form_Current()
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Chemin_Base = " Q:\Gestion documentaire\Gestion doc.accdb "
connstring = "DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}; DBQ=" & Chemin_Base
conn.Open connstring
SQL = "SELECT Indexdoc, CodeService FROM Diffusion WHERE CodeService=1"
rs.Open SQL, conn, 3, 3
If (Diffusion.Indexdoc = [Forms]![Documents].[Indexdoc]) And (Diffusion.CodeService = 1) Then
Cocher256 = True
Else
Cocher256 = False
End If
rs.Close
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
En reportant votre test j'ai oublie de le modifier jusqu'au bout.
code modifie:
If (rs![Indexdoc] = [Forms]![Documents].[Indexdoc]) And (rs![CodeService]= 1) Then
Cocher256 = True
Else
Cocher256 = False
end if
A+
En reportant votre test j'ai oublie de le modifier jusqu'au bout.
code modifie:
If (rs![Indexdoc] = [Forms]![Documents].[Indexdoc]) And (rs![CodeService]= 1) Then
Cocher256 = True
Else
Cocher256 = False
end if
A+
oui j'avais fait un test en remplaçant le nom de la table par le recordset, ça me paraissait en effet plus cohérent mais là j'ai un problème d'ODBC. Merci encore
Re,
Plus simple, vu que vous restez sur la meme base.
A+
Plus simple, vu que vous restez sur la meme base.
Private Sub Form_Current()
'Reference a ajouter: microsoft DAO 3.6 object Library
Dim rs As DAO.Recordset
Set rs = CurrentDb().OpenRecordset("SELECT Indexdoc, CodeService FROM Diffusion WHERE CodeService=1;")
'cela suppose qu'il n'y a qu'un seul enregistrement!!!!!!!!
If (rs![Indexdoc] = [Forms]![Documents].[Indexdoc]) And _
(rs![CodeService] = 1) Then
Cocher256 = True
Else
Cocher256 = False
End If
rs.Close
End Sub
A+
ça m'a l'air en effet plus simple...
là il m'indique "impossible de mettre à jour recordset"
je pense que ça vient du fait que mon champ Cocher256 est dans le formulaire et non dans le recordset
J'ai remplaçé Cocher256 par [Forms]![Documents].[Cocher256] mais j'ai la même erreur !
Merci de vous trainer un boulet comme moi....
là il m'indique "impossible de mettre à jour recordset"
je pense que ça vient du fait que mon champ Cocher256 est dans le formulaire et non dans le recordset
J'ai remplaçé Cocher256 par [Forms]![Documents].[Cocher256] mais j'ai la même erreur !
Merci de vous trainer un boulet comme moi....