Utilisation HyperFile depuis C#

Le
JC
Bonjour

Dsol si ce sujet vous parait banal (et long), mais je n'ai pas
trouv mon bonheur dans la doc PCSoft (grrr), ni sur le web. Et j'ai
besoin d'un explication claire svp

J'ai une base (SQLite pour le moment, mais pas obligation) utilise
par du C#. L'ide gnrale du travail est d'utiliser la puissance de
Windev pour son ct SGBD, tout en gardant des traitements spcifique=
s
en C# sur la base de donnes partage entre Windev et C#. En rsum=
,
il faut que C# et WD se partage une BDD commune (dans un format
dterminer).

J'ai donc essay plusieurs choses :

- garder la base en SQLite. L'importation de la base en WD est OK,
ainsi que sa manipulation depuis Windev avec des ordres H, mais je
n'arrive pas faire appel WD depuis C#. Quand je regarde l'exemple
livr avec WD, la doc est trs incomplte (ou alors dites-moi o
trouver les infos): par exemple il est dit dans l'aide AppelWD("<Nom
de la fonction>,<Paramtres de la fonction>"), alors que dans les
exemples de l'aide on trouve
WinDev.APPELWD("BIBLI,Disque,ville.wdl"); (c'est une fonction
BIBLI ?? je ne connais pas) et dans l'exemple C# livr (dans
langages externes C#) on trouve WinDev.APPELWD("Ecran,Selection,
+,VILLE"); (nul part dans l'aide je n'ai trouv "Ecran, Slection,
+," !!! Dans l'aide on trouve "Ecran,Saisie", et autre, mais pas
"Ecran,Slection" etc. (j'en ai d'autres si vous voulez).

- crer une base HF et la manipuler depuis WD (pas de souci bien sr)
et depuis C#. L aussi, blocage. Ct C#, j'ai import Windev.cs, l=
es
DLL qui vont bien, mais le code ci-dessous ne donne rien. Les donnes
ne sont pas cres (ni mises jour si le fichier existe dj), i=
l n'y
a aucune erreur signale (tout renvoie 0 ce qui d'aprs la doc APPELWD
semble dire OK puisque leur exemple dit si WinDev.WDEntier() == 0
alors (ok) sinon (gestion erreur) ).
-
Code C#
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{

WinDev.APPELWD("fRepDonnes");
Console.WriteLine(WinDev.WDChaine()); // le chemin retourn est
bien celui du fichier
WinDev.APPELWD("HErreurInfo");
Console.WriteLine(WinDev.WDChaine()); //renvoie chaine vide

WinDev.APPELWD("HCrationSiInexistant,Personne");
Console.WriteLine("res: "+WinDev.WDEntier()); // renvoie 0
WinDev.APPELWD("HErreurInfo");
Console.WriteLine(WinDev.WDChaine()); //renvoie chaine vide

WinDev.APPELWD("HOuvre,Personne");
Console.WriteLine("res: "+WinDev.WDEntier()); // renvoie 0
WinDev.APPELWD("HErreurInfo");
Console.WriteLine(WinDev.WDChaine()); //renvoie chaine vide
WinDev.APPELWD("Personne.Nom='toto'");
WinDev.APPELWD("Personne.Age='42'");
WinDev.APPELWD("HAjoute,Personne");
Console.WriteLine("res: "+WinDev.WDEntier()); // renvoie 0
WinDev.APPELWD("HErreurInfo");
Console.WriteLine(WinDev.WDChaine()); //renvoie chaine vide
WinDev.APPELWD("HFerme");
Console.ReadLine();
}
}
}


- crer un assembly .Net o j'ai juste fait une procdure globale pou=
r
voir si C# pouvait l'appeler, a marche, mais comme C# doit faire des
traitements assez lourds sur la base toutes les secondes, j'ai peur
que ceci ne soit pas trs performant en passant par ce genre de
connexion.


Mes questions sont :

- pouvez-vous me donner des claircissements sur APPELWD (cf. premier
point plus haut)
- me dire pourquoi le code C# ci-dessus ne fonctionne pas ? je pense
que je n'ai pas fait tout ce qu'il fallait Faut-il inclure d'autres
choses que les DLL et Windev.cs ? Peut-tre l'analyse ou autre ? si
oui, quoi, et comment ?
- me dire comment vous feriez pour faire ce genre de travail C# <-->
BDD <--> WD .

Merci par avance
JC
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jerome PAULIN
Le #22147971
Le 20/05/2010 19:43, JC a écrit :
Bonjour

- me dire comment vous feriez pour faire ce genre de travail C#<-->
BDD<--> WD .

Merci par avance
JC



Bonjour,

Pour ma part je procéderai avec une base MySQL ou PostgreSQL.

Pour les traitements, j'essayerai de les coder en procédure stockée
(sous réserve que cela soit possible) avec un lancement depuis le
planificateur MySQL ou bien depuis C# s'il n'est pas possible de faire
un traitement "coté serveur".

gg
Publicité
Poster une réponse
Anonyme