PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Hcopiefichier partiel
Hcopiefichier partiel
Started by GABRIEL, Apr., 18 2024 10:55 AM - 9 replies
Registered member
19 messages
Posted on April, 18 2024 - 10:55 AM
Bonjour,
j'ai une appli PC et android,
J'ai besoin de transférer mes fichiers du serveur sur ma tablette. Ça je sais faire et cela fonctionne
par contre pour certains fichiers (les plus gros) je n'ai pas besoin d'avoir l'historique sur 2 ans, j'ai juste besoin des 5 derniers jours. C'est la que j'ai un soucis. le Hcopiefichier ne fonctionne plus et j'ai essayé le hcopieenreg mais c'est également trop long avec vous une suggestion ?

Merci d'avance
Registered member
3,893 messages
Popularité : +227 (347 votes)
Posted on April, 18 2024 - 12:16 PM
Bonjour,
Pourquoi ne pas récupérer les enregistrements basés sur une requête ?

--
Il y a peut être plus simple, mais, ça tourne
Registered member
546 messages
Posted on April, 18 2024 - 12:19 PM
Bonjour GABRIEL,
Je n'ai pas tout compris.
Pourquoi le Hcopiefichier ne fonctionne plus?
Quel rapport entre le Hcopiefichier et l'historique des 5 derniers jours.

Sinon, vous pouvez peut-être créer un fichier HFSQL dédié au transfert.
Par programmation, vous le videz avec HSupprimeTout.
Eventuellement, vous le réindexé avec HRéindexe et l'option hNdxCompactage
Vous le remplissez avec une requête Insert (avec une condition sur les 5 derniers jours) qui va chercher les enregistrements dans le fichier d'origine.
Vous obtenez un fichier allégé que vous copiez sur Android.

C'est une idée.
Cdlt
Message modified, April, 18 2024 - 12:35 PM
Registered member
19 messages
Posted on April, 18 2024 - 2:00 PM
Bonjour à vous,
Merci pour vos retours
@Voroltinquo : Le hcopiefichier ne fonctionne qu'avec un fichier hfsql et pas avec le resultat d'une requete. Il me renvoie un message d'erreur

@Cédric_34 : Le hcopiefichier ne marche plus car je ne veux pas copier mon fichier complet, juste une partie de mon fichier.
La solution de la requete insert into "F_2" mets le bazarre dans ma base de données, je ne peux pas l'expliquer mais ensuite quand je veux enregistrer des données dans un fichier (n'importe quel autre fichier) il me mets un message d'erreur comme quo il ne peut pas enregistrer de données dans "F_2"
La seule solution que j'ai trouvé est de faire un hcopiefichier F dans F_2 par exemple de faire une requete de suppression des données que je ne veux pas fans F_2 et de faire un hcopiefichier F_2 du serveur dans F sur la tablette. Cela fonctionne mais je me demandais s'il y avait pas plus "simple"
Registered member
546 messages
Posted on April, 18 2024 - 2:14 PM
Difficile d'en dire plus, j'ai une appli qui fonctionne ainsi et je n'ai pas de souci pour remplir le fichier temporaire.
Y a t-il des liaisons entre les fichiers HFSQL, voire des contraintes d'intégrité ???
Registered member
19 messages
Posted on April, 18 2024 - 2:27 PM
Oui il y a des liaisons entre les fichiers et des contraintes d'intégrité mais qui ne rentre pas en conflit.
C'est juste la requête insert into qui ne fonctionne pas

Insert INTO
Facture_A (Sur la tablette)
SELECT
Facture.*
FROM
Facture (Serveur)
WHERE
Facture.Date BETWEEN Date1 AND Date2


Les données sont bien copiées dans le fichier Facture_A sur la tablette mais ma base sur le serveur est corrompu ensuite
Si je veux enregistrer des données dans le fichier client, il me dit impossible d'enregistrer les données dans Facture_A
C'est fou
Message modified, April, 18 2024 - 2:27 PM
Registered member
546 messages
Posted on April, 18 2024 - 2:52 PM
En fait, ça n'est pas comme ça que je fais.
J'ai créé Facture_A au même emplacement que Facture.
Je le remplis.
puis je le copie avec changement de nom (Facture_A devient Facture après copie).
Registered member
19 messages
Posted on April, 18 2024 - 3:03 PM
Ok, je vais tenter ta solution
En gros si cela fonctionne comme tu fais je gagne une étape qui est la suppression des données
Je tente et je te tiens au courant
Merci
Registered member
3,893 messages
Popularité : +227 (347 votes)
Posted on April, 18 2024 - 3:32 PM
Je ne parlais pas d'utiliser HCopieFichier. Lorsque je désire faire ce genre de transfert je passe par des tableau de classes mappée via FichierVersTableau et MémoireVersFichier.
Ouvrir(ConnexionServeur)
Exécuter Requête
Copier RésultatRequête DANS tableau de ClasseMappée
Ouvrir(ConnexionClient)
Récupérer chaque ClasseMappée DANS TableTransférée

Attention, le HAjoute devra être utilisé avec les option hForceIDAuto+hIgnoreIntégrité

--
Il y a peut être plus simple, mais, ça tourne
Registered member
19 messages
Posted on April, 18 2024 - 3:43 PM
Merci Voroltinquo pour ta solution, Je ne connais pas du tout la technique mais je vais l'étudier.

Pour info la solution de Cédric_34 Fonctionne.

Le fait de vouloir faire un insert into dans F1 sur la tablette d'une sélection du fichier F1 du serveur directement ne fonctionne pas et me faisait planter la base sur le serveur par contre la solution de Cédric_34 fonctionne. Il faut faire un insert into dans F2 sur le serveur d'une sélection du fichier F1 du serveur puis faire un hcopiefichier F2 (du serveur) dans F1 sur la tablette.