Gambas France BETA


Pas de compte ? Incription

db.create sur la 3.19

Ce sujet est résolu.

1
AuteurMessages
Patrick#1 Posté le 22/2/2024 à 15:48:36
Bonjour,
J'ai un problème avec la version 3.19 et j'ai bien bien peur qu'il soit insoluble, mais sait on jamais. Jusqu’à la 3.18 j'ai ce code qui fonctionne :
1
2
3
4
5
6
INHERITS Connection

PUBLIC SUB Create(Table AS STRING) AS Result
.
.
END


A partir de la 3.19 il ne fonctionne plus et il faut écrire :
1
2
3
4
5
6
INHERITS Connection

PUBLIC SUB Create(Table AS STRING, OPTIONAL retour AS BOOLEAN, ifnoexist AS BOOLEAN) AS Result
.
.
END[


Mais cela ne fonctionne plus dans les versions inférieurs et c'est un vrai problème.
Patrick
spheris#2 Posté le 23/2/2024 à 09:09:53
la 3.19 étant fraichement démoulée, je te suggère de poster sur la mailing list pour les dev.
Ils te répondront probablement mieux que nous ici.
;-)
valaquarus#3 Posté le 24/2/2024 à 12:19:56
-- Unus Ex Altera --Bonjour Patrick,
Sphéris a raison, il faut absolument contacter la mailing list.
Dans les faits la documentation est claire et rien n'a changé :
DB.Create (gb.db)
Static Function Create ( Table As String [ , Return As Boolean ] ) As Result

Retourne un objet en lecture/écriture Result utilisé pour créer des enregistrements dans la table spécifiée.

La page anglaise qui est plus à jour (grrr.)
DB.Create (gb.db)
Static Function Create ( Table As String [ , Return As Boolean ] ) As Result

Return a read/write Result object used for creating records in the specified table.

Table: The name of the table.

Return: If set, the Result.Update() method will fill the Result with the contents of the newly inserted record. Since 3.19

IfNotExist: If set, the Result.Update() method will not raise an error if the record already exists (i.e. if a primary key or index constraints fails). Since 3.19

The Return option is based on the optional INSERT INTO ... RETURNING SQL syntax which is not available in all database systems.

The IfNotExist option relies on non-standard SQL features that are not available in all versions of database systems.


Mais il est possible que la compilation de la 3.19 ait eu quelques soucis, j'en ai bien trouvé un sur l'utilisation de valeur integer dans une constante en float que Benoît a corrigé pour la future stable.
Donc il serait sage de rapporter ce souci et voir si quelqu'un d'autre parmi les Développeurs a vu la chose en question.
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
Patrick#4 Posté le 1/3/2024 à 16:30:18
Le problème est que la 3.19 est sortie et qu'il y aura toujours quelqu'un qui l'utilisera dans une distribution ou une autre.
J'ai trouvé une solution de contournement qui fonctionne partout.
valaquarus#5 Posté le 1/3/2024 à 17:13:12
-- Unus Ex Altera --
Le problème est que la 3.19 est sortie et qu'il y aura toujours quelqu'un qui l'utilisera dans une distribution ou une autre.
J'ai trouvé une solution de contournement qui fonctionne partout.


Bonjour Patrick,
peut on connaître ton secret de contournement ?
Système d'exploitation : KDE neon 6.0 ~ Version Gambas : 3.19.3
Patrick#6 Posté le 2/3/2024 à 06:55:43
Ce n'est pas un grand secret, j'ai tout simplement changé le nom de la fonction dans le projet, pour créer un enregistrement on utilise maintenant db.create9(Table).
L'autre solution aurait été de tester la version de Gambas et d'avoir 2 classes une pour jusqu’à la 3.18 et l'autre a partir de la 3.19 mais ça aurait rajouté du travail de maintenance.
1