PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Réactualisation Bases HFSQL Android ne se fait pas
Réactualisation Bases HFSQL Android ne se fait pas
Débuté par lanteri massa, 24 mar. 2019 12:43 - 14 réponses
Posté le 24 mars 2019 - 12:43
Bonjour,

je rencontre un pb lors de la copie des bases (HFSQL Standard) sur une SAMSUNG TAB2 (Android 4.1.2) avec Windev18

Le 1er jet se passe sans aucun problème, et mes bases sont déversées et consultables sur ma tablette.
Là où je rencontre une difficulté, c'est qu'en de réinstallation (Programme et Bases), les données contenues dans les bases du pc qui ont subi une modification ne sont pas réactualisées sur la tablette…

ce qui me conduit à penser que "si fichier existe déjà alors fichier pas copié"..

Quelqu'un a-t-il trouvé une astuce pour contourner le problème ?

Pour info, la saisie des modifications dans l'appli n'est pas envisageable (paramétrage de tarifs indicatifs et évolutifs)

Merci par avance

Je planche en parallèle sur une connexion en wifi pour faire la mise à jour, mais comme HFSQL Server semble aussi un peu fâché, j'ai aussi ouvert un autre sujet..
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 24 mars 2019 - 23:42
lors d'une mise à jour de l'Apk, les données d'origine ne sont pas modifier.
c'est a toi de programmer la vérification de la structure si tu as modifié ton analyse.
si tu n'as pas besoin des données il te suffit de les supprimer puis de les extraire.
Membre enregistré
794 messages
Popularité : +40 (42 votes)
Posté le 24 mars 2019 - 23:55
Juste comme une idée.... J'ai trouvé un problème similaire et à la fin la seule correction possible a été de mettre les noms des tables en minuscules pour éviter les erreurs avec les noms de fichiers, car dans Android fait la distinction entre les lettres majuscules et minuscules.

Salutations

Ruben
Posté le 25 mars 2019 - 17:42
Bonjour,
merci pour vos retours..
La structure n'a pas bougé.. c'est juste le contenu ou le nombre d'enregistrements..

Popoy pourquoi pas ta solution, mais comment faire ?

Supprimer les enregistrements présents sur la tablette : OK
Mais où les prendre et comment les recharger ?

On attaque alors mon autre difficulté (impossible d'attaquer un fichier HFSQL sur PC ou HFSQL Server) avec Android.
Je m'orienterais pas vers un webservice pour lire les données distantes ?
Bonne journée
Posté le 25 mars 2019 - 17:45
Bonjour,
merci pour vos retours..

La base s'appelle Loc_membre.fic
Je vais tenter l'expérience avec locmbr.fic (moins de 8c, pas de caractère spécial)
Bonne soirée
Posté le 25 mars 2019 - 19:35
bonsoir,

ca marche mais une seule fois…

si je renomme mon fichier et que je le réinstalle, je récupère bien les nouvelles valeurs de la base.
Par contre une fois renommé si je rajoute ou modifie des enreg et que je réinstalle ca ne fonctionne plus.

Dommage..
Membre enregistré
3 311 messages
Popularité : +93 (137 votes)
Posté le 26 mars 2019 - 19:32
Bonsoir,


si je comprends bien le fond de ta pensée..

Je développe un "bouton" dans mon applicatif qui va
Recherche le répertoire où sont installés mes fichiers à mettre à jour
Supprimer ces fichiers


Ensuite, à partir de la génération je réinstalle et donc ces fichiers seront recréés avec bien entendu les nouveaux enregistrements..
Je teste ca ce Week-end

Bonne journée
Posté le 31 mars 2019 - 12:09
J'ai testé et ca marche…
De manière un peu bizarre, mais bof ca fonctionne.. (du moment que je peux faire ma tambouille….)

Sur mon appli j'ai mis un bouton "nettoyage"

// Permet de localiser précisément ses données HFSQL sur le Smartphone Android
CheminDonnées est une chaîne
unfichier est une chaîne
ResSuppression est un entier
CheminDonnées = ComplèteRep(fRepDonnées())
Info(chemindonnees)

// 1er fichier (.fic)
unfichier = CheminDonnées + "locadh.fic"
SI fFichierExiste(UnFichier) = Vrai ALORS
Info("Le fichier " + UnFichier + " existe bien sur le disque")
ResSuppression = fSupprime(unfichier)
SI fFichierExiste(unfichier) = Faux ALORS
Info(unfichier + " a été supprimé")
FIN
SINON
Info("Le fichier " + unfichier + " non trouvé sur le disque")
FIN

// 2eme fichier (.ndx)
unfichier = CheminDonnées + "locadh.ndx"
SI fFichierExiste(UnFichier) = Vrai ALORS
Info("Le fichier " + UnFichier + " existe bien sur le disque")
ResSuppression = fSupprime(unfichier)
SI fFichierExiste(unfichier) = Faux ALORS
Info(unfichier + " a été supprimé")
FIN
SINON
Info("Le fichier " + unfichier + " non trouvé sur le disque")
FIN

Quand je rentre sur mon appli "tablette", je lance le bouton nettoyage..
mes fichiers sont supprimés, MAIS ils restent accessibles et contiennent les mêmes données qu'avant…

Si je ferme mon appli et que j'y rentre à nouveau (Oh miracle !!) la mise à jour des données est alors effective…

J'en conclus :
que mes fichiers sont transférés vers ma tablette à chaque génération,
qu'ils sont en mémoire mais non utilisés sauf la 1ere installation,
qu'ils ne sont pas installés/utilisés sur la tablette tant que je ne les supprime pas..
qu'ils se réinstallent alors automatiquement au lancement de l'appli..


Merci à tous
Membre enregistré
794 messages
Popularité : +40 (42 votes)
Posté le 01 avril 2019 - 19:15
Hi. Check the contents of the folder where the database files are. You may have several versions of the same file with different names due to the use of upper and lower case.

Rubén
Membre enregistré
152 messages
Popularité : +1 (1 vote)
Posté le 29 avril 2019 - 12:23
Rubén: ton idée m'intéresse (j'ai un souci qui pourrait être lié avec ce post). Comment savoir si tout est bien écrit en minuscule ?

--
Merci !
Xavier.
Message modifié, 29 avril 2019 - 12:24
Membre enregistré
794 messages
Popularité : +40 (42 votes)
Posté le 29 avril 2019 - 14:30
Depuis 6 mois que j'ai fait ce changement de mettre tout le nom des fichiers dans les minuscules, je n'ai plus eu de problèmes lors de la mise à jour de la base de données dans les appareils. Sous Android, le nom des fichiers est sensible à la casse, donc si vous utilisez une combinaison différente de majuscules et minuscules, vous faites référence à un autre fichier.

Pour connaître le nom actuel des fichiers sur l'appareil, j'ai utilisé un Info....

Salutations

Ruben
Membre enregistré
152 messages
Popularité : +1 (1 vote)
Posté le 29 avril 2019 - 15:08
Merci. Je regarde mes noms de fichier.

--
Merci !
Xavier.
Membre enregistré
152 messages
Popularité : +1 (1 vote)
Posté le 30 avril 2019 - 11:32
Mes noms de fichiers sont bien tous en minuscules.
Snif. Une autre piste ?

--
Merci !
Xavier.
Posté le 03 mai 2019 - 12:00
A priori je ne suis le seul à galérer…
C'est pas très beau ce que j'ai fait, mais ca fonctionne..
Pas sur à 100% que ce soit vraiment la cause, , mais j'ai mis des noms de fichiers (max 8c, sans fioritures, en minuscule)

Voici le code de mon appli.. (Samsung tab2)

dans le Déclarations globales de ma première fenêtre :
SI OuiNon("Voulez-vous effectuer la mise à jour des datas ?") ALORS
CheminDonnées = ComplèteRep(fRepDonnées())
unfichier = CheminDonnées + "locadh.fic"
SI fFichierExiste(unfichier) = Vrai ALORS
unfichier = CheminDonnées + "locadh.fic"
ResSuppression = fSupprime(unfichier)
unfichier = CheminDonnées + "locadh.ndx"
ResSuppression = fSupprime(unfichier)
unfichier = CheminDonnées + "locbat.fic"
ResSuppression = fSupprime(unfichier)
unfichier = CheminDonnées + "locbat.ndx"
ResSuppression = fSupprime(unfichier)
unfichier = CheminDonnées + "locplc.fic"
ResSuppression = fSupprime(unfichier)
unfichier = CheminDonnées + "locplc.ndx"
ResSuppression = fSupprime(unfichier)
Info("Nettoyage terminé")
SINON
Info("Le fichier " + unfichier + " non trouvé sur le disque")
FIN
Ferme()
SINON
NbAdherents = HNbEnr(locadh)
NbBateaux = HNbEnr(locbat)
NbPlaces = HNbEnr(locplc)
FIN

Mes fichiers sur le pc ayant été modifiés (nb enregistrements, contenu, etc..) je souhaite les avoirs sur ma tablette.
Je génère mon appli en indiquant bien les noms des fichiers utilisés (onglet intégration de fichiers) :
Lecture : destination APK (cochés)
Ecriture : destination répertoire BDD (cochés)
Je joins également le fichier xxxxxx.apk (au nom de l'appli) en intégré à l'application lui

Ensuite que se passe-t-il ?
je réinstalle mon appli (avec les nouvelles données)
je réponds "oui" à la mise à jour des datas..
Le programme s'exécute puis se ferme...

Je re rentre en disant "non" à la mise à jour et là mes fichiers se sont mis à jour…

Bon maintenant que ca fonctionne, j'aimerais bien travailler un peu plus proprement..
Une petit appli capable de se connecter à une base hfsql pour faire les mises à jour sans passer par un webservice, Qqun a vu ca en WinDev 18 ?

Bonne journée