p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre habitué
    Inscrit en
    août 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 71
    Points : 107
    Points
    107

    Par défaut Windev : ODBC Hyperfile : Installer le driver ODBC par programmation pour lire un fichier .FIC depuis JAVA

    Bonjour,

    Voici un code pour installer le driver ODBC hyperfile par programmation afin de pouvoir lire un fichier .fic depuis JAVA (ou autre), sans forcément avoir Windev d'installé sur sa machine.

    Le code à été testé sous Windev 15.

    Tout d'abord, il faut disposer de 5 fichiers .dll fournis par PC-Soft (Remplacer le 15 par votre version de Windev) :

    -WD150HF.DLL
    -WD150HFO.DLL
    -WD150SQL.DLL
    -WD150UNI.DLL
    -WD150VM.DLL

    A partir de la version 140026, les DLL se trouvent dans le répertoire "Program Files\Common Files\PC Soft\15.0\ODBC".

    Pour les versions précédentes, elles se trouvent dans "Windows\system32".

    Si vous ne disposez pas de ces fichiers, vous devriez pouvoir récupérer le pack d'installation "ODBC sur HyperFileSQL" sur le site de PC-Soft, dans l'espace de téléchargement des modules communs correspondant à votre version de Windev (Rechercher "odbc hyperfile modules communs") :
    http://www.pcsoft.fr/recherche.htm?s...6language%3DFR

    1/Installation du driver HyperfileSQL par programmation

    -sRepDLL correspond au répertoire dans lequel se trouvent les 5 fichiers .DLL du driver.

    Attention : Sous Windows Vista, il faut désactiver le contrôle d'accès utilisateur (UAC) de l'utilisateur courant pour pouvoir écrire dans le registre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    LOCAL
    	sKey est une chaine
    	sKeyHF est une chaine
    	sRepDLL est une chaine
     
    sKey = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI"
    sKeyHF = sKey+"\HyperFileSQL\"
     
    sRepDLL = "C:\Program Files\Common Files\PC SOFT\15.0\ODBC\"
     
    SI PAS RegistreCréeClé(sKeyHF) ALORS
    	SI ErreurDétectée ALORS
    		Erreur(ErreurInfo(errMessage))
    		RENVOYER Faux
    	FIN	
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"APILevel","1",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"ConnectFunctions","NYN",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"Driver",sRepDLL+"WD150HFO.DLL",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"DriverODBCVer","02.10",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"FileExtns","*wdd",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"FileUsage","0",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"Language","0",RegistreTypeEntier_8) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"Setup",sRepDLL+"WD150HFO.DLL",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"SQLLevel","0",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyHF,"UsageCount","0",RegistreTypeEntier) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
    2/Installation de la source de donnée (DSN) par programmation

    Cette installation peut être faite en utilisant l'administrateur de données ODBC (ODBCAD32.EXE), comme expliqué ici :
    http://doc.pcsoft.fr/fr-FR/?3044273

    Par programmation, cela donne :

    -sRepDLL correspond au répertoire dans lequel se trouvent les 5 fichiers .DLL du driver.
    -sDSN correspond au nom que vous souhaitez donner à la source de données HyperFileSQL.
    Ce nom permettra d'identifier la base de données HyperFileSQL dans les programmes externes.
    -sWDD correspond au chemin complet de l'analyse hyperfile (Fichier *.WDD).
    -sRepFic correspond au répertoire des fichiers hyperfile correspondants à l'analyse (Fichiers *.FIC).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    LOCAL
    	sKey est une chaine
    	sKeyDSN est une chaîne
     
    	sDSN est une chaine
    	sWDD est une chaine
    	sRepFic est une chaine
     
    sDSN = "HELLODBC"
    sWDD = "C:\ODBC_TEST\Analyse.WDD"
    sRepFic = "C:\ODBC_TEST\"
     
    sKey = "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI"	
    sKeyDSN = sKey+"\"+sDSN
     
    SI PAS RegistreCréeClé(sKeyDSN) ALORS
    	SI ErreurDétectée ALORS
    		Erreur(ErreurInfo(errMessage))
    		RENVOYER Faux
    	FIN	
    FIN
     
    SI PAS RegistreEcrit(sKeyDSN,"Analyse",sWDD,RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyDSN,"Driver",sRepDLL+"WD150HFO.DLL",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyDSN,"Encryption","",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyDSN,"PWDXX","",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreEcrit(sKeyDSN,"RepFic",sRepFic,RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
     
    SI PAS RegistreCréeClé(sKey+"\ODBC Data Sources") ALORS
    	SI ErreurDétectée ALORS
    		Erreur(ErreurInfo(errMessage))
    		RENVOYER Faux
    	FIN	
    FIN
     
    SI PAS RegistreEcrit(sKey+"\ODBC Data Sources",sDSN,"HyperFileSQL",RegistreTypeChaîne) ALORS
    	Erreur(ErreurInfo(errMessage))
    	RENVOYER Faux
    FIN
    3/Accès à la source de données depuis JAVA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class ODBC_TEST {
     
    	public static void main(String[] args) {
    		try {
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    			}
    		String jURL = "jdbc:odbc:HELLODBC";
    		try {
    			Connection Con = DriverManager.getConnection(jURL);
    			Statement jRequete = Con.createStatement();
    			ResultSet Resultat = jRequete.executeQuery("SELECT * FROM FI_CLIENT");
    			ResultSetMetaData jMetaData= Resultat.getMetaData();
    			int i = 0;
    			while(Resultat.next()){
    				i++;
    				System.out.println("");
    				System.out.println("-------------------------");
    				System.out.println("Enregistrement "+i);
    				System.out.println("");
    				for(int c = 1;c<=jMetaData.getColumnCount();c++){
    					System.out.println("Nom de colonne "+c+" : " + jMetaData.getColumnLabel(c)); 
    					System.out.println("Valeur : " + Resultat.getString(c));
    				}
    			}	
    			Resultat.close();
    			jRequete.close();
    			Con.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Des infos complémentaires sur la doc PC-Soft :
    http://doc.pcsoft.fr/fr-FR/?3044273

    Merci au logiciel RegShot :
    http://www.clubic.com/telecharger-fi...0-regshot.html
    qui m'a permis de voir les modifications effectuées dans le registre lors de la création de sources de données ODBC par le biais de l'exécutable ODBCAD32.EXE.

    Bonne prog

  2. #2
    Membre habitué
    Inscrit en
    août 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 71
    Points : 107
    Points
    107

    Par défaut Installation du driver HyperfileSQL et création de la source de données ODBC

    J'ajoute que l'installation du driver HyperfileSQL peut se faire sans programmation sur des postes sur lesquels Windev n'est pas installé, en créant un exécutable spécifique avec Windev, de cette manière :

    -Créez un nouveau projet Windev de base (Vous n'êtes pas obligé de créer la moindre fenêtre).
    -Paramétrez la création d'un exécutable avec WDINST (Menu "Outils .. WDINST - Éditeur d'installation").).

    1. Sélectionnez l'option "Installation .. Options de l'installation .. Fichiers HyperFileSQL".
    (Dans Windev 15, sélectionnez le menu "Paramètres de l'installation .. Fichiers HyperFileSQL")
    2. Cochez l'option "Installer le driver ODBC pour HyperFileSQL".
    3. Saisissez le nom permettant d'identifier la base de données HyperFileSQL lors de l'utilisation du driver ODBC sur HyperFileSQL, ainsi que le chemin de l'analyse .wdd utilisée comme source de données ODBC, puis validez.

    -Créez l'exécutable
    -Lancez l'exécutable sur les postes sur lesquels vous souhaitez installer le driver HyperFileSQL et créer la source de données ODBC.

    C'est fait !

    Explications complémentaires dans la doc en ligne Windev :
    http://doc.pcsoft.fr/fr-FR/?2028024

    Bonne prog

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/03/2013, 17h26
  2. [Hyperfile][WD5.5] Drivers ODBC ?
    Par chtom dans le forum WebDev
    Réponses: 2
    Dernier message: 08/09/2011, 13h31
  3. driver ODBC Hyperfile / Windows 7
    Par toune018 dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 17/08/2010, 09h25
  4. [WD12] Driver ODBC HyperFile sur postes clients
    Par mogwai162 dans le forum WinDev
    Réponses: 4
    Dernier message: 01/04/2009, 08h30
  5. Installation du driver ODBC Oracle 9i
    Par exempleinfo dans le forum Administration
    Réponses: 0
    Dernier message: 22/12/2008, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo