Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > Contribuez
Contribuez Vos contributions pour la rubrique Windev : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/12/2010, 10h11   #1
bastiencb
Membre régulier
 
Inscription : août 2005
Messages : 56
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 56
Points : 70
Points : 70
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 :
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 :
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 :
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
bastiencb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h32   #2
bastiencb
Membre régulier
 
Inscription : août 2005
Messages : 56
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 56
Points : 70
Points : 70
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
bastiencb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web