|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| Iniciado por Philippe SB, 05,jun. 2020 12:37 - 25 respuestas |
| |
| | | |
|
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 05,junio 2020 - 12:37 |
Bonjour,
Est-il possible dans HFSQL de dire que l'ID Automatique démarre à x, sans avoir à ajouter d'enregistrement bidon bien évidemment ???
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 05,junio 2020 - 13:32 |
Bonjour, Regarde du côté du paramètre hFixedIdAuto au niveau de HAjoute.
SI La table est vide Fixer la PK AVEC le N° désiré ET utiliser le paramètre hFixedIdAuto SINON Traitement nominal FINSI
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 14 mensajes |
|
| Publicado el 05,junio 2020 - 14:03 |
Bonjour,
Nous avons eu le même problème avec des numéro de dossier patient qui devait commencer à 1001.
SI HNbRec(Patient) = 0 ALORS Patient.ID_Patient = 1001 HAjoute(Patient,hFixeIdAuto) SINON HAjoute(Patient) FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 05,junio 2020 - 14:30 |
Bon c'est bien ce que je pensais. Mis à part une bidouille quelconque, ce n'est pas possible.
C'est bien dommage. Je me tâtais déjà pour changer de base à cause des performances, maintenu je suis convaincu que ça ne peut servir que pour de petits projets non exigeants.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 334 mensajes |
|
| Publicado el 05,junio 2020 - 17:17 |
En quoi, pour toi, utiliser "hFixeIdAuto" est une bidouille quelconque (c'est une vrai question hein, rien de trollesque la dedans) ?
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 05,junio 2020 - 17:47 |
Quand tu prends des SGBD type postgresql, sql server ou encore oracle, tu peux définir en SQL la première valeur qui sera utilisée dans ta colonne auto. Ce qui est très pratique.
Utiliser hFixeIdAuto implique qu'il faille ajouter un enregistrement bidon pour fixer le premier ID. C'est donc une bidouille et une énorme lacune parmi d'autres de HFSQL.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 05,junio 2020 - 21:11 |
Il ne faut pas ajouter d'enregistrement bidon, tu fixes simplement le n° DU PREMIER ID lors du premier ajout. ...Libre à toi d'ajouter une valeur bidon pour ce premier ajout. L'enregistrement serait bidon si, lors de la création de la table tu devais créer un enregistrement n-1 puis le supprimer après le premier ajout d'un "vrai" enregistrement.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 06,junio 2020 - 09:39 |
Il est donc nécessaire avant chaque ajout de lire le fichier pour voir s'il est vide pour fixer le premier ID. Ce qui fait donc encore du temps de perdu sans compter le bout de code inutile que ça entraîne.
Il est quand même bien plus simple de faire
HAjoute(MonFichier)
plutôt que
SI HNbEnr(MonFichier) > 0 ALORS HAjoute(MonFichier) SINON MonFichier.ID = nCoeff * 1000000000 HAjoute(MonFichier,hFixeIdAuto) FIN
On voit quand même bien la différence d'efficacité. Si tous les SGBD permettent de fixer la valeur du premier ID c'est qu'il y a une raison. Ce n'est pas parce que HFSQL a des manques flagrants qu'il faut dire que la méthode Windev est la bonne solution.
Bref pour moi HFSQL est inadapté à la situation. Je n'empêche personne de l'utiliser, nous avons tous des attentes différentes d'une base de donnée.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.362 mensajes |
|
| Publicado el 06,junio 2020 - 09:53 |
Il n'est pas obligatoire de lire la table à chaque fois, un paramètre stocké dans la BDR ou sur le serveur suffit. Lamodification de ce paramètre ne se fait qu'une fois, lors du premier enregistrement. Il suffit de récupérer ce paramètre lors de l'initialisation. L'accès n'a lieu qu'une fois. Comparé au temps de saisie, la lecture d'un booléen est négligeable face au temps de saisie.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 06,junio 2020 - 16:08 |
Donc 20 fichiers = 20 booléens. Quelle efficacité !!! Et c'est sans compter les oublis qui peuvent se produire. quand on doit gérer côté client ce qui doit être fait côté serveur.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 334 mensajes |
|
| Publicado el 06,junio 2020 - 20:21 |
Merci, d’avoir éclaircis ma lanterne sur une problématique que je n’ai pas eu à gérer jusqu’à présent 
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 06,junio 2020 - 21:23 |
Bonjour,
HAjoute(MonFichier) Je suis curieux... comment fixes-tu la valeur du premier ID dans cet autre langage / SGDB à toi? Parce que ton HAjoute est incomplet sans ce qui le précède.
Si tu ne prends pas la valeur par défaut... Tu dois avoir assigné la valeur de la clé à quelque part... Au moins "la première fois"...
Et donc, la première fois, ça suppose un test logique quelconque... Un test logique que tu fais à chaque fois, puisque c'est peut-être la première fois...
On voit quand même bien la différence d'efficacité. Si tous les SGBD permettent de fixer la valeur du premier ID c'est qu'il y a une raison. Windev le permet et PM t'a gentiment proposé la solution.
SI HNbEnr(MonFichier) > 0 ALORS HAjoute(MonFichier) SINON MonFichier.ID = nCoeff * 1000000000 HAjoute(MonFichier, hFixeIdAuto) FIN
----- L'ID automatique a pour but premier la réplication serveur. Sa présence n'est pas requise hors de ce contexte mais peut être utile. S'en servir comme clé primaire est une option et non une obligation...
Lorsque l'ID automatique ne répond pas à mes besoins j'y vais d'un champ autre qui y répond. Je laisse alors l'ID automatique à Windev... pur la réplication serveur.
Mais dans tous les cas, je me trouve à faire un test logique si je veux imposer la valeur de la clé de départ.
Ce n'est pas parce que HFSQL a des manques flagrants qu'il faut dire que la méthode Windev est la bonne solution. Je crois, Philippe SB, que rien ne parviendra à satisfaire ta grogne.
Au plaisir,
----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 07,junio 2020 - 10:45 |
@Serge LANTHIER
Tout d'abord le SGBD ne m'appartient pas, un SGDB est un Système de Gestion de Base de Donnée, par exemple Oracle, SQL Server, PostgreSQL, MySQL,... Ils appartiennent donc à qui le veut mais certainement pas à moi.
Si tu ne prends pas la valeur par défaut... Tu dois avoir assigné la valeur de la clé à quelque part... Au moins "la première fois"...
Oui la valeur est fixée directement au niveau du SGBD. De cette manière tu n'as rien à calculer. C'est d'ailleurs exactement ce que fait HFSQL. Quand tu ajoutes un enregsitrement il met la valeur de l'ID à 1. Le seul problème est que tu ne peux pas lui dire "Démarre la valeur à x" sauf à passer par la couche cliente, à savoir par code dans Windev.
Je te remercie de dire quie la solution proposée est bonne, puisque c'est mon code que tu cites.
L'ID automatique a pour but premier la réplication serveur. Sa présence n'est pas requise hors de ce contexte mais peut être utile.
Pour dire une chose aussi énorme il ne fat même pas avoir travaillé avec de la base de donnée. En effet, HFSQL s'en sert pour la synchronisation, mais ce n'est en aucun cas son but premier. Son but premier est d'avoir un identifiant réputé totalement unique qui va être géré par le moteur de ta base de donnée, qui est seule capable de gérer les accès concurrentiels et seule capable d'attribuer un identifiant unique à un enregistrement. Que tu t'en serves comme clé primaire ou non ne regarde que toi.
On sent très clairement qu'à part HFSQL tu ne dois pas utiliser grand chose ce qui fait que tu as une vision très limitée d'un SGBD et de ses capacités. Ouvre un peu ton esprit à autre chose.
Mais dans tous les cas, je me trouve à faire un test logique si je veux imposer la valeur de la clé de départ. Eh bien c'est bien dommage de faire des choses inutiles lorsqu'on peut s'en affranchir. C'est un peu comme de dire il existe une roue bien circulaire, je vais en créer une autre pour faire exactement la même chose.
Pour ta culture personnelle, je te laisse fouiller sur le net, il y a de nombreux exemples: https://www.postgresql.org/docs/12/sql-altersequence.html https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
Je crois, Philippe SB, que rien ne parviendra à satisfaire ta grogne. Ce n'est pas une grogne. C'est un constat. Quad on ne peut pas, on ne peut pas. Ce n'est pas en passant par une bidouille avec des booléens ou des tests pour voir si c'est le premier enregistrement que ça va changer la donne.
Pour moi HFSQL reste une base de donnée grand public qui satisfait certains développeurs et qui n'en satisfait pas d'autres. Les limites de HFSQL sont pour moi maintenant rédhibitoires.
Windev a des gros clients, mais bon nombres de ces clients n'utilisent pas HFSQL c'est aussi qu'il doit y avoir une raison.
La critique n'est pas toujours mauvaise et aide souvent à faire évoluer les choses. Peut-être que si un développeur de chez eux voit ce post, il se dira tiens c'est vrai ce serait une bonne idée de permettre à notre serveur d'en faire plus et alors je reverrai mon jugement. J'essaye de faire le plus de veille technologique possible et j'essaye d'utiliser la meilleure technologie pour le projet sur lequel je suis. Là je me trouve confronter à un projet où HFSQL ne peut clairement pas fonctionner.
Donc je te le répète, il faut s'ouvrir à d'autres technologies et ne pas s'enfermer.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 07,junio 2020 - 11:18 |
Bonjour,
Pourquoi tester à chaque ajout ? Pour ce qui me concerne la procédure d'installation se charge une bonne fois pour toute d'initialiser mes ID avec la valeur souhaitée. Création d'un enregistrement "bidon" je sais cela ne va pas plaire...puis suppression et hop le tour est joué. Pourquoi faire simple..quand on connait la suite.
Bonne journée.
Philippe SB avait écrit le 05/06/2020 :
Bonjour,
Est-il possible dans HFSQL de dire que l'ID Automatique démarre à x, sans avoir à ajouter d'enregistrement bidon bien évidemment ??? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 07,junio 2020 - 15:42 |
Bonjour, un second et dernier sur le sujet,
Par "cet autre langage / SGDB à toi" je suppose: - Ce langage que tu utilises et pour lequel tu détiens une licence. - Cette SGBD que tu utilises et pour laquelle tu détiens une licence.
Je te remercie de dire que la solution proposée est bonne, puisque c'est mon code que tu cites. Si je remonte le sujet: Je vois une proposition de Voroltinquo (Posté le 05 juin 2020 - 07:32). Je vois un bout de code proposé par PM (Posté le 05 juin 2020 - 08:03) Ton "plutôt que" (Posté le 06 juin 2020 - 03:39)
C'est ce que moi je vois en parcourant le sujet.
Oui la valeur est fixée directement au niveau du SGBD.
Il y a donc un test logique effectué par la BD "à chaque ajout" d'un enregistrement, puisque c'est peut-être le premier. Qu'il soit en code client ou en BD locale ou serveur, le test logique s'effectue...
Peu importe les connaissances que tu supposes à mon sujet, la logique s'applique. Je ne vois pas de soucis à voir le test en question en code client, mais c'est mon avis.
Donc je te le répète, il faut s'ouvrir à d'autres technologies et ne pas s'enfermer. Je t'affirme sans hésitation ne PAS être centré sur Windev.
Tout comme j'affirme sans hésitation reconnaître une solution (hFixeIdAuto) lorsque je la vois. Comme le dit Voroltinquo en signature: "Il y a peut être plus simple, mais, ça tourne".
Tous les langages et toutes les BD dignes de ce nom ont leur façon de voir, leurs forces et leurs faiblesses, il faut s'adapter. Affirmer que la solution de l'autre est la bonne, c'est aussi s'enfermer sur soi.
Selon moi tu as trois choix en vue de ton projet exigeant: - Attendre que PcSoft ajoute la fonctionnalité que tu proposes et mettre ton développement sur pause. - Utiliser hFixeIdAuto et poursuivre ton développement jusqu'à la prochaine tuile. (C'est la vie) - Utiliser un autre produit plus performant à tes yeux.
Je me tâtais déjà pour changer de base à cause des performances Maintenant je suis convaincu que ça ne peut servir que pour de petits projets non exigeants.
J'y vois une grogne et une affirmation gratuite... Mais ce n'est que ma perception.

Au plaisir,
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 07,junio 2020 - 18:50 |
Si je posais la question sur HFSQL, c'est que comme beaucoup de développeurs, n'en déplaise à certains, j'ai laissé tomber cette base depuis de nombreuses années.
Je l'ai réutilisé en pensant me simplifier la vie pour un système autonome qui viendrait se synchroniser avec le serveur. Ayant des contraintes de volumétrie, la base principale n'est pas sur HFSQL. Je souhaitais donc savoir s'il était possible de fixer l'id au niveau du moteur et non par code comme on me l'a conseillé.
Quand j'ai dit qu'il fallait rajouter un enregistrement bidon, on m'a dit que non. C'est pourtant ce que fait Christian et je pense que c'est malheureusement lui qui a la seule et bonne méthode pour gagner du temps. Je vais donc changer de SGBD. Le temps que je pensais gagner est en fait totalement perdu.
@Serge LANTHIER:
J'y vois une grogne et une affirmation gratuite. Oui j'affirme que les performances de HFSQL sont faibles. Je peux te donner juste un exemple, la même requête exécutée sur HFSQl ou sur PostgreSQL: HFSQL: 18 secondes Postgresql: 20 ms
Les faits sont là et la performance que tu juges exceptionnelles ne l'est pas du tout. Mais si cela te convient je n'y voit aucun inconvénient.
Quant à la question du test logique du SGBD, je te laisse seul juge. Tu as l'air de connaître les sujet sur le bout des doigts.
Je vais juste faire une comparaison de ton affirmation avec le compteur d'un véhicule.
Avant d'afficher le premier Km , il y a un test logique qui vérifie que c'est bien le premier km qu'on vient d'effectuer. Eh bien non, c'est un compteur, il démarre à 0 et ajoute 1 à chaque fois.
Nous n'avons pas les mêmes méthodes de développement. Je n'aime pas réinventer la roue, toi ça semble te faire plaisir.
Bon dev à tous...
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 499 mensajes |
|
| Publicado el 08,junio 2020 - 19:40 |
Bonsoir,
Il faut reconnaître que Serge a raison : vous voulez utiliser l'ID Automatique là où vous avez besoin d'une séquence.
Un ID est ce qu'il est, un identifiant unique correspondant à une ligne de votre table. Tout comme on apprend très rapidement en dev qu'il peut y avoir des trous dans les ID, ou que le SELECT MAX(ID) est une erreur, il faut retenir qu'on ne doit y définir aucune règle logique non plus.
En effet, qui dit ID automatique dit aussi que PC Soft peut très bien décider de passer à un format GUID "{3F2504E0-4F89-11D3-9A0C-0305E82C3301}" dans une prochaine update, tant que leurs tests de régression passent, vous ne pourrez pas venir vous plaindre.
C'est là où pgsql et mysql ont induit des tas de personnes en erreur, en laissant penser que les AUTO_INCREMENT et autres serial suffisaient pour des ID. Les cas de sequence overflow ne sont pas rares sur le net, et ça devient plus compliqué de recalculer tous ses IDs et les relations qui vont avec à posteriori...
Pour gérer une séquence en HFSQL, il serait plus judicieux de créer une table stockant le nom de la table et la valeur de la séquence correspondante, et une paire de procédures stockées pour récupérer la valeur en cours et calculer la prochaine. Ensuite, vous pouvez passer soit par l'appel à ces procédures dans vos requêtes (à l'équivalent du nextval() de pgsql) où passer par des triggers sur la fonction d'INSERT (comme le fait mysql).
On pourrait reprocher à HFSQL de ne pas proposer de le faire automatiquement comme le propose mysql ou pgsql, mais comme d'habitude on reprocherait à WD de cacher un peu trop bien les choses dans sa "boite noire", on va dire que c'est le juste retour des choses  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 09,junio 2020 - 09:09 |
@Benjamin
Il faut reconnaître que Serge a raison : vous voulez utiliser l'ID Automatique là où vous avez besoin d'une séquence. La séquence à proprement parlé n'existe pas en HFSQL. Ce qui tient lieu de séquence chez eux est l'ID Automatique. Je n'invente rien c'est un fait.
Un ID est ce qu'il est, un identifiant unique correspondant à une ligne de votre table. Tout comme on apprend très rapidement en dev qu'il peut y avoir des trous dans les ID, ou que le SELECT MAX(ID) est une erreur, il faut retenir qu'on ne doit y définir aucune règle logique non plus. Je cherche bien à avoir un identifiant unique qui est ce qu'il est unique, je me fous de savoir s'il y a un trou au milieu. Je veux juste pouvoir dire au moteur HFSQL démarre ton incrément à 1000 au lieu de 1. Ne cherchons pas de problèmes là où il n'y en a pas.
Pour gérer une séquence en HFSQL, il serait plus judicieux de créer une table stockant le nom de la table et la valeur de la séquence correspondante, et une paire de procédures stockées pour récupérer la valeur en cours et calculer la prochaine. Ensuite, vous pouvez passer soit par l'appel à ces procédures dans vos requêtes (à l'équivalent du nextval() de pgsql) où passer par des triggers sur la fonction d'INSERT (comme le fait mysql). Chat échaudé craint l'eau froide... Je ne me risquerai même pas à utiliser des procédures stockées dans HFSQL quand je vois la gestion des triggers.
Bref on en est toujours au même point je ne peux pas simplement dire au moteur démarre à X.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
| Publicado el 09,junio 2020 - 09:47 |
Philippe SB a exprimé avec précision :
@Benjamin Il faut reconnaître que Serge a raison : vous voulez utiliser l'ID Automatique là où vous avez besoin d'une séquence. La séquence à proprement parlé n'existe pas en HFSQL. Ce qui tient lieu de séquence chez eux est l'ID Automatique. Je n'invente rien c'est un fait. Un ID est ce qu'il est, un identifiant unique correspondant à une ligne de votre table. Tout comme on apprend très rapidement en dev qu'il peut y avoir des trous dans les ID, ou que le SELECT MAX(ID) est une erreur, il faut retenir qu'on ne doit y définir aucune règle logique non plus. Je cherche bien à avoir un identifiant unique qui est ce qu'il est unique, je me fous de savoir s'il y a un trou au milieu. Je veux juste pouvoir dire au moteur HFSQL démarre ton incrément à 1000 au lieu de 1. Ne cherchons pas de problèmes là où il n'y en a pas. Pour gérer une séquence en HFSQL, il serait plus judicieux de créer une table stockant le nom de la table et la valeur de la séquence correspondante, et une paire de procédures stockées pour récupérer la valeur en cours et calculer la prochaine. Ensuite, vous pouvez passer soit par l'appel à ces procédures dans vos requêtes (à l'équivalent du nextval() de pgsql) où passer par des triggers sur la fonction d'INSERT (comme le fait mysql). Chat échaudé craint l'eau froide... Je ne me risquerai même pas à utiliser des procédures stockées dans HFSQL quand je vois la gestion des triggers. Bref on en est toujours au même point je ne peux pas simplement dire au moteur démarre à X.
bonjour,
question bête, faire ceci ne fonctionnerais pas ?
ALTER TABLE NomDeLaTable AUTO_INCREMENT = 1000
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 09,junio 2020 - 10:05 |
bonjour,
question bête, faire ceci ne fonctionnerais pas ?
ALTER TABLE NomDeLaTable AUTO_INCREMENT = 1000
Je n'y avais pas pensé mais non ça ne fonctionne pas.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 499 mensajes |
|
| Publicado el 09,junio 2020 - 10:25 |
Bonjour,
> Je cherche bien à avoir un identifiant unique qui est ce qu'il est unique, je me fous de savoir s'il y a un trou au milieu. Je veux juste pouvoir dire au moteur HFSQL démarre ton incrément à 1000 au lieu de 1. Ne cherchons pas de problèmes là où il n'y en a pas.
C'est bien ce que je vous dis, vous cherchez à inclure une règle particulière (commencer à 1000 plutôt que 1) dans un type de champ qui n'est pas fait pour recevoir de règles. Le fait que, actuellement, cet ID automatique ressemble à une séquence incrémentée automatiquement est une simple coïncidence et ne doit pas laisser croire que l'on peut agir dessus.
Vous cherchez à enfoncer un clou avec un tournevis, il ne faut donc pas s'étonner que les solutions proposées soient toutes aussi tordues.
Je vous propose de créer une table pour ces séquences et des triggers, c'est exactement ce que fait MySQL, à l'exception près que c'est caché dans la table information_schema.TABLES. Quitte à ne pas avoir confiance dans les triggers et les procédures stockées, n'ayez pas non plus confiance dans les capacités de HFSQL à stocker vos données de façon correcte et en respectant ACID, et changez tout de suite de SGBD. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.173 mensajes |
|
| Publicado el 09,junio 2020 - 10:57 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 09,junio 2020 - 16:15 |
Thierry, comme c'est souvent le cas, tu nous arrives avec une solution originale. Je peux même préciser que cette rubrique calculée est clé unique. Je prends en note pour usage futur.

Christian aussi avait une solution originale. (Posté le 07 juin 2020 - 05:18)

Profitera aux autres lecteurs du sujet.
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 09,junio 2020 - 17:23 |
@THIERRY TILLIER: Ton idée est intéressante mais non applicable dans mon cas.
@Benjamin:
C'est bien ce que je vous dis, vous cherchez à inclure une règle particulière (commencer à 1000 plutôt que 1) dans un type de champ qui n'est pas fait pour recevoir de règles. Le fait que, actuellement, cet ID automatique ressemble à une séquence incrémentée automatiquement est une simple coïncidence et ne doit pas laisser croire que l'on peut agir dessus. Vous tentez de m'expliquer qu'on a le droit de modifier la valeur du futur ID par code dans une application Windev avec le paramètre "hfixeIdAuto", qui fait bien ce qu'il doit faire (la valeur suivante la valeur + 1 de la valeur qu'on vient de fixer) mais que ce n'est pas un compteur et qu'on ne peut se fier à l'ID Auto pour dire que c'est un compteur...
Je ne cherche pas à inclure une règle particulière, je cherche à fixer l'ID sans créer d'enregistrement bidon ce qui n'est juste pas possible. HFSQL ne permet pas de le faire facilement, je m'en affranchirais en utilisant une autre base qui sera bien mieux adaptée à mes besoins. Je regrette juste d'avoir choisi la solution de facilité en pensant que ça allait le faire.
Quitte à ne pas avoir confiance dans les triggers et les procédures stockées, n'ayez pas non plus confiance dans les capacités de HFSQL à stocker vos données de façon correcte et en respectant ACID, et changez tout de suite de SGBD. Je n'ai en effet plus très confiance en HFSQL étant donné les déboires que j'ai eu à la sortie du moteur C/S et de la journalisation qui vidait toute la table de ses données. Et ça m'est arrivé plus d'une fois. Quant aux triggers sur ce SGBD ce n'est qu'une farce pour dire que ça existe. Les limites sont tellement énormes que je ne vois même pas leur utilité si ce n'est pour valider que toutes les infos sont bien là avant de valider l'enregistrement.
Encore une fois je le répète, HFSQL peut avoir son intérêt dans des petits projets non sensibles. Pour le reste ce n'est la base que je choisis et je m'en mords les doigts aujourd'hui. La facilité me rend la vie bien plus compliquée aujourd'hui.
Bref je clos le sujet. Ca ne sert plus à rien de s'étendre là-dessus. Je ne ferais pas 2 fois la même erreur et je vous laisse en grands maîtres de la BDD utiliser ce que bon vous semble.
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 213 mensajes |
|
| Publicado el 09,junio 2020 - 19:20 |
En ce jour, il vit la lumière au bout du tunnel.

-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
| Publicado el 10,junio 2020 - 12:47 |
Le 09/06/2020 à 15:23, Philippe SB a écrit :
@THIERRY TILLIER: Ton idée est intéressante mais non applicable dans mon cas. @Benjamin: C'est bien ce que je vous dis, vous cherchez à inclure une règle particulière (commencer à 1000 plutôt que 1) dans un type de champ qui n'est pas fait pour recevoir de règles. Le fait que, actuellement, cet ID automatique ressemble à une séquence incrémentée automatiquement est une simple coïncidence et ne doit pas laisser croire que l'on peut agir dessus. Vous tentez de m'expliquer qu'on a le droit de modifier la valeur du futur ID par code dans une application Windev avec le paramètre "hfixeIdAuto", qui fait bien ce qu'il doit faire (la valeur suivante la valeur + 1 de la valeur qu'on vient de fixer) mais que ce n'est pas un compteur et qu'on ne peut se fier à l'ID Auto pour dire que c'est un compteur... Je ne cherche pas à inclure une règle particulière, je cherche à fixer l'ID sans créer d'enregistrement bidon ce qui n'est juste pas possible. HFSQL ne permet pas de le faire facilement, je m'en affranchirais en utilisant une autre base qui sera bien mieux adaptée à mes besoins. Je regrette juste d'avoir choisi la solution de facilité en pensant que ça allait le faire. Quitte à ne pas avoir confiance dans les triggers et les procédures stockées, n'ayez pas non plus confiance dans les capacités de HFSQL à stocker vos données de façon correcte et en respectant ACID, et changez tout de suite de SGBD. Je n'ai en effet plus très confiance en HFSQL étant donné les déboires que j'ai eu à la sortie du moteur C/S et de la journalisation qui vidait toute la table de ses données. Et ça m'est arrivé plus d'une fois. Quant aux triggers sur ce SGBD ce n'est qu'une farce pour dire que ça existe. Les limites sont tellement énormes que je ne vois même pas leur utilité si ce n'est pour valider que toutes les infos sont bien là avant de valider l'enregistrement. Encore une fois je le répète, HFSQL peut avoir son intérêt dans des petits projets non sensibles. Pour le reste ce n'est la base que je choisis et je m'en mords les doigts aujourd'hui. La facilité me rend la vie bien plus compliquée aujourd'hui. Bref je clos le sujet. Ca ne sert plus à rien de s'étendre là-dessus. Je ne ferais pas 2 fois la même erreur et je vous laisse en grands maîtres de la BDD utiliser ce que bon vous semble. -- Cordialement, Philippe SAINT-BERTIN
Un peu dure votre argument. j'utilise Windev depuis +/- ... on va dire la version Windev 2.0 et j'ai des clients qui ont mon application principal depuis cette période les seules moment où j'ai eu à critiquer et même durement j'étais prêt à changer de logiciel et de retourner avec PowerBuilder c'est lors de la version 7.0 J'ai travaillé sur PowerBuilder pendant plus de 10 ou 15 ans le gros problème.. la SGBD Oracle ou Sybase pas gratuite. Et jamais à jour avec les différentes versions de windows ... Ce qui m'a fait changé au départ la base de donnée gratuite ... si on emploie Windev. autrement ...et cela suit les versions de Windows. ne me parler pas de Postgress et MariaDB ou ... je me méfie toujours de ce qui est gratuit et j'ai eu des déboires avec Postgress. j'ai mon application avec plus ou moins 500 médecins et j'ai des sites où il y a plus ou moins des centaines de milliers d'enregistrements si pas plus .. j'ai même un fichier qui dépasse ... 300 GIGA chez un client je dis bien un fichier mmo mais là c'est un autre problème de départ. Je n'ai jamais eu de gros problèmes et j'ai des sites..... et je n'ai pas de retour... du moins je sais qu'il l'emploie car .. ils font des mises à jour. je n'emploie pas l'autoincrémentation je créé moi-même mes identifiants même en SYBASE ou Oracle les même problèmes suffit d'une configuration obsolète je parle d'un poste trop lent... des problèmes et franchement je ne vais pas épiloguer là-dessus. J'ai des sites où mon record 62 postes reliés et en cloud .. naturellement la configuration est ... on va dire super costaud j'ai du 1 GB réel comme connexion entre 6 sites sur des lieux différents. Cette votre opinion juste une question ... pourquoi alors vous utiliser encore Windev ... ?? Moi j'en suis content on va dire à 95 % il y aura toujours des hics mais autrement ... Inutile de me répondre BAV |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|