Ce sujet est résolu.
1 | |||
Auteur | Messages | ||
---|---|---|---|
manu | #1 Posté le 14/11/2011 à 08:23:28 | ||
Avec Gambas ca roule ! | Bonjour, Dans mon projet, j'enchaine 3 formulaires pour saisir des données que j'enregistre à chaque fois dans une table différente. Toutes ces tables sont liées par un champ id. Lors de l'enregistrement de Form1 dans table1, le champ id, de type série, est donc créé automatiquement. Je souhaite récupérer la valeur de ce champs juste après l'enregistrement (pour l'envoyer au formulaire suivant en fait). J'ai fait ça mais ça ne marche pas :
Bon à vrai dire je m'en doutais :). Savez vous si il y a une méthode simple pour connaitre cette valeur ? Merci d'avance Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
jeanyvon | #2 Posté le 14/11/2011 à 13:04:11 | ||
Gambas? Ma! Et gusto | salut, Est-ce que les autres valeurs sont enregistrées? CàD :
Si oui, renseigne ton index. Ta méthode doit tolérer les champs vides. @+ JY Vieillir? On peut retarder mais pas y échapper! | ||
manu | #3 Posté le 14/11/2011 à 13:26:30 | ||
Avec Gambas ca roule ! | Oui, l'enregistrement des autres valeurs se passe très bien, et le champ Id est bien incrémenté automatiquement. Mais pour l'avoir dans hResult je crois que je ne vais pas couper a faire une requête... un truc du genre :
J'aurais espéré un tour de magie comme gambas nous en reverse souvent. Mais si notre magicien préféré passe par là, il va peut être nous sortir ça de son chapeau Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
manu | #4 Posté le 14/11/2011 à 13:53:36 | ||
Avec Gambas ca roule ! | bon, en fait faut faire ca :
Renommer le champ de réponse (pour moi idLast) est indispensable car par défaut il s'appelle MAX(id) et là, Gambas s’emmêle les pinceaux avec sa fonction Max à lui Bon je met pas en résolu tout de suite au cas ou le chapeau ne soit pas vide Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Prokopy | #5 Posté le 14/11/2011 à 18:30:59 | ||
Kinder Pingui | Salut manu, En effet il y a plus simple :
La fonction LAST_INSERT_ID() retourne l'identifiant du dernier champ ajouté à la base de données, tout simplement. C'est plus rapide que de calculer un maximum (surtout si la table est grosse) et parfois même plus exact, dans certains cas un peu tordus le dernier id n'est pas forcément le plus grand. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||
gambix | #6 Posté le 14/11/2011 à 20:30:02 | ||
Faire simple ! | La solution de Prokopy est plus sur, car celle de manu n'est valable que si l'id est automatique, donc parfaitement incrémentielle Moins de texte dans une signature c'est agrandir son espace. | ||
manu | #7 Posté le 14/11/2011 à 20:56:44 | ||
Avec Gambas ca roule ! | ok, merci a tous les deux mais je crois que cette fonction est propre à MySql vu ce que j'ai lu ici : http://forum.hardware.fr/hfr/Programmation/SGBD-SQL/equivalent-sql-last_insert_id-sujet_106696_1.htm Je suis sur une base Sqlite, je vais quand même essayer Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
manu | #8 Posté le 14/11/2011 à 21:03:49 | ||
Avec Gambas ca roule ! | Heu dans le database manager de Gambas, ca ne marche pas... C'est bien ca la requête ??? : SELECT LAST_INSERT_ID() As id FROM Table1 Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Prokopy | #9 Posté le 14/11/2011 à 22:03:17 | ||
Kinder Pingui | Il n'y a pas de FROM dans la requête. SELECT LAST_INSERT_ID() As id La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||
gambix | #10 Posté le 14/11/2011 à 22:06:57 | ||
Faire simple ! | oui c'est a appeler après la dernière entrée .. car ça donne le dernier id toute table confondue Moins de texte dans une signature c'est agrandir son espace. | ||
manu | #11 Posté le 15/11/2011 à 22:37:34 | ||
Avec Gambas ca roule ! | Bonjour, Bon je suis sur une Bsae SQlite donc la fonction ne marche pas... Va pt'être falloir que je m’intéresse plus à MySql Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Prokopy | #12 Posté le 16/11/2011 à 14:40:57 | ||
Kinder Pingui | Il me semble que sous SQLite la fonction c'est pas LAST_INSERT_ID() mais LAST_INSERT_ROWID(). http://www.sqlite.org/lang_corefunc.html#last_insert_rowid MySQL est en effet plus puissant mais aussi plus lourd. Avec SQLite t'as juste à avoir un fichier qui contient la base de données, niveau portabilité c'est comme si tu avais un fichier de config de gb.settings. Avec MySQL il faut lancer le serveur MySQL avant de lancer ton application, ce qui est très lourd. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||
manu | #13 Posté le 16/11/2011 à 21:23:10 | ||
Avec Gambas ca roule ! | Ok, super et merci. Ca marche nickel Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
1 |