WDForge - Forum

Le forum des développeurs professionnels WinDev ®

Enregistrer des données dans un fichier de données par prog

Discussion sur WinDev®

Message non lupar Ibookun » Lun 21 Aoû 2017 19:07

Bonjour j’ai deux préoccupations.
1. Comment vérifier qu’une requête ou qu’un fichier de données est instancié.
2. Comment instancier par programmation un fichier de données déjà existant dans la base dans le but d’y modifier ou d’y ajouter des données.
Je m’explique : dans le cadre de mon stage de soutenance, je développe une application de gestion des données du Service Transit d’une société pétrolière. Le données sont enregistrées dans les fichiers sur plusieurs jours. Je réussis déjà à enregistrer convenablement les données lorsque les fichiers lorsqu’il s’agit d’un premier enregistrement. Quand l’application est redémarrée pour y ajouter ou modifier des données, je réussis à remplir les champs concernés par les données déjà renseignées grâce à des requêtes et des instruction du genre : « NomDuChamp = Requete.NomDuChamp ». Mais quand j’essaie d’enregistrer une nouvelle fois les donne dans le fichier, Windev me dit qu’il n’est pas instancié. De pus, vu que tous les enregistrement se font avec le/les mêmes formulaire, je dois savoir si une requête est instancié pour pouvoir agir en conséquence. Je précise que j’utilise Windev 18.
Ibookun
Stagiaire WDF
 
Messages: 4
Enregistré le: Jeu 27 Juil 2017 01:08

Message non lupar gwennhadu » Lun 28 Aoû 2017 16:21

Bonjour,

Déjà quelques informations de base sont nécessaires avant de poursuivre :

- Sur quel type de base de données les fichiers de données se trouvent-ils?
- Avez-vous une analyse Windev décrivant la structure de ces fichiers ?
- Quelle est la méthode d'ouverture des fichiers de votre application (HCreationSiInexistant(),HDéclareExterne(),...) ?
gwennhadu
Stagiaire WDF
 
Messages: 11
Enregistré le: Mar 30 Juin 2015 12:13

Message non lupar Ibookun » Sam 2 Sep 2017 20:04

Les fichiers se trouvent sur une base HFSql Client-Serveur. Et oui il ya une analyse décrivant la structure des ichiers (plutôt complexe d'ailleurs). Pour la méthode d'ouverture, je ne suis pas sûr mais je crois crois que c'est HCréationSiInexistant(). Je l'ai je ne sait plus où dans le code. Mais je ne sais pas comment vérifier. Les fichier ont à la base des champs qui leurs liés dans l'IHM. Mais du fait de problèmes d'erreurs multiples, la plupart des enregeistrements des données et des remplissages des champs se fait par programmation, cette solution permettant plus de finesse.
Ibookun
Stagiaire WDF
 
Messages: 4
Enregistré le: Jeu 27 Juil 2017 01:08

Message non lupar gwennhadu » Dim 10 Sep 2017 20:57

Okay,

Si votre fichier de données est ouvert avec HCreationSiInexistant() et n'est pas fermé par la suite, il n'y normalement pas de problème "d'instanciation". Classiquement dans ce cas WinDev dit que le fichier "n'est pas ouvert".

Maintenant, pourquoi vous voulez savoir si une requête est instanciée lorsque vous voulez ajouter/modifier des enregistrements dans le fichier ? Essayez-vous d'ajouter/modifier des enregistrements avec HAjoute(Requête) ou HModifie(Requête) ?

Fichier et requête issue de ce fichier sont 2 sources de données séparées... Il faut utiliser HAjoute(Fichier)/HModifie(Fichier)
gwennhadu
Stagiaire WDF
 
Messages: 11
Enregistré le: Mar 30 Juin 2015 12:13

Message non lupar Ibookun » Mer 13 Sep 2017 19:56

Lorsque l'application est ouverte, il y a deux cas de figure. Le premier consiste a ouvrir un dossier (donc à créer les tables corres) pour la première fois. Dans ce cas, je n'ai pas vraiment de problème. J'utilise HAjoute(Fichier) puis HModifie() Dans le deuxième cas, il s'agit de compléter un dossier déjà créé auparavant (donc de modifier des fichiers déjà existants). J'utlise des requêtes pour récupérer les données déjà renseignées et remplair les champs de l'IHM. Le problème c'est que lorsque j'ésaie de modiier les fichiers avec Hmodifie et HAjoute, on dit que les fichiers en question ne sont pas instanciés. J'en déduis que ce sont les requêtes que j'ai utilisé au début qui sont les fichiers courants. Et je ne sais pas comment faire pour adresser les fichiers visés. J'aimerais donc savoir commeent instancier des fichier et/ou requete par programmation et savoir par la même occasion vérifier s'ils le sont ou pas.
Ibookun
Stagiaire WDF
 
Messages: 4
Enregistré le: Jeu 27 Juil 2017 01:08

Message non lupar EMIDEV » Sam 16 Sep 2017 10:07

Bonjour,

si votre programme est connecté a une analyse ou un serveur HF alors il doit y avoir un houvreconnexion pour hf SQL soit un hcreationsiinexistant pour hf standard.

ces 2 ligne instancie les fichier de données (par exemple client, produit, etc....) les fichiers present dans votre analyse.

losque que vous executer une requete l'objet requete est instancier par hexecuteRequete, le resultat de la fonction vous donnera si l'objet est instancier ou non. par contre on ne peut pas faire d'ordre hajoute ou hmodifie sur une requete car le resultat est monté en memoire et n'est pas lié physiquement aux fichiers de données figurant dans la requete

donc si vous avez ce message disant que vos fichier ne sont pas instancier c'est qu'il manque soit la connexion au serveur hfSQL soit l'ouverture de l'analyse en hf classic (par defaut windev ouvre l'analyse en hf classic avec les fichiers dans le rep du programme ou celui specifier dans l'analyse)

donc dans votre cas en hf SQL cherchez ou se trouve le code de connexion a votre serveur hfSQL
EMIDEV
Animateur WDForge
 
Messages: 15
Enregistré le: Mer 6 Jan 2016 14:23

Message non lupar Ibookun » Sam 16 Sep 2017 13:04

Bien reçu, je vais checker et vous faire un retour. Je précise que je suis sous HF Client/Serveur.
Ibookun
Stagiaire WDF
 
Messages: 4
Enregistré le: Jeu 27 Juil 2017 01:08


Retourner vers WinDev

cron