PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Voici des infos pour dev. sur AS400 sans EASYCOM (avec ODBC ou OLEDB)
Voici des infos pour dev. sur AS400 sans EASYCOM (avec ODBC ou OLEDB)
Iniciado por erick.jenft, 27,oct. 2005 15:42 - 6 respuestas
Publicado el 27,octubre 2005 - 15:42
Bonjour,
Plutot spécialiste AS400 (et pas du tout un spécialiste des ODBC et OLEDB) je voulais profiter à la fois de l’efficacité de Windev (développement rapide, interface utilisateur…) et de la fiabilité de l’AS400 (sécurité pour les fichiers) SANS UTILISER EASYCOM. Depuis quelques jours j’ai glané des informations sur le forum PCSOFT et fait de nombreux tests. Je vous fais donc partager mes premières conclusions.

Bien entendu, si vous avez des commentaires ou compléments d’information, n’hésitez pas à nous les faire partager.

Il existe au moins 2 méthodes pour travailler avec des fichiers AS400 :
1) les interroger par SQL (SQLCONNECTE et ordres SQL)
2) en décrivant la connexion à l’AS400 puis en utilisant les ordres classiques Hxxxxx

1) Par SQLCONNECTE, il est possible d’utiliser soit 1 driver ODBC soit 1 provider OLEDB (livrés avec Client Access).

Exemple :
NumConnexion est un entier
ResExec est un booléen
NomSource est une chaîne

// Connexion avec ODBC
NomSource = "ODBC_CAccess32" // Nom de la source définie dans source ODBC
NumConnexion = SQLConnecte(NomSource, "User", "Pwd", "", "ODBC")
// User et Pwd : Utlisateur et mot de passe AS400
// OU
// Connexion avec OLEDB
NumConnexion = SQLConnecte("MonAS400", "User", "Pwd","", "OLEDB", "IBMDASQL")
// MonAS400 : Nom de l’AS400 sur le réseau
// IBMDASQL : nom d’1 des provider OLEDB en V5R3
// Quelque soit la connexion…
SI PAS NumConnexion<>0 ALORS
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données" + NomSource + ...
"a échoué." +RC+ "Code erreur : " + SQL.Erreur +RC+...
SQL.MesErreur)
SQLDeconnecte()
FIN
// Donnée1 et Donnée2 sont des zones du fichier NOMFIC dans la bibliotheque BIBLIO
ResExec = SQLExec("SELECT Donnée1, Donnée2 FROM BIBLIO.NOMFIC", "REQ1")
SI ResExec ALORS
// Saisie1 et Saisie2 sont 2 rubriques d'une fenetre
SQLAssocie("REQ1", Saisie1, Saisie2)
SQLPremier("REQ1")
SINON
SQLInfoGene("REQ1")
Info("Erreur exécution de la requête : " + SQL.MesErreur)
FIN

Avec ce code le fichier BIBLIO.NOMFIC n'a pas besoin d’exister dans l'analyse.
La connexion ODBC est plus rapide mais a des temps de réponses plus variables que la connexion OLEDB.

2) Par la description de la connexion, seul l’accés OLEDB est permis :

Exemple :
HDécritConnexion("connectAS"," User "," Pwd "," MonAS400","","IBMDASQL",hOLectureEcriture)
HOuvreConnexion("connectAS")

HLitRecherche(NOMFIC,Clef_de_nomfic,Valeur_recherchee)
SI HTrouve(NOMFIC) ALORS
Saisie1 = NOMFIC. Donnée1
Saisie2 = NOMFIC. Donnée2
SINON
Saisie1 = 0
Saisie2 = 0
FIN

Avec ce type de connexion, les ordres Windev Hxxxxx sont utilisables.
Cette connexion ce fait avec OLEDB donc moins rapide.

INFOS SUPPLEMENTAIRES (mais peut être à compléter…):
1) Si vous voulez utiliser les ordres Hxxxxx, importez vos fichiers dans l’analyse en passant par un lien OLEDB. Si vous passés par un lien ODBC, le nom de fichier n’est pas reconnu et génére des erreurs de compilation.
2) Les importations de fichiers AS400 ne ramènent pas les clefs éventuelles. AUCUNE IMPORTANCE ! Dans le fichier importé vous pouvez rajouter toutes les clef que vous souhaitez et les utilisées même si elles n’existent pas dans le fichier AS400 ! … Par contre, je n’ai pas trouvé le moyen d’utiliser des clefs composées…
3) On ne peut importer que les fichiers physiques en passant par un lient ODBC. On peut importer les physiques et les logiques avec OLEDB (mais sans la clef).
4) Je n’ai pas trouvé comment créer un fichier sur l’AS400 (HCréationSiInexistant ne fonctionne pas)…
Pour info, ma config : 2 AS400 (modèle 520 en V5R3), 6 serveurs intel, réseau LAN et WAN en IP, 150 utilisateurs (passifs et PC avec Client Access V5R3M0 niveau de maintenance SI16496). Développements en Windev 8.

Voila, en espérant que ces quelques lignes pourront satisfaire du monde…
Merci à tous ceux qui avaient déjà abordé ces sujets sur des posts précédents et qui m’ont ainsi permis de faire ce premier résumé.

PCSofteurs, PCSofteuses, bon développement
Publicado el 27,octubre 2005 - 17:11
Bonjour,
Nous avons
- 2 E200 V3R2 (eh oui ils tournent encore...O)))
- 1 40S V4R4 (oui je sais c'est pas très récent mais bon c'est de la bonne came)
- 1 270 V5 ( on n'est pas riche alors on fait avec)

Le constat que nous avons fait et que sur les deux modèles récents (on ne rigole pas), le même programme en ODBC était je vais dire "acceptable" mais sur nos deux vieux nanars, nous étions à 1 minute en moyenne sur une fonction particulière. Après changement de la carte CPU qui a doublé le fréquence d'horloge on est passé à 30s en moyenne (pas de miracle...) En passant avec Easycom 5s... no comment
C'est vrais que si on change de version de Windev alors on doit changer la version EA et c'est pas le même tarif surtout en illimité.
Ayant EA pour 7.5 et devant utiliser des fonctions typique de WD8.0 (PDF et événement sur port RS232) j'ai trouvé l'astuce suivante :
Un programme en 7.5 qui dialogue avec celui en 8.0 (via un fichier HF et des messages Windows) et le tour et joué (un peut plus long mais bon ) car même si je passe en 9.0 voir en 10.0 cela fonctionnera et "sans dépense en supplément"...
Publicado el 27,octubre 2005 - 19:01
On peut rajouter à ce brillant exposé que dans la méthode 1, on peut lancer
des batch :
PROCEDURE ExeBatch400(fnc400)
rq,str est une chaîne
Nrq est une chaîne = "RqExe"
Ret,merr est une chaîne
rq = "CALL "+fnc400
SI PAS SQLExec(rq,Nrq) ALORS
SQLInfoGene( Nrq )
str = SQL.MesErreur
merr = "Erreur " + SQL.Erreur +"dans la requête :"+Nrq +CR+str
SQLFerme( Nrq )
RENVOYER "-1"+CRLF+merr
FIN
SQLFerme( Nrq )
RENVOYER "0"



"erick" <erick.jenft@ermitage.net> a écrit dans le message de news:
4360c425$1@news.pcsoft.fr...

Bonjour,
Plutot spécialiste AS400 (et pas du tout un spécialiste des ODBC et OLEDB)
je voulais profiter à la fois de l'efficacité de Windev (développement
rapide, interface utilisateur.) et de la fiabilité de l'AS400 (sécurité
pour les fichiers) SANS UTILISER EASYCOM. Depuis quelques jours j'ai glané
des informations sur le forum PCSOFT et fait de nombreux tests. Je vous
fais donc partager mes premières conclusions.

Bien entendu, si vous avez des commentaires ou compléments d'information,
n'hésitez pas à nous les faire partager.

Il existe au moins 2 méthodes pour travailler avec des fichiers AS400 :
1) les interroger par SQL (SQLCONNECTE et ordres SQL)
2) en décrivant la connexion à l'AS400 puis en utilisant les ordres
classiques Hxxxxx

1) Par SQLCONNECTE, il est possible d'utiliser soit 1 driver ODBC soit 1
provider OLEDB (livrés avec Client Access).

Exemple :
NumConnexion est un entier
ResExec est un booléen
NomSource est une chaîne

// Connexion avec ODBC
NomSource = "ODBC_CAccess32" // Nom de la source définie dans source ODBC
NumConnexion = SQLConnecte(NomSource, "User", "Pwd", "", "ODBC")
// User et Pwd : Utlisateur et mot de passe AS400
// OU
// Connexion avec OLEDB
NumConnexion = SQLConnecte("MonAS400", "User", "Pwd","", "OLEDB",
"IBMDASQL")
// MonAS400 : Nom de l'AS400 sur le réseau
// IBMDASQL : nom d'1 des provider OLEDB en V5R3
// Quelque soit la connexion.
SI PAS NumConnexion<>0 ALORS
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données" + NomSource + ...
"a échoué." +RC+ "Code erreur : " + SQL.Erreur +RC+...
SQL.MesErreur)
SQLDeconnecte()
FIN
// Donnée1 et Donnée2 sont des zones du fichier NOMFIC dans la
bibliotheque BIBLIO
ResExec = SQLExec("SELECT Donnée1, Donnée2 FROM BIBLIO.NOMFIC", "REQ1")
SI ResExec ALORS
// Saisie1 et Saisie2 sont 2 rubriques d'une fenetre
SQLAssocie("REQ1", Saisie1, Saisie2)
SQLPremier("REQ1")
SINON
SQLInfoGene("REQ1")
Info("Erreur exécution de la requête : " + SQL.MesErreur)
FIN

Avec ce code le fichier BIBLIO.NOMFIC n'a pas besoin d'exister dans
l'analyse.
La connexion ODBC est plus rapide mais a des temps de réponses plus
variables que la connexion OLEDB.

2) Par la description de la connexion, seul l'accés OLEDB est permis :

Exemple :
HDécritConnexion("connectAS"," User "," Pwd ","
MonAS400","","IBMDASQL",hOLectureEcriture)
HOuvreConnexion("connectAS")

HLitRecherche(NOMFIC,Clef_de_nomfic,Valeur_recherchee)
SI HTrouve(NOMFIC) ALORS
Saisie1 = NOMFIC. Donnée1
Saisie2 = NOMFIC. Donnée2
SINON
Saisie1 = 0
Saisie2 = 0
FIN

Avec ce type de connexion, les ordres Windev Hxxxxx sont utilisables.
Cette connexion ce fait avec OLEDB donc moins rapide.

INFOS SUPPLEMENTAIRES (mais peut être à compléter.):
1) Si vous voulez utiliser les ordres Hxxxxx, importez vos fichiers dans
l'analyse en passant par un lien OLEDB. Si vous passés par un lien ODBC,
le nom de fichier n'est pas reconnu et génére des erreurs de compilation.
2) Les importations de fichiers AS400 ne ramènent pas les clefs
éventuelles. AUCUNE IMPORTANCE ! Dans le fichier importé vous pouvez
rajouter toutes les clef que vous souhaitez et les utilisées même si elles
n'existent pas dans le fichier AS400 ! . Par contre, je n'ai pas trouvé le
moyen d'utiliser des clefs composées.
3) On ne peut importer que les fichiers physiques en passant par un lient
ODBC. On peut importer les physiques et les logiques avec OLEDB (mais sans
la clef).
4) Je n'ai pas trouvé comment créer un fichier sur l'AS400
(HCréationSiInexistant ne fonctionne pas).
Pour info, ma config : 2 AS400 (modèle 520 en V5R3), 6 serveurs intel,
réseau LAN et WAN en IP, 150 utilisateurs (passifs et PC avec Client
Access V5R3M0 niveau de maintenance SI16496). Développements en Windev 8.

Voila, en espérant que ces quelques lignes pourront satisfaire du monde.
Merci à tous ceux qui avaient déjà abordé ces sujets sur des posts
précédents et qui m'ont ainsi permis de faire ce premier résumé.

PCSofteurs, PCSofteuses, bon développement


Publicado el 27,octubre 2005 - 19:28
Tu as aussi l'astuce suivante : 1 seule licence EA -pour la rapidité-, mais
sur un serveur SOAP, et tous les autres postes s'adressent en services WEB.
C'est hyper rapide, mais ça permet des postes multi plate forme, comme des
PPC en WIFI par exemple, et en nombre illimité.

"Philippe PASQUALI" <philippe.pasquali@bopack.com> a écrit dans le message
de news: 4360d911$1@news.pcsoft.fr...

Bonjour,
Nous avons
- 2 E200 V3R2 (eh oui ils tournent encore...O)))
- 1 40S V4R4 (oui je sais c'est pas très récent mais bon c'est de la
bonne came)
- 1 270 V5 ( on n'est pas riche alors on fait avec)

Le constat que nous avons fait et que sur les deux modèles récents (on ne
rigole pas), le même programme en ODBC était je vais dire "acceptable"
mais sur nos deux vieux nanars, nous étions à 1 minute en moyenne sur une
fonction particulière. Après changement de la carte CPU qui a doublé le
fréquence d'horloge on est passé à 30s en moyenne (pas de miracle...) En
passant avec Easycom 5s... no comment
C'est vrais que si on change de version de Windev alors on doit changer la
version EA et c'est pas le même tarif surtout en illimité.
Ayant EA pour 7.5 et devant utiliser des fonctions typique de WD8.0 (PDF
et événement sur port RS232) j'ai trouvé l'astuce suivante :
Un programme en 7.5 qui dialogue avec celui en 8.0 (via un fichier HF et
des messages Windows) et le tour et joué (un peut plus long mais bon ) car
même si je passe en 9.0 voir en 10.0 cela fonctionnera et "sans dépense
en supplément"...


Publicado el 28,octubre 2005 - 11:26
Très bonne idée ce post! Je vois que d'autres aussi cherchent des
solutions alternatives à EA. :)

Savez vous dans le cas d'une connexion ODBC quels sont les ports qu'il
faut ouvrir ?
Je voudrais mettre en place ce type de traitement sur un site webdev et
comme il est hebergé dans la DMZ il faut que je dise à mon
administrateur réseau les ports à ouvrir .


Merci à vous


--
Bon développement à tous
Christian

cciochir@ _ at _ cmii.fr
Publicado el 28,octubre 2005 - 12:10
Excellent complement d'information.
Je n'ai pas encore testé mais ca ne va pas tarder. Je te fais confiance, Gerard parce que c'est grace à certains de tes posts que j'ai pu réalisé ce sujet.
Merci
Publicado el 16,marzo 2006 - 16:54
Quelqu'un aurait-il (elle) essayé une connexion Windev Native DB2 ?

Si oui quelles conclusions ?

Merci