Developpez

Syndiquer le contenu Forum du club des développeurs et IT Pro - HyperFileSQL
HyperFileSQL est un système de gestion de base de données relationnel exploité par les logiciels WinDev, WebDev et WinDev Mobile.
Mis à jour : il y a 16 semaines 4 jours

HFSQL / Double imbrication

31 août, 2016 - 16:32
Bonjour,

Je travaille sur HFSQL/Windev, je me permet donc de poser ma question ici, car je ne sais pas où la poser.

J'ai un soucis avec une requete qui fonctionne sur un interrogateur SQL mais par sur Etats et Requetes.

Il semblerait que le problème provienne de la double imbrication :

Code: 1
2
3
4
5
6
7
8
9
10
11
12
SELECT M1.COBC, M1.DELAIS FROM ( SELECT M2.COBC, STRING_AGG(WL.DateVersChaîne(M2.DELAI),' + ') AS DELAIS FROM ( SELECT DISTINCT D2.DELAI, D2.COBC, B2.DATEBC FROM DETAILBC D2 INNER JOIN BC B2 ON D2.COBC = B2.COBC WHERE B2.DATEBC = '20160829' ) AS M2 GROUP BY M2.COBC ) M1 GROUP BY M1.COBC, M1.DELAIS
L'objectif est relativement simple :
Pour chaque enregistrement de BC ayant une BC.DATEBC = '20160829'
Concatener tous les DETAILBC.DELAI unique.

Peut-être auriez vous une idée de comment supprimer cette double imbrication ?

Merci,

Gabvoir
Catégories: Newsgroups

Afficher le resultat d'une recherche dans un tableau relié à une requete

31 août, 2016 - 12:57
bonjour j'ai besoin d'un petit coup de pousse,j'ai fait une requete
Code: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
          SELECT Interne.NOM AS NOM, Agent.MATR AS MATR_Ag   FROM Interne,Agent WHERE   Interne.MATR = {Param} AND Agent.SCE = {Param2} UNION SELECT Agent.NOM AS NOM,Agent.MATR AS MATR_Ag FROM Agent WHERE Agent.MATR = {Param} AND Agent.SCE = {Param2} J'ai relieé le tableau à la requete je voudrai faire une genre de recherche qui n'affiche que seul la valeur saisie si trouver est efficher dans le tableau voici le code de mon bouton

Code: 1
2
3
4
5
6
7
8
9
10
11
12
      SI (HExécuteRequête(REQ_interne,hRequêteDéfaut, SAI_MATR,SAI_SCE) = Vrai) ALORS   HLitPremier(REQ_interne) TableAffiche(Table_REQ_interne,MATR_Ag)   SINON Erreur("Verifier le matricule ou le service")   FIN pouvier vous m'indiquez mes erreur svp
??? merci beaucoup
Catégories: Newsgroups

[HF18] Réplication HFSQL et MYSQl

7 août, 2016 - 14:28
salut tous le monde,


j'ai plusieurs serveur HFSQl géographiquement éloigné et je veux une réplication vers une seule base des données type Mysql hébergé chez un hébergeur qui ne supporte pas les produits PCSOFT, je me demande comment faire une réplication pour ces serveurs!!


merci d'avance,
Catégories: Newsgroups

HyperFile SQL C/S et migration en c#

23 juillet, 2016 - 11:42
Bonjour ,

Je suis en stage professionnel dans une entreprise qui aavait une application Windev avec une base de données sur HyperFileSQL C/S.
Cette entreprise veut migrer les données vers un nouveau SGBD notamment SQL Server et ils m'ont affecter ce travail.
J'ai essayé de faire de mon mieux en exportant les données en format XML puis creer des script en c# pour stocker ces données dans SQL Server jusqu'ici tout marchais bien mais jusqu’à ce que je constate qu'il y'a des données de type BLOB (image) que je ne peux pas exporter en XML.
Donc il faudra que je me connecte a la base de données HyperFileSQL pour faire la migration directement en c#.

Je ne sais pas comment me connecter a HyperFileSQL en c# , j'ai parcouru le net on m'expliquait d'utiliser ODBC mais ODBC demande un fichier analysis .wdd que je n'ai pas et je ne connais pas l'environnement Windev.

Y'a t-il d'autre méthode pour ouvrir une connexion en c# sur ce SGBD et lire les données ??
Catégories: Newsgroups

Récupération du contenu d'un champ table en windev

21 juillet, 2016 - 13:18
salut les amis

Je cherche à récuperer le contenu de mon champ table est l'enregistrer dans un fichier Hyperfile. Mais ce que je constate est que mon boucle n'arrive pas à se positionner à la ligne suivante de ma table. L'enregistrement ne récupère que la première ligne de la table. Voici à mon niveau ce que j'ai mis comme instruction:

Code: 1
2
3
4
5
6
7
8
9
10
11
12
i est un entier=0   TANTQUE i<=TableOccurrence(Table_Etudiant) Etudiant.ageetud=COL_Age Etudiant.Codp=COL_Promotion Etudiant.matr=COL_Matricule Etudiant.nom=COL_Nom Etudiant.postn=COL_Post_nom Etudiant.sexe=COL_Sexe HAjoute(Etudiant) i++ FIN s'il y a une façons de faire, je besoin de vos interventions
Catégories: Newsgroups

Récupération du contenu d'un champ table en windev

21 juillet, 2016 - 13:18
salut les amis

Je cherche à récuperer le contenu de mon champ table est l'enregistrer dans un fichier Hyperfile. Mais ce que je constate est que mon boucle n'arrive pas à se positionner à la ligne suivante de ma table. L'enregistrement ne récupère que la première ligne de la table. Voici à mon niveau ce que j'ai mis comme instruction:

i est un entier=0

TANTQUE i<=TableOccurrence(Table_Etudiant)
Etudiant.ageetud=COL_Age
Etudiant.Codp=COL_Promotion
Etudiant.matr=COL_Matricule
Etudiant.nom=COL_Nom
Etudiant.postn=COL_Post_nom
Etudiant.sexe=COL_Sexe
HAjoute(Etudiant)
i++
FIN

s'il y a une façons de faire, je besoin de vos interventions
Catégories: Newsgroups

[Généralités] Reparer un .FIC

6 juillet, 2016 - 00:37
Bonjour, j'aimerai savoir comment reparer un .FIC ? mon problème est que j'ai eu un virus qui a crypté mes données; cependant j'ai reussi à recontituer le fichier à 95% la partie que me manque (et non la moindre) est le header du fichier. Les 3 1eres lignes sont perdues et sont null. Comparer avec les autres .FIC ces header sont de la sorte :
Code: 1
2
  PCS..... Je cherche un outils permettant de reparer la structure du fichier, le header en particulier. Les données sont déja recupérées.

Toute aide est la bienvenue.

Merci
Catégories: Newsgroups

[Généralités] Reparer un .FIC

6 juillet, 2016 - 00:37
Bonjour, j'aimerai savoir comment reparer un .FIC ? mon problème est que j'ai eu un virus qui a crypté mes données; cependant j'ai reussi à recontituer le fichier à 95% la partie que me manque (et non la moindre) est le header du fichier. Les 3 1eres lignes sont perdues et sont null. Comparer avec les autres .FIC ces header sont de la sorte :
Code: 1
2
  PCS..... Je cherche un outils permettant de reparer la structure du fichier, le header en particulier. Les données sont déja recupérées.

Toute aide est la bienvenue.

Merci
Catégories: Newsgroups

[HF19] Comment faire un UPDATE avec jointure ?

26 mai, 2016 - 14:41
Bonjour à tous,

Voici une anecdote qui, je l'espère, peut vous être utile.

Un beau jour j'ai eu besoin de faire une jointure dans un UPDATE sur une table Hyperfile.
Il se trouve également que la table en question devait être jointe à elle même (ceci afin d'appliquer une restriction).
Je ne vais pas m'attardais sur la structure de cette table. Disons que c'est une table classique de gestion des communes françaises avec comme particularité la gestion de l'historique grâce des dates de début et de fin de validité.

Voici la requête que je souhaitais exécuter :

Code: 1
2
3
4
UPDATE CommuneFR C1 INNER JOIN CommuneFR C2 on C1.NomCommune = C2.NomCommune SET C1.CodePostal = C2.CodePostal, C1.DateFinValidite = '19760101', C2.DateDebutValidite = '19760101' where LEFT(C2.CodeINSEE,2) IN ('2A','2B') AND LEFT(C1.CodeINSEE, 2) = '20' ;
ps : vous l'aurez compris, ou pas, mais il s'agit de mettre à jour les codes postaux des communes "historiques" de la Corse avec les codes postaux des communes actuelles... bref... on s'en fout.

La requête ci-desssus est bien accepté par HF mais ne permet pas de mettre à jour le champs CodePostal (sauf si c'était un truc en dur comme les dates), je vais pas m'étendre la dessus car ça a déjà été évoqué dans d'autres threads, notamment ici : http://www.developpez.net/forums/d86...asee-jointure/

Voici la mécanique (stupide mais effective) mise en place pour arriver à quelque chose d'équivalent :

Code: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--Je commence par dupliquer les enregistrements INSERT INTO CommuneFR(CodePostal, CodeINSEE, NomCommune, NomCommuneMM, DateFinValidite) SELECT C2.CodePostal, C1.CodeINSEE, C1.NomCommune, C1.NomCommuneMM, '19760101' FROM CommuneFR C1 inner join CommuneFR C2 on C1.NomCommune = C2.NomCommune where LEFT(C2.CodeINSEE,2) IN ('2A', '2B') AND LEFT(C1.CodeINSEE, 2) = '20' ;--*   --Je crée une table recensant les doublons CREATE TABLE CommuneFR_Temp AS SELECT CodeINSEE FROM CommuneFR WHERE LEFT(CodeINSEE,2) = '20' and NVL(CodePostal,'') <> ''; --*   --Je delete les doublons en me basant sur la table en question (je pouvais pas me baser sur la table elle-même, HF n'aime pas) DELETE FROM CommuneFR C1 INNER JOIN CommuneFR_Temp C2 on C1.CodeINSEE = C2.CodeINSEE WHERE C1.CodePostal = '' AND LEFT(C1.CodeINSEE,2) = '20' ;--*   --Je drop la table tampon DROP TABLE CommuneFR_Temp;--*
'oilà ! Après c'est pas élégant, absolument pas optimisé mais ça a le mérite de marcher...
Catégories: Newsgroups

[HF19] Comment faire un UPDATE avec jointure ?

26 mai, 2016 - 14:41
Bonjour à tous,

Voici une anecdote qui, je l'espère, peut vous être utile.

Un beau jour j'ai eu besoin de faire une jointure dans un UPDATE sur une table Hyperfile.
Il se trouve également que la table en question devait être jointe à elle même (ceci afin d'appliquer une restriction).
Je ne vais pas m'attardais sur la structure de cette table. Disons que c'est une table classique de gestion des communes françaises avec comme particularité la gestion de l'historique grâce des dates de début et de fin de validité.

Voici la requête que je souhaitais exécuter :

Code: 1
2
3
4
UPDATE CommuneFR C1 INNER JOIN CommuneFR C2 on C1.NomCommune = C2.NomCommune SET C1.CodePostal = C2.CodePostal, C1.DateFinValidite = '19760101', C2.DateDebutValidite = '19760101' where LEFT(C2.CodeINSEE,2) IN ('2A','2B') AND LEFT(C1.CodeINSEE, 2) = '20' ;
ps : vous l'aurez compris, ou pas, mais il s'agit de mettre à jour les codes postaux des communes "historiques" de la Corse avec les codes postaux des communes actuelles... bref... on s'en fout.

La requête ci-desssus est bien accepté par HF mais ne permet pas de mettre à jour le champs CodePostal (sauf si c'était un truc en dur comme les dates), je vais pas m'étendre la dessus car ça a déjà été évoqué dans d'autres threads, notamment ici : http://www.developpez.net/forums/d86...asee-jointure/

Voici la mécanique (stupide mais effective) mise en place pour arriver à quelque chose d'équivalent :

Code: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--Je commence par dupliquer les enregistrements INSERT INTO CommuneFR(CodePostal, CodeINSEE, NomCommune, NomCommuneMM, DateFinValidite) SELECT C2.CodePostal, C1.CodeINSEE, C1.NomCommune, C1.NomCommuneMM, '19760101' FROM CommuneFR C1 inner join CommuneFR C2 on C1.NomCommune = C2.NomCommune where LEFT(C2.CodeINSEE,2) IN ('2A', '2B') AND LEFT(C1.CodeINSEE, 2) = '20' ;--*   --Je crée une table recensant les doublons CREATE TABLE CommuneFR_Temp AS SELECT CodeINSEE FROM CommuneFR WHERE LEFT(CodeINSEE,2) = '20' and NVL(CodePostal,'') <> ''; --*   --Je delete les doublons en me basant sur la table en question (je pouvais pas me baser sur la table elle-même, HF n'aime pas) DELETE FROM CommuneFR C1 INNER JOIN CommuneFR_Temp C2 on C1.CodeINSEE = C2.CodeINSEE WHERE C1.CodePostal = '' AND LEFT(C1.CodeINSEE,2) = '20' ;--*   --Je drop la table tampon DROP TABLE CommuneFR_Temp;--*
'oilà ! Après c'est pas élégant, absolument pas optimisé mais ça a le mérite de marcher...
Catégories: Newsgroups

[HF17] Comment récupérer le dernier enregistrement d'une table sous Hyperfile

24 mai, 2016 - 08:34
Bonjour à tous.
J'ai une table pesée avec des enregistrements. Je souhaite récupérer le dernier enregistrement dont le couple de clés (vehicule, remorque) est égal aux paramètres passés lors de l'éxécution de la requête. j'ai pour cela la requête suivante:
Code: 1
2
3
Afficher tous les PECLEUNIK tels que CODEVE est égal à 'Param_codeve' ET CODERB est égal à 'Param_coderb' ET VALIDE est égal à 1 . Le résultat est trié selon la valeur de PECLEUNIK par ordre croissant. Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. je précise que lors des tests j'ai souvent enlever : Code: Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. afin de mieux me rendre compte de l'ordre des résultats.

Alors ce que je constate. c'est que d'une exécution à une autre (parfois le même jour, parfois le lendemain), les résultats sont souvent ordonnés du plus petit au plus grand ou du plus grand au plus petit. Je me serai attendu à ce que l'ordre du rendu des résultats ne change pas.
Alors à la question comment je m'en suis rendu compte, c'est d'abord dans mon programme en cours d'éxécution et ensuite e utilisant l'outil de test de requête intégré de l'éditeur de requête windev. Concrètement, pour le même jeu de données,
un coup je reçois:
  • 49
  • 52
  • 67
  • 98

un coup je reçois :
  • 98
  • 67
  • 52
  • 49


Les premières fois j'ai d'abord cru qu'il inversait sa pile de résultat et qu'il fallait lire de bas en haut, mais si l'ordre change alors je ne sais plus où donner de la tête.

Je précise que je suis sous Windev 17.
Alors je suis à la recherche de solution. Peut être suis-je passé à côté de quelque chose lors de la création de ma requête. Ou mieux, s'il existe un autre moyen d'obtenir le même résultat (obtenir le dernier enregistrement d'une table ayant le couple véhicule+remorque égal au paramètres donnés), je suis preneur.
Catégories: Newsgroups

[HF17] Comment récupérer le dernier enregistrement d'une table sous Hyperfile

24 mai, 2016 - 08:34
Bonjour à tous.
J'ai une table pesée avec des enregistrements. Je souhaite récupérer le dernier enregistrement dont le couple de clés (vehicule, remorque) est égal aux paramètres passés lors de l'éxécution de la requête. j'ai pour cela la requête suivante:
Code: 1
2
3
Afficher tous les PECLEUNIK tels que CODEVE est égal à 'Param_codeve' ET CODERB est égal à 'Param_coderb' ET VALIDE est égal à 1 . Le résultat est trié selon la valeur de PECLEUNIK par ordre croissant. Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. je précise que lors des tests j'ai souvent enlever : Code: Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. afin de mieux me rendre compte de l'ordre des résultats.

Alors ce que je constate. c'est que d'une exécution à une autre (parfois le même jour, parfois le lendemain), les résultats sont souvent ordonnés du plus petit au plus grand ou du plus grand au plus petit. Je me serai attendu à ce que l'ordre du rendu des résultats ne change pas.
Alors à la question comment je m'en suis rendu compte, c'est d'abord dans mon programme en cours d'éxécution et ensuite e utilisant l'outil de test de requête intégré de l'éditeur de requête windev. Concrètement, pour le même jeu de données,
un coup je reçois:
  • 49
  • 52
  • 67
  • 98

un coup je reçois :
  • 98
  • 67
  • 52
  • 49


Les premières fois j'ai d'abord cru qu'il inversait sa pile de résultat et qu'il fallait lire de bas en haut, mais si l'ordre change alors je ne sais plus où donner de la tête.

Je précise que je suis sous Windev 17.
Alors je suis à la recherche de solution. Peut être suis-je passé à côté de quelque chose lors de la création de ma requête. Ou mieux, s'il existe un autre moyen d'obtenir le même résultat (obtenir le dernier enregistrement d'une table ayant le couple véhicule+remorque égal au paramètres donnés), je suis preneur.
Catégories: Newsgroups

[HF17] Comment récupérer le dernier enregistrement d'une table sous Hyperfile

24 mai, 2016 - 08:34
Bonjour à tous.
J'ai une table pesée avec des enregistrements. Je souhaite récupérer le dernier enregistrement dont le couple de clés (vehicule, remorque) est égal aux paramètres passés lors de l'éxécution de la requête. j'ai pour cela la requête suivante:
Code: 1
2
3
Afficher tous les PECLEUNIK tels que CODEVE est égal à 'Param_codeve' ET CODERB est égal à 'Param_coderb' ET VALIDE est égal à 1 . Le résultat est trié selon la valeur de PECLEUNIK par ordre croissant. Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. je précise que lors des tests j'ai souvent enlever : Code: Seules les 1 dernières lignes de la requête (selon le tri) seront affichées. afin de mieux me rendre compte de l'ordre des résultats.

Alors ce que je constate. c'est que d'une exécution à une autre (parfois le même jour, parfois le lendemain), les résultats sont souvent ordonnés du plus petit au plus grand ou du plus grand au plus petit. Je me serai attendu à ce que l'ordre du rendu des résultats ne change pas.
Alors à la question comment je m'en suis rendu compte, c'est d'abord dans mon programme en cours d'éxécution et ensuite e utilisant l'outil de test de requête intégré de l'éditeur de requête windev. Concrètement, pour le même jeu de données,
un coup je reçois:
  • 49
  • 52
  • 67
  • 98

un coup je reçois :
  • 98
  • 67
  • 52
  • 49


Les premières fois j'ai d'abord cru qu'il inversait sa pile de résultat et qu'il fallait lire de bas en haut, mais si l'ordre change alors je ne sais plus où donner de la tête.

Je précise que je suis sous Windev 17.
Alors je suis à la recherche de solution. Peut être suis-je passé à côté de quelque chose lors de la création de ma requête. Ou mieux, s'il existe un autre moyen d'obtenir le même résultat (obtenir le dernier enregistrement d'une table ayant le couple véhicule+remorque égal au paramètres donnés), je suis preneur.
Catégories: Newsgroups