PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → WM23 IOS Données Access 2013
WM23 IOS Données Access 2013
Débuté par Violaine, 07 mai 2021 19:46 - 20 réponses
Posté le 07 mai 2021 - 19:46
Bonjour à tous,

Ca fait un petit moment que je galère avec le développement de mon application...
J'ai un logiciel métier Access développée en interne et j'ai aussi développé mon application mobile avec Windev qui fonctionne mais j'ai un gros souci concernant la mise à jour des données.
Je n'arrive à mettre à jour les données de mon analyse qu'en passant par mon logiciel WM23, en important les données d'Access via l'analyse en les transformant en HFSQL, en générant les fichier de données .FIC et je termine par un glisser/déposer via Itunes.
C'est assez lourd et surtout il n'y a que moi qui peut le faire avec la clé Windev sur mon poste.

Est-ce qu'il existerait un moyen plus simple (et accessible à mes collègues sans la clé Windev) pour générer des fichiers de données depuis Access et les injecter dans la tablette IOS ?

Merci d'avance pour l'aide que vous pourrez m'apporter
Posté le 07 mai 2021 - 21:45
Si j'ai bien compris :
- Pour la conversion
Une solution est de créer un programme en WINDEV (pas mobile) qui lit les données access (il y a un accès natif access disponible) et écris les données dans HF...
- Pour le transfert : placer les fichiers zippés sur un serveur web accessible par https. Depsui l'appli iOS, faire un httprequete pour downloader le fichier, puis le dézipper et remplacer les fichiers HF locaux par les nouveaux

Bien sur, ca peut se faire en automatique en ajoutant un petit fichier texte avec la version des fichiers dispo, et en faisant un premier httpreqyete pour le lire
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 07 mai 2021 - 22:15
Je crois qu'il est possible d'utiliser un webservice
Qui lui même accède a ODBC.
Il existe un driver ODBC Access.
Donc d'une application pcsoft, tu peux alors accéder à la base
Access.
Sinon il existe aussi un driver ODBC hfsql.
Donc la réponse est fait un webservice
Membre enregistré
476 messages
Popularité : +20 (20 votes)
Posté le 07 mai 2021 - 22:21
il y a plusieurs solutions
La plus simple qui ne nécessite pas de moyens supplementaires, créer un programme d'importation dans l'application mobile a partir d'un export de la base access dans un format texte (csv par exemple),
inconvénients, cela demande toujours des manipulations, export de la base access dans un fichier , copie du fichier sur la tablette puis importation dans l'appli

Sinon une meilleure solution serait de créer un webservice qui va se connecter sur la base access et envoyer les données dans la base locale de l'appli tablette, avantage, aucune manipulation mais cela nécessitera d'avoir webdev pour developper le webservice et un pc/serveur pour le le serveur d'application qui dera tourner le webservice
Posté le 08 mai 2021 - 20:13
Bonjour,


Tout d'abord merci pour vos réponses très rapides c'est vraiment sympa.
Je vais essayer de tester avec le fichier csv car je n'ai que Windev mobile et pas Windev, donc je ne peux pas prendre la solution d'Argus et pour le webservice j'ai tenté une fois de regarder mais c'est vraiment compliqué pour moi qui n'a pas de formation en informatique.

J'avais eu une autre idée mais je ne sais pas du tout si c'est faisable : connecter à ma base Access en natif au serveur HFSQL et générer des fichiers .FIC directement?

Merci!
Membre enregistré
13 messages
Posté le 10 mai 2021 - 18:47
Bonjour,

J’ai réussi à importer les données des fichiers CSV via un HIlmporteTexte. Tout fonctionne sur mon ordi mais après je n’arrive pas à obtenir les données sur l’IPad.
J’ai mis les fichiers dans le fichier Documents de l’application via un glisser déposer par ITunes (au même endroit que les fichiers de données .FIC ) mais la direction fRepDonnées n’a pas l’air de fonctionner.

Est-ce que vous auriez une idée? Merci!
Membre enregistré
476 messages
Popularité : +20 (20 votes)
Posté le 10 mai 2021 - 20:23
fRepDonnées c'est bien ce qui correspond au répertoire "Documents" de l'application.
Utiliser ComplèteRep(fRepDonnées()) si ce n'est pas fait
Tester la présence du fichier avec fFichierExiste()
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 11 mai 2021 - 20:40
Membre enregistré
13 messages
Posté le 11 mai 2021 - 22:52
Bonjour,
J’ai bien utiliser le ComplèteRep(fRepDonnées()) + «nomfichier.csv»
J’ai bien testé la présence du fichier et je n’ai pas d’erreur mais les données ne sont pas mises à jour avec le HimporteTexte

Est ce que vous avez une idée?

Merci
Membre enregistré
13 messages
Posté le 11 mai 2021 - 23:55
Popoy a écrit :

Bonsoir, j’ai bien pris connaissance de cet article et je pense que c’est bien fRepDonnées qu’il fait indiquer. Est ce que je dois faire référence à un autre dossier?
Merci
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 12 mai 2021 - 08:34
Oui sous iOS c'est bien cela.
C'était juste une récap qui peut servir à tout le monde.
Pour ce qui est du csv, c'est en fait un fichier texte
Il ce peut que HimporteTexte ne fonctionne pas car tu n'utilise pas de gestion de l'unicode
Comme ansiversunicode ou unicodeversansi. ( A testé)
Membre enregistré
476 messages
Popularité : +20 (20 votes)
Posté le 12 mai 2021 - 17:22
Tu testes le HimporteTexte pour savoir si il te renvoie vrai ou faux ?
Membre enregistré
13 messages
Posté le 12 mai 2021 - 23:22
stef1811 a écrit :
> Tu testes le HimporteTexte pour savoir si il te renvoie vrai ou faux ?

Bonsoir, j’ai testé et il me renvoie vrai... Mais je n’ai que les données que j’ai importé avec l’analyse mais pas les données des fichiers csv.
Je vais essayer de voir avec l’unicode si ça résout le problème.
Sinon est ce qu’il pourrait y avoir un problème de casse car j’ai des minuscules et des majuscules dans le nom des tables et le nom des fichiers csv.

C’est sûr qu’il doit y avoir un truc que je fais mal mais je ne vois pas lequel...

Merci de votre aide ! :)
Membre enregistré
13 messages
Posté le 13 mai 2021 - 10:14
stef1811 a écrit :
> Tu testes le HimporteTexte pour savoir si il te renvoie vrai ou faux ?

Bon j'ai tout repris et effectivement j'ai une erreur dans mon HImporte texte...
Code Erreur 1037 : "aucune syntaxe de HImporte Texte ne correspond à l'appel"

A l'initialisation de mon projet j'ai ce code :
gsFichierTInsp est une chaîne = ComplèteRep(fRepDonnées())+"tbl_tourneesinsp.csv"
SI fFichierExiste(gsFichierTInsp) ALORS
HImporteTexte(tbl_tourneesinsp,gsFichierTInsp,"IdTourInsp,DateTournee,Inspection,IdAgent",";"+Caract(127)+""+Caract(127) +RC, hCopieIdAuto+hImpCreation+hImpIgnoreRubriqueVide+hImpSansDélimiteur+hImpIgnorePremièreLigne)
SINON
Info("Fichier tournées" + gsFichierTInsp + " non trouvé")
FIN

Mon fichier csv a bien 4 colonnes séparées par des ";", je n'ai pas de délimiteur de chaîne et j'ai un retour chariot pour le changement de ligne.

J'ai modifié les noms de mes tables pour supprimer toutes les majuscules (au cas où), je ne vois pas ce qui ne va pas ;(

Est-ce que vous auriez une idée?
Merci
Membre enregistré
476 messages
Popularité : +20 (20 votes)
Posté le 14 mai 2021 - 22:58
déjà oui tester le HImporteTexte
SI PAS HImporteTexte(tbl_tourneesinsp...) ALORS
Erreur(HErreur()+RC+ ErreurInfo())
FIN

ensuite si le HImporteTexte génère l'erreur que tu indiques il doit y avoir un paramètre qui n'est pas supporté par IOS meme si rien ne l'indique dans la doc ca peut arriver donc tu peux commencer par supprimer les options hCopieIdAuto+hImpCréation+hImpIgnoreRubriqueVide+hImpSansDélimiteur+hImpIgnorePremièreLigne
si pas mieux alors regarder du coté des separateurs ";"+Caract(127)+""+Caract(127) +RC
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 15 mai 2021 - 11:28
Je pense que le fichier csv n'est pas correctement lisible.
Fait un info du contenu avant de l'importer pour vérifier.
J'ai déjà indiqué plus haut
ansiversunicode ou unicodeversansi. ( A testé)
Membre enregistré
13 messages
Posté le 17 mai 2021 - 13:38
Popoy a écrit :
Je pense que le fichier csv n'est pas correctement lisible.
Fait un info du contenu avant de l'importer pour vérifier.
J'ai déjà indiqué plus haut
ansiversunicode ou unicodeversansi. ( A testé)


Bonjour,

Bon bah j'ai tout testé et j'ai toujours la même erreur sur le HimporteTexte... J'ai enlevé les options, testé avec d'autres fichiers. Toujours pareil
Du coup je sui passée par :

gsFichierTInsp est une chaîne = ComplèteRep(fRepDonnées())+"tbl_tourneesinsp.csv"
sValeurTexte est une chaîne = fChargeTexte(gsFichierTInsp)
LigneLue est une chaîne
POUR TOUTE chaîne LigneLue de sValeurTexte SEPAREE PAR RC
tbl_tourneesinsp.IdTourInsp =ExtraitChaîne(LigneLue,1,";")
...
Puis
un HAjoute(tbl_tourneesinsp)


Il me reste un problème pour la première ligne et la dernière qui sont importées mais qui ne le devra pas.

Est-ce qu'il est possible de faire un "pour toute chaine" mais sans la première et la dernière ligne?

Merci beaucoup
Membre enregistré
476 messages
Popularité : +20 (20 votes)
Posté le 17 mai 2021 - 15:27
nb_lignes est un entier= ChaîneOccurrence(sValeurTexte, RC)
compteur_Lignes est un entier =1

POUR TOUTE chaîne LigneLue de sValeurTexte SEPAREE PAR RC

SI compteur_Lignes =1 _OU_ compteur_Lignes>= nb_lignes ALORS CONTINUER

...

...

compteur_Lignes ++

FIN
Membre enregistré
13 messages
Posté le 17 mai 2021 - 18:02
stef1811 a écrit :
nb_lignes est un entier= ChaîneOccurrence(sValeurTexte, RC)
compteur_Lignes est un entier =1

POUR TOUTE CHAÎNE LigneLue DE sValeurTexte SEPAREE PAR RC

SI compteur_Lignes =1 _OU_ compteur_Lignes>= nb_lignes ALORS CONTINUER

...

...

compteur_Lignes ++

FIN

Magnifique!
Merci beaucoup :merci:

J'ai dû adapter un peu car ça ne fonctionnait pas.

J'ai mis :

SI compteur_Lignes=1 OU compteur_Lignes >= nb_lignes ALORS
compteur_Lignes=compteur_Lignes+1
SINON
...
compteur_Lignes=compteur_Lignes+1
FIN


Du coup plus de problème de première et dernière lignes.

Il me reste encore un dernier problème.
Au niveau de la fonction ExtraitChaine j'ai deux données qui sont des numériques au format réel (sur 4 octets).
J'ai essayé la fonction Val(ExtraitChaine(LigneLue,6,";") mais sans succès. La valeur retournée est soit 0 ou un nombre entier

Dans mon fichier csv les décimales sont séparées par des virgules.

Des idées?

Merci beaucoup
Membre enregistré
13 messages
Posté le 17 mai 2021 - 18:13
C'est encore moi!

du coup c'est bien le problème de la virgule et du point.

J'ai fait
tbl_pp.Surface=Val(Remplace(ExtraitChaîne(LigneLue,7,";"),",","."))


Et ça fonctionne!
Je vais tester l'application jusqu'à vendredi et si je n'ai pas d'autre problème je clôturerais le post.

Encore merci à tous :D
Membre enregistré
3 333 messages
Popularité : +93 (137 votes)
Posté le 18 mai 2021 - 11:30
Oui c'est vrai que windev utilise le point comme séparateur de décimal.
Alors que Microsoft c'est la virgule.