ADODC et app.apth ??? [Résolu]

Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
- - Dernière réponse : Galaad9999
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
- 12 août 2010 à 17:14
Bonjour,

J'utilise actuellement sur ma feuille (form VB6) un composant adodc.
Lors de la création de ce dernier, je remplis, en cliquant sur les '...' de la propriété ConnectionString dans la fenêtre Propriété du composant, les différentes propriétés que sont ConnectionString, RecordSource et CommandType.

Mon problème est le suivant, la propriété ConnectionString est complétée via un Browse, de ce fait, il ne m'est pas possible de changer la DB de place.

En fait, je crée cette appli sur 2 PC différents (maison et boulot) et je suis alors obliger de simuler un drive H: (comme au boulot);

Comment faire dés lors pour pouvoir changer mon appli de répertoire (sans me soucié de la DB puisqu'elle se trouve dans le même répertoire que l'appli) ?

J'ai chercher pas mal en fait, mais il semblerait que cette méthode de création soit moins utilisée que celle qui consiste à créer une instanciation de la classe "connexion", idem pour le RecordSource, etc....

Voilà j'espère être assez clair.....


"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
21
3
Merci
Génère ta chaine de connexion comme ça :
Public Function Db_GetConnString(Optional FileName As String =  "") As String
 Dim S As String
 S = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=@path;User Id=admin;Password=;"
 If FileName "" Then FileName App.EXEName & ".mdb"
 S = Replace(S, "@path", App.Path & "" & FileName)
 Db_GetConnString = S
End Function


Et dans ton Form_Load :
Private Sub Form_Load
 Me.Adodc1.ConnectionString  = Db_GetConnString("tonFichier.mdb")
 Me.Adodc1.Refresh
End Sub


Truc à ne pas oublier : tu dois effacer la propriété ConnectionString de l'objet dans l'IDE de VB6.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
21
3
Merci
Pour t'éclairer un peu,[list][*] Database.AffectAdodc Me.Adodc, "SELECT * FROM Users;" : j'utilise la sub du module Database en lui passant en référence l'objet Adodc du formulaire sur lequel on se trouve et le query SQL à lui donner.[*] rs.Close: Set rs = Nothing : là j'ai effectivement mis deux commandes sur une ligne. rs.Close libère les ressources utilisées à l'exécution du query et Set rs = Nothing détruit l'objet et libère la mémoire qui lui était allouée./list

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
Bonjour,

Un tout grand merci . Réponse Acceptée

Surement à bientôt
Commenter la réponse de Galaad9999
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
Bon voilà,

Cela fonctionne très bien (comme dit ci-dessus), toutefois, il subsiste un petit souci. Il semblerait en effet que lors du load de la feuille, un check soit déjà fait (par le système). Apparement si un (ou plus) composant de la feuille est lié à ADODC1, il donne un message d'erreur
"[Microsoft][OBDC Driver Manager] Data source name not found and no default driver specified"
Alors, typiquement il ne trouve pas la DB, ensuite il rentre véritablement dans le form load (vive le debbugging ), et là il continue sans souci, affecte correctement le ConnectionString, etc.... Le système fait-il lui même un pré-checking ? peut-on faire un Bypass de ce message d'erreur ? Ou enfin, un petit truc qui tue et qui n'est qu'un détails à corriger ?


"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Commenter la réponse de Galaad9999
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
21
0
Merci
Essaie de remettre les propriétés de liaison des contrôles à zéro et de les affecter dans le Form_Load ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
grrrr ...

Alors voilà j'essaie ta proposition et malheureusement "Compile Error : Method or data member not found".... le debbugger se place sur .DataSource

J'ai donc supprime les propriétés DataField et DataSource et je les ai codé au form_load. Je mets ci-dessous les détails de ma manip pour un seul des composants :

Private Sub Form_Load()
Dim intCount As Integer
frmNewDoc.adoInfoDoc.ConnectionString = DBConnectionString()
frmNewDoc.adoInfoDoc.Refresh
txtProjectName.DataSource = Me.adoInfoDoc
txtProjectName.DataField = "fldProject"

frmNewDoc.adoInfoDoc.Recordset.AddNew

Encore merci pour ta patience

"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Commenter la réponse de Galaad9999
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
21
0
Merci
Oublie alors l'affectation dynamique de ces propriétés ... As-tu fait comme dans DbExample pour les propriétés de l'ADODC ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
Non, comme j'avais commencé avec une méthode quelque peu différente..... Et qui semblait plus simple (ce n'est peut-être que mon impression). J'ai aussi quelques soucis avec certaines méthodes que tu utilises. Par exemple, je ne vois pas très bien à quoi correspond chaque élément d'un ligne comme celle-ci :
Database.AffectAdodc Me.Adodc, "SELECT * FROM Users;" == Pour le SELECT ok, mais ne connaissant pas du tout cette syntaxe le reste m'échappe.... Ou bien, est-ce un truc de vieux barroudeur de mettre tout sur une ligne au lieu de 2 ou 3 ?

Comme j'aime être clair et bien comprendre se que je fais, je détails plus chaque ligne de mon code (amateur je le rappel, puisque je ne suis pas developpeur) Voir exemple ci dessous :

Private Sub Form_Load()
Dim intCount As Integer
frmNewDoc.adoInfoDoc.ConnectionString = DBConnectionString()
frmNewDoc.adoInfoDoc.Refresh
frmNewDoc.adoInfoDoc.Recordset.AddNew
frmNewDoc.adoInfoDoc.RecordSource = " SELECT * FROM tblInfoDoc"
intCount = frmNewDoc.adoInfoDoc.Recordset.RecordCount
End Sub

Du coup, quand je me retrouve avec rs.close: set rs=nothing , bien que dans ce cas, je vois le résultat, la syntaxe m'échappe, cela représente-t-il aussi 2 lignes de code en une ?

Voilà, merci d'avance

"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Commenter la réponse de Galaad9999
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
Bon, ici aussi, j'avance, il s'agisait d'une Valeur que j'avais oublié d'enlever des prorpiétés. un jour, Toujours...mais je progresse

"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Commenter la réponse de Galaad9999
Messages postés
27
Date d'inscription
mardi 27 juillet 2010
Dernière intervention
27 août 2010
0
Merci
Ok merci, cela en aidera aussi d'autre qui débutent.


"There are 10 kinds of people. Those who understand binary notation, and those who do not."
Commenter la réponse de Galaad9999

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.