Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Astuce

La base de donnée est forcément sous gestion SQL par un serveur SQL depuis les générations 7 de l’ERP et la version d’Harmony associée.

Ce pilote ODBC Diva natif n’a donc aucune utilité depuis les version Harmon Harmony 400 et supérieures

Généralités
Open Database Connectivity (ODBC) est une interface standard définie par Microsoft, permettant d'accéder à une base de données par une requête SQL.
L'interface ODBC définit les éléments suivants :

...

Pour les tables, l'import concerne toutes les tables de tous les fichiers permanents. (voir propriété fichier temporaire des objets « fichier »).

Ancre
Top_of_Tables_de_r_f_rence_sp_ci
Top_of_Tables_de_r_f_rence_sp_ci

Tables de référence spécifiques
La personnalisation du zoom des tables d'une source permet d'ajouter un choix (au menu et dans la barre de boutons) pour accéder à une liste de tables de référence spécifiques.
Pour cela, il faut adapter le « zoom des tables de la source » pour sélectionner des tables à partir d'un fichier de modèles spécifiques en surchargeant le module zodbcTable.dhop.
La surcharge consiste à ajouter un choix d'accès au zoom des modèles spécifiques par la fonction ZoomOdbcAjouterModeles. Il est possible d'ajouter plusieurs fichiers modèles en appelant autant de fois la fonction.
Dans le module de surcharge « zodbcTableU.dhsp » on écrira :
OverWrite "zodbcTable.dhoP"
procedure ZoomDebut
beginp
ZoomOdbcAjouterModeles("Tables ODBC xxx",
"Ajouter des tables à partir de xxx", \
"Ajout de tables xxx", \
"fodbcxxx.dhfi", \
'Tables et Vues de xxx')
Standard.ZoomDebut
endp
Description de ZoomOdbcAjouterModeles :
ZoomOdbcAjouterModeles(ToolBar, Bulle, Menu, Fichier, Titre )

  • ToolBar

Texte du bouton de la toolbar

  • Bulle

Info bulle du bouton

  • Menu

Texte du choix dans le menu

  • Fichier

Nom du fichier des tables spécifiques

  • Titre

Titre du zoom des modèles spécifiques


Fichier de modèles spécifiques:
Le fichier des modèles de tables spécifiques doit être créé. Il a les mêmes caractéristiques que le fichier fodbcdivalto.dhfi. On peut procéder par copie, effacement et renommage de ce fichier.
Ajout des tables dans un fichier de modèles spécifiques
Voir le paragraphe Importer des tables ou des vues depuis le dictionnaire du chapitre Tables de référence.

Ancre
Top_of_Vues_de_la_source_htm
Top_of_Vues_de_la_source_htm

Vues de la source
Ancre
Top_of_Vue_htm
Top_of_Vue_htm

Vue
Voir la définition des vues
Le bouton "Tables/Vues de la source" ou la touche F6 permettent d'afficher la liste des tables et des vues d'une source. Il est alors possible d'ajouter, de modifier ou de supprimer une vue dans cette source.
L'ajout d'une vue se fera généralement par sélection dans une liste des vues de référence. Toutefois il est possible de saisir manuellement les informations.
Pour une vue, on trouvera les informations suivantes:

...

Exemple :
Choix arbitraire de l'index de lecture pour la vue des écritures non lettrées
Hfile ccfdd.dhsd ccfdce ccfdce
; procédure d'initialisation de MaVue
Public Procedure MaVue
Beginp
Ccfdce.key = 'E'
Endp

Positionner des filtres de lecture du fichier
Lorsque la lecture de la table de base est assurée par une procédure Diva, il peut être intéressant de positionner un filtre afin d'optimiser les temps de lecture.
Exemple :
; procédure d'initialisation de MaVue
Public Procedure MaVue
Beginp


hfilter(gtfpcf,"ce1 = 3 and dos = " & Mz.Dos ,"B 3" )
Endp
Paramètres de la vue pingreceive « ODBCINIT »
Le driver Odbc envoie par le tunnel le paramètre « ODBCINIT ». C'est une chaîne <hmp> qui contient les paramètres de la vue définis dans le dictionnaire de vue.

<Nom>

Nom de la vue

<Version>

Numéro de version de la vue

<NomDicoVue>

Nom du dictionnaire de vue

<Dico>

Nom du dictionnaire de données du fichier de base

<Fichier>

Nom du fichier dans le dictionnaire de données

<Table>

Nom de la table dans le dictionnaire

<VersionFichier>

Numéro de version du fichier ayant servi à la description de la vue

<Index>

Nom de l'index à utiliser pour lire la table de base. Ce paramètre est absent s'il n'est pas renseigné dans la vue

<Condition>

Clause SQL de sélection des lignes à lire

<LectureDonnees>

Indicateur pour forcer la lecture du fichier des données sans passer par les index. Ce paramètre est absent si l'option n'est pas requise pour la vue

<Confidentialite>

Code de confidentialité de la vue

<DivaLecture>

Nom de la procédure Diva de lecture de la table de base. Ce paramètre est absent s'il n'est pas renseigné dans la vue


Paramètres de la variable d'environnement Windows « ODBCPARAM »
Le driver ODBC au chargement du programme Diva crée une variable d'environnement nommée «ODBCPARAM» qui contient une chaîne <hmp> avec notamment le code de l'utilisateur.

<program>

Nom du programme Diva générique XodbcDiva.dhop

<User>

Code de l'utilisateur


Exemple :
1 Parametres S
1 User 20


Parametres = GetEnv("ODBCPARAM")
User = HmpSeek(Parametres, "user")
Remarque :
Le champ System.User contient également le code de l'utilisateur.

Ancre
Top_of_Lecture_de_la_table_de_ba
Top_of_Lecture_de_la_table_de_ba

Lecture de la table de base d'une vue
Le paramétrage des vues permet d'associer à la vue une procédure Diva de lecture de la table de base. Cette procédure est exécutée par le driver ODBC pour chaque lecture d'une ligne de la table de base.
Ceci permet d'effectuer une lecture plus « applicative » de la table que la simple lecture séquentielle opérée en standard par le driver ODBC, pour obtenir par exemple la liste des clients sans facture pendant une période.
La description de tables fictives dans le dictionnaire permet de mettre à disposition des vues très élaborées, résultats d'algorithmes pris en charge par la fonction de lecture associée à la vue.
Paramètres
Le module comportant la procédure de lecture de la table doit impérativement comporter une déclaration publique de la table de base de la vue. Le nom de l'instance doit être impérativement le nom de la table elle-même. C'est cet enregistrement qui est renvoyé au driver à la fin de l'exécution de la procédure.
Fin de fichier
La fin de fichier est signifiée au driver ODBC par l'enregistrement entièrement à espace.
Index de lecture
Lorsque le choix de l'index de lecture est opéré par le driver ODBC, la procédure de lecture doit récupérer dans le tunnel la valeur de la clé courante (par PingReceive) et renvoyer la nouvelle valeur (par Pong) après la lecture. La valeur de la clé est identifiée par le mot clé 'ODBCKEY' dans le tunnel.
Exemple :
public record gtfdd.dhsd cli
; lecture des clients sans facture pour une période
Public Procedure LireClientSansFacture
1 Status X
1 Filtre s
Beginp
pingreceive("ODBCKEY",gtfpcf.key)
do
status = hread(gtfpcf,cli,,'F' )
while status <> H_EOF
; on cherche les factures
Filtre = "ticod = 'C' and tiers = '" & cli.tiers & "'"
Filtre &= " and dos = " & dos
Filtre &= " and pidt between "
Filtre &= datesql(datedebut) & " and " & datesql(datefin)
Filtre &= " and picod = 4"
hfilter( gtfent,filtre,"B" )
status = hread(gtfent,ent,,'F')
if Status = H_EOF
pong ("ODBCKEY",gtfpcf.key) ;il n'y a pas de facture
preturn
endif
wend
; c'est la fin
cli = ' '
preturn
Endp

Ancre
Top_of_Confidentialit_s_des_cham
Top_of_Confidentialit_s_des_cham

Confidentialités des champs d'une vue
Le paramétrage des vues permet d'associer à la vue une procédure Diva de gestion des confidentialités des champs de la table de base d'une vue. Cette procédure est exécutée par le driver ODBC pour chaque lecture d'une ligne de la table de base.
Paramètres
Le module comportant la procédure de gestion des confidentialités doit impérativement comporter une déclaration publique de la table de base de la vue. Le nom de l'instance doit être impérativement le nom de la table elle-même.
Cet enregistrement est garni par le driver ODBC avant l'appel de la procédure. Il est renvoyé au driver après le traitement.
La procédure peut :

...

Ancre
Top_of_Fonctions_Scalaires_htm
Top_of_Fonctions_Scalaires_htm

Fonctions Scalaires
Le driver ODBC prend en charge la gestion des fonctions scalaires suivantes :

Fonctions Date

Commentaire

Current_Date() ou CurDate()

Date du jour

Current_time(precision) ou Curtime()

Heure



DayOfMonth(date)

Jour du mois dans une date

Month(date)

Mois dans une date

Year(date)

Année dans une date


Fonctions Chaîne

Commentaire

Lcase(chaîne) ou Lower(chaîne)

Conversion minuscule

Ucase(chaîne) ou Upper(chaine)

Conversion majuscule

Left(chaîne,nb)

Partie gauche

Right(Chaîne,nb)

Partie droite

Substring(Chaîne,pos,lg)

Sous-chaîne




La syntaxe officielle pour l'appel de fonctions ODBC est { fn scalar-fonction(param) }
Par exemple : Select { fn lcase(nom) } from Client ;
Le driver accepte également la syntaxe scalar-fonction(param)
Par exemple : Select lcase(nom) from Client ;

Ancre
Top_of_Fonctions_Date_htm
Top_of_Fonctions_Date_htm

Fonctions Date
Des fonctions spécifiques du driver Harmony permettent de faciliter le traitement des dates, et de développer des vues ou des requêtes SQL indépendantes de la période.
Par exemple la clause :
DateFacture between Har_FirstDayofLastMonth() and Har_LastDayofLastMonth()
donnera tous les mois les factures du mois précédent. Il n'est pas nécessaire d'adapter la requête chaque mois.

Fonctions Date

Commentaire

Har_Yesterday()

Hier

Har_FirstDayofMonth()

Premier jour du mois courant

Har_LastDayofMonth()

Dernier jour du mois courant

Har_FirstDayofLastMonth()

Premier jour du mois – 1

Har_LastDayofLastMonth()

Dernier jour du mois – 1

Har_FirstDayofMonthLastYear()

Premier jour du mois année n-1

Har_LastDayofMonthLastYear()

Dernier jour du mois année n-1

Har_FirstDayofYear()

Premier jour de l'année courante

Har_LastDayofYear()

Dernier jour de l'année courante

Har_FirstDayofLastYear()

Premier jour de l'année – 1

Har_LastDayofLastYear()

Dernier jour de l'année – 1

Har_TodayLastYear()

Aujourd'hui l'année dernière

Har_FirstDayofLastMonthLastYear()

Premier jour du mois – 1 de l'année – 1

Har_LastDayofLastMonthLastYear ()

Dernier jour du mois – 1 de l'année – 1

Ancre
Top_of_Variables_d_environnement
Top_of_Variables_d_environnement

Variables d'environnement ODBC
Les variables d'environnement ODBC à l'instar des fonctions de date, permettent de développer des vues ou des requêtes SQL paramétrables.
Exemple 1
La variable MonDossier peut désigner le dossier de l'utilisateur courant. Ainsi la même requête peut être utilisée pour traiter le dossier 2 pour l'utilisateur Durand et le dossier 3 pour l'utilisateur Dupuis.
On écrira dans la clause
Where Dossier = MonDossier
Exemple 2
De la même manière, on peut utiliser deux variables pour définir les dates de début et de fin d'exercice comptable. Ainsi la requête n'aura pas besoin d'être adaptée lors du changement d'exercice, il suffira de modifier les valeurs des variables d'environnement.
Where DateEcriture between DateDebutExercice() and DateFinExercice()
Fichiers paramètre
Les fichiers paramètres fodbc.txt et fodbclocal.txt permettent de définir les noms, les valeurs et types des variables d'environnement ODBC.
Le fichier fodbc.txt contient des valeurs générales valables pour tous les utilisateurs, comme la date début d'exercice. Il sera en général sur le serveur de données.
Tandis que le fichier fodbclocal.txt contiendra plutôt des valeurs liées à l'interrogation en cours comme les dates de début et de fin d'interrogation ou le dossier de l'utilisateur. Il sera en général sur le poste de travail.
Si une variable est définie à la fois dans fodbc.txt et dans fodbclocal.txt, la valeur locale prévaut sur la valeur générale.
Ces variables sont stockées au format <hmp> dans les fichiers paramètres.

...