Comment ouvrir "Créer une nouvelle source de données" (VB.NET)

Résolu
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 19 oct. 2007 à 10:40
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 22 oct. 2007 à 10:49
Bonjour

J'ai (encore ) un problème. Je développe actuellement une appli de gestion de données qui doit pouvoir se connecter à TOUT type de base de données (BdD fichier y compris ). Je crée donc une classe permettant de faire ça (et j'ai encore pas mal de fonction/procédure/débug/teste/amélioration/... a faire).

Pour cela je voudrais utilisé pour configuré une connections ODBC éventuel ça :

Si Excel sait le faire c'est que ça doit bien être quelque part! Je trouve nul part !

Si quelqu'un sait où, ce serait très gentil de me faire profité de ça grande expériences dans des domaines aussi varié que divers et de sa grande inélégance, et de son charisme inégalable, et de ... (J'enverrais toute les compliments qu'il faudras, lol )

Merci d'avance

Amicalement
Pensez "Réponse acceptée"

17 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 oct. 2007 à 11:02
Essai ceci peut-etre ce que tu recherches

'API
Private
Declare

Auto

Function
SQLCreateDataSource
Lib

"odbccp32.dll"
(
ByVal
hWnd
As
IntPtr,
ByVal
lpszDS
As

String
)
As

Boolean

'A utiliser dans l'événement Click d'un bouton par exemple
SQLCreateDataSource(Me
.Handle,
String
.Empty)

++
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 oct. 2007 à 10:54
Pour créer et paramétrer une source ODBC sur la machine ou le code va etre executé, il faut aller dans le Panneau de configuration / Outils d'administration / Sources de données ODBC

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 11:40
Heee, oui, mais ça je sait.
Merci quand même

Je me ré-explique

Ce que je veux c'est cette form directement par mon prog (tout pareil qu'excel) soit :
-> Un 'truc' du type de Common dialog control (tout pareil qu'excel)
-> De commencé par la form que je montre sur mon 1ér post (tout pareil qu'excel).
-> De ne pas avoir à forcément crée une connection que Win peut ré-utilisé (tout pareil qu'excel)

En ce moment je cherche par commande Shell :
-> Retourne l'ID du processus lancé
-> Récup le handle du processus            <---------- Je suis ici
-> Faire un setparent pour l'intégrer à mon prog

Bon, ça se développe vite, ça vas faire à peut prés ce que je veux, mais pas exactement (la connections pourras être réutilisé par Win, et je ne suis pas serin vie à vie de la sécurité, en même temps je n'en sais pas grand chose mais quand même)
En plus dans ce cas j'arrive là (et c'est pas exactement ce que je veux en final) :

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 12:38
Bon soit c'est pas possible de faire un 'SetParent' avec cette %$£%§! de fenêtre soit c'est vraiment galère à faire.
Donc je laisse tombé cette idée.
Je vais simplement attendre la mort de cette fenaitre  (j'ai vue un truc déjà tout fait quelque part, mais où )

Pour récup le handle de la fenêtre lancé par shell et l'intégrer à une picutrebox, ça peut toujours servir à quel qu'un :
Code à collé dans une form contenant une picturebox nommé Picture1, un bouton (par exemple) exécutant la procédure "teste"
***************************************
Private Declare Function SetParent Lib "user32" ( _
     ByVal hWndChild As Long, _
     ByVal hWndNewParent As Long) As Long
'--------------------------------------
'ce code provient de l'API-Guid
Private Const GW_HWNDNEXT As Long = 2&
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
'
Public Function InstanceToWnd(ByVal target_pid As Long) As Long 'API-Guid
    Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
    test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
    Do While test_hwnd <> 0&
        If GetParent(test_hwnd) = 0& Then
            test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
            If test_pid = target_pid Then
                InstanceToWnd = test_hwnd
                Exit Do
            End If
        End If
        test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
    Loop
End Function
'--------------------------------------

Public Sub teste()
Dim ProsID As Long
Dim hwndPros As Long
    ProsID = Shell("Ici un Exe") '<-- Ne pas oublié de modifier si non erreur

    hwndPros = InstanceToWnd(ProsID)

    SetParent hwndPros, Me.Picture1.hwnd
End Sub

***************************************

Amicalement
Pensez "Réponse acceptée"
0

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

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2007 à 12:41
Bonjour,
Tu peux déjà te contenter d'ouvrir le gestionnaire ODBC

Process.Start("odbcad32.exe")

++
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 12:49
Heeee oui je m'en montante pour le moment mais J'EN VEUT PLUS (d'or, de pirates, d'îles dans les nuages,
de nami/robine en maillot, de barbek de sanji,
de chapitres, d'épisodes, ... Heee je m'égare là...
)

Bon si non j'ai re-trouvé ce piti code qui me permet d'attendre la mort d'une fenêtre dont on à le handle (la reconstitution s'avère facile, il me semble)

Ici

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 12:58
Heeee, par contre (si en final la solution temporaire est la définitive) je demande à mon utilisateur de tapé 2 fois un nom de connections (risque d'erreur) et ... ça me plais pas (oui je sait que je suis un chieur, mais bon...)

Une idée (moi zero)?

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 13:30
Si non temps pis (je vais pas y passé la journée), je re-développe des form 'maison' (je sait lire la liste des drivers ODBC dans la base de registre, je n'ai pas ce code sur moi, me faire pensé lundi à le posté si ça intéresse du monde ) mais je ne sait pas différencier celle qui attende des fichiers et celle qui attende des IP. L'idéale serais la liste des paramètres attendu

Quelqu'un sait?

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 13:57
La liste des drivers en base de registre est là :
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers

La liste des paramètre d'un driver :
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\NomDuDriver

OK, c'est bien beau mais je sait comment quel sont les paramétres que je met dans ma chaine de connection?

Amicalement
Pensez "Réponse acceptée"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2007 à 15:13
Tu peux afficher la fenetre d'une nouvelle connection déjà remplis avec des valeurs l'utilisateur n'aura plus qu'à indiquer les bonnes valeurs et à valider. Si intéressé fait moi signe.
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 oct. 2007 à 17:01
Heeeee, signe (coucou)
Désol pour le temps mit à répondre, oui je suis intéressé.

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
20 oct. 2007 à 12:32
Ok (je bosse le WeekEnd !!! Mais qu'es que je fait ???)

Bon si je comprend bien cette API (fonction se trouvant dans une dll win, ici "odbccp32.dll"
dans le dossier "system32" de Win, corrigez moi si je raconte des conneries) me permet de crée une connection, fichier, utilisateur, ou system en ODBC.
Déjà pas mal

Bon ce n'est pas mon objectif final mais BIEN quand même, Merci

Par contre si tu pouvais me dire où tu trouvé cette info. Je cherche un site/livre bien fait sur les API (je suis sure que je vais apprendre PLEIN de 'truc').

Amicalement
Pensez "Réponse acceptée"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
20 oct. 2007 à 12:44
je pense au contraire que cela correspond à ton souhait dans ta question posée par ton post.
Essai avant !
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
20 oct. 2007 à 16:08
En faite j'ai tester (je ne répond jamais sans au moins tester, je re-test tout de suite).

(mercij'apprécie vraiment le coup de main, c'est moi qui suis un chieur et je le sais, on me le dit suffisamment souvent pour que je ne le prenne pas mal )

En faite  (mais heeee j'ai pas Excel là tout de suite pour re-faire un test sur son fonctionement, suis sur OpenOffice à la maison) je voudrais que mes connections ne soit pas réutilisable par d'autre logiciel (ici elle sont accessible par "Outils d'administration/Sources de données (ODBC)" onglets "Sources de données utilisateur/Sources de données système/Sources de données fichier") cette classe que je développe vas se retrouvé dans un logiciel destiné à traité des données dite 'sensible' chez nos client (et je ne veut pas le moindre reproche vis à vis de la sécurité, même dans le cas d'une connection ODBC).

Si ça ne tenais qu'à moi je ferais un groupe de radiobuton pour sélectionné le type de connection, et demanderais la chaîne de connection (on vas pas configuré tout les jours!!!), mais bon....

Par contre si il y à possibilité de "pré-paramétrer" cette fenêtre (oui je suis un chieur et je demande la lune) de façon à faire une connection fichier et que je prenne "possession" de ce fichier (quitte à le crypté par la suite) je serais plus tranquil.

Tout ça pour dire :
Merci c'est à 99,9% ce que je cherche. (En sous-entendu c'est moi qui fais chier)
Je m'attend même à utilisé cette option en final et d'afficher un 'tuto' durant la configuration de la connection pour que ça ce fasse tout pile poile ce que je veux.

Désolé si je t'ai froissé
Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
22 oct. 2007 à 10:07
Bonjour ,
Ce que tu m'a fournis fait effectivement à peut près ce que fait Excel. Il me semblais que Excel savais faire des connections 'propriétaire' (dans le sens ou seul lui peut l'utilisé), or je me trompais. Je conserve donc ta solution Willi.

Merci encore  (par contre tu ne m'a pas dit où tu avais trouvé cette info, svp c'est possible ? )

Amicalement
Pensez "Réponse acceptée"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
22 oct. 2007 à 10:36
J'ai consulté la liste des fonctions proposées dans l'Api ODBC sur Msdn
Lien direct: http://msdn2.microsoft.com/en-us/library/ms712564.aspx
Après google direction msdn pour tout ce qui touche aux API Windows :)
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
22 oct. 2007 à 10:49
Merci beaucoup future rois des pirates

Amicalement
Pensez "Réponse acceptée"
0
Rejoignez-nous