Galaad9999
Messages postés27Date d'inscriptionmardi 27 juillet 2010StatutMembreDernière intervention27 août 2010
-
9 août 2010 à 18:16
Galaad9999
Messages postés27Date d'inscriptionmardi 27 juillet 2010StatutMembreDernière intervention27 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."
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 10 août 2010 à 01:17
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
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 12 août 2010 à 09:21
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
Galaad9999
Messages postés27Date d'inscriptionmardi 27 juillet 2010StatutMembreDernière intervention27 août 2010 11 août 2010 à 02:34
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."
Vous n’avez pas trouvé la réponse que vous recherchez ?
Galaad9999
Messages postés27Date d'inscriptionmardi 27 juillet 2010StatutMembreDernière intervention27 août 2010 11 août 2010 à 23:30
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."
Galaad9999
Messages postés27Date d'inscriptionmardi 27 juillet 2010StatutMembreDernière intervention27 août 2010 12 août 2010 à 02:52
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."