Erreur écriture données dans base de données

Hello,

J’obtiens une erreur à la fin de la saisie de mon formulaire ; je ne comprends pas pourquoi ?

001

L’erreur porte sur le deuxième champ (sans compter l’ID), et ce champ est un champ qui se rempli automatiquement par une requête SQL. La requête SQL récupère une donnée depuis une autre table …

La requête n’a rien de particulier :

"SELECT "enseigne" FROM "T_CodeDate" ORDER BY "ID" DESC"

La data ainsi récupérée apparaît bien dans le champ ! … Donc, pourquoi cette erreur ? …

Bonsoir,
L’erreur est sur l’insertion pas sur la donnée récupérée donc difficile de savoir puisqu’on ne sait pas comment cette donnée est insérée. S’il n’y a pas de données confidentielles, il serait bien de partager le fichier… c’est une base de données Libreoffice ou connecté à une base externe, mariadb ou autre ?

Eh bien si, justement, elle est insérée automatiquement dans le champ par une requête SQL ! … …

oui mais on ne sait pas comment et la base dit que ce n’est pas bon et à priori elle ne se trompe pas

Que veux-tu dire par “on ne sait pas comment” ? …

À force de réflexions, j’ai fini par comprendre pourquoi se produisait cette erreur …

Je pensais, naïvement, pouvoir remplir automatiquement un champ du formulaire, avec une donnée issue d’une autre table, comme on le fait avec une
“zone de liste”. Dans mon esprit, “remplir automatiquement” signifiait "saisir + valider ", donc pas d’intervention manuelle …
Or, toute saisie nécessite une “validation” et dans mon cas, cela restait simplement un affichage !
(Je précise, pour info, que j’utilisais bien deux champs distincts : champ.source + champ.destination)
Donc, le champ de destination ne recevait jamais l’information ! … D’où le message d’erreur, car le champ exige une saisie … …

C’est manifestement la méthode utilisée qui n’est pas la bonne …

La documentation (HSQLDB) semble indiquer qu’il est préférable d’agir directement sur la “valeur par défaut” du champ ; comme on le ferait, par
exemple, pour afficher la date courante avec la fonction CURRENT_DATE ; via une injection SQL :
… … SET DEFAULT CURRENT_DATE
(à réaliser depuis l’outil d’exécution d’instruction SQL).

Test concluant … il se produit bien un renseignement automatique du champ, à chaque saisie du formulaire ! :slightly_smiling_face: