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

Signaler
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
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

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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)

++
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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 #   
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Bonjour,
Tu peux déjà te contenter d'ouvrir le gestionnaire ODBC

Process.Start("odbcad32.exe")

++
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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.
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Heeeee, signe (coucou)
Désol pour le temps mit à répondre, oui je suis intéressé.

Amicalement
Pensez "Réponse acceptée"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
je pense au contraire que cela correspond à ton souhait dans ta question posée par ton post.
Essai avant !
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

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"
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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 :)
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019

Merci beaucoup future rois des pirates

Amicalement
Pensez "Réponse acceptée"