[Résolu][Base]Recuperer les info insérées par SQL
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
[Résolu][Base]Recuperer les info insérées par SQL
Bonjour,
Lors d'une insertion SQL, il est possible de récupérer le n° auto-incrémenté venant d'être créé par l'ordre SQL via un CALL IDENTITY.
Toutefois si ma clef primaire est une clef composite avec par exemple la colonne "Exercice" et une colonne "Numero" (pour lesquelles la création d'une ligne suivante est l'insertion dans l'exercice encours avec un n° maximum + 1 de l'exercice concerné), le CALL IDENTITY est inapproprié (pas d'auto-incrément dans la base).
Normalement il me faudrait utiliser l'option OUTPUT INSERTED.Numero dans l'INSERT mais mes tentatives sont en échecs.
Cette option est-elle acceptée par HSQLDB ?
Si oui auriez vous un exemple et sinon y-aurait-il une autre voie ?
Merci pour votre temps
Lors d'une insertion SQL, il est possible de récupérer le n° auto-incrémenté venant d'être créé par l'ordre SQL via un CALL IDENTITY.
Toutefois si ma clef primaire est une clef composite avec par exemple la colonne "Exercice" et une colonne "Numero" (pour lesquelles la création d'une ligne suivante est l'insertion dans l'exercice encours avec un n° maximum + 1 de l'exercice concerné), le CALL IDENTITY est inapproprié (pas d'auto-incrément dans la base).
Normalement il me faudrait utiliser l'option OUTPUT INSERTED.Numero dans l'INSERT mais mes tentatives sont en échecs.
Cette option est-elle acceptée par HSQLDB ?
Si oui auriez vous un exemple et sinon y-aurait-il une autre voie ?
Merci pour votre temps
Dernière modification par sldf le 23 mai 2021 11:13, modifié 2 fois.
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- InconditiOOnnel
- Messages : 948
- Inscription : 19 août 2018 05:20
Re: [Basic]Recuperer les info insérées par SQL
Bonjour,
Depuis le temps que tu es sur ce forum, tu dois savoir que fournir un fichier facilite le travail des bénévoles.
Depuis le temps que tu es sur ce forum, tu dois savoir que fournir un fichier facilite le travail des bénévoles.
Open Office 4.1.15 sous Windows 11
-
- RespOOnsable forum
- Messages : 9254
- Inscription : 28 août 2010 08:45
Re: [Basic]Recuperer les info insérées par SQL
Bonjour,
Si c'est une obligation, mentionnez-le dans votre signature en ajoutant Obligation de version.
Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable
Accès direct à votre signature pour la corriger.
Cette version de LibO est obsolète.Dans votre signature il y a écrit : LibreOffice 6.4.4.2 (x64)
Si c'est une obligation, mentionnez-le dans votre signature en ajoutant Obligation de version.
Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable
Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
Re: [Basic]Recuperer les info insérées par SQL
OK micmac, ci-joint 1 fichier contenant 1 table Flow et 1 procedure CreerFlow dans la librairie Standard.
J'y ai transcrit 1 INSERT dans la table Flow qui fonctionne mais ne restitue pas la clef primaire (clef composite : exercice + numero)
En dessous se trouve une partie de mes essais en échec de restitution du nouveau numero venant d'être inséré.
Cdlt
J'y ai transcrit 1 INSERT dans la table Flow qui fonctionne mais ne restitue pas la clef primaire (clef composite : exercice + numero)
En dessous se trouve une partie de mes essais en échec de restitution du nouveau numero venant d'être inséré.
Cdlt
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- InconditiOOnnel
- Messages : 948
- Inscription : 19 août 2018 05:20
Re: [Basic]Recuperer les info insérées par SQL
Comme il n'y a pas d'autovaleur sur les index, il est impossible d'avoir une logique pour récupérer un autoincrément.
Pourquoi mettre Basic alors que c'est Base que tu utilises ?
Pourquoi mettre Basic alors que c'est Base que tu utilises ?
Open Office 4.1.15 sous Windows 11
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
Re: [Basic]Recuperer les info insérées par SQL
Sur la question d'autovaleur (attention dans mon exemple ce n'est pas un "vrai" auto-incrément, c'est un auto-incrément logique géré par le Basic/SQL), j'ai vu (mais sur d'autres type de bases) qu'il était possible de récupérer l'intégralité de la ligne mise à jour et pas seulement les auto incrément associé à IDENTITY. Mais peut être que la base LibreOffice n'offre pas cette possibilité. C'etait ma question initiale.
Sur la question de la balise, dans la mesure où l'exploitation des valeurs précédemment insérée ne peut être réalisée que par un source, du coup j'ai utilisé BASIC et non BASE.
Sur la question de la balise, dans la mesure où l'exploitation des valeurs précédemment insérée ne peut être réalisée que par un source, du coup j'ai utilisé BASIC et non BASE.
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- RespOOnsable forum
- Messages : 12228
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: [Basic]Recuperer les info insérées par SQL
Bonjour,
Un titre clair n'est pas pour vous mais pour tous ceux effectuant des recherches.
Un peu comme votre autre question où vous mettez Java alors que ce n'est pas du tout avec ce langage.
Basic signifie que le code est exécutable quelque soit le module. Je doute que celui-ci fonctionne sous Draw ou Calc.sldf a écrit :Sur la question de la balise, dans la mesure où l'exploitation des valeurs précédemment insérée ne peut être réalisée que par un source, du coup j'ai utilisé BASIC et non BASE.
Un titre clair n'est pas pour vous mais pour tous ceux effectuant des recherches.
Un peu comme votre autre question où vous mettez Java alors que ce n'est pas du tout avec ce langage.
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
Re: [Base]Recuperer les info insérées par SQL
Bonjour,
J'ai modifié la balise du 1er message de [Basic] à [Base].
Souhaitez vous que je modifie autre chose et sinon pouvez vous réorienter le sujet au sein du bon forum ?
Merci
J'ai modifié la balise du 1er message de [Basic] à [Base].
Souhaitez vous que je modifie autre chose et sinon pouvez vous réorienter le sujet au sein du bon forum ?
Merci
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base]Recuperer les info insérées par SQL
Bonjour,
Suggestion : passer par une requête.sldf a écrit : sinon y-aurait-il une autre voie ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
Re: [Base]Recuperer les info insérées par SQL
Effectivement j'y avais bien pensé mais cela signifie qu'il me faut une clef d'accès comme un timestamp géré par le basic et mis à jour lors de l'insertion ce qui me permettrait d'aller lire la ligne juste après l'avoir insérée...
==> colonne supplémentaire + temps d'accès + risque (improbable) d'avoir 2 insertions par 2 users en même temps (on peut aussi utiliser une colonne concaténée avec le timestamp & code user ...)
Bref ça devient compliqué, mon objectif initial était de définir une clef primaire avec peu de limite dans le temps d'où une clef primaire concaténée sur l'exercice + 1 numéro. Peut être que la solution serait de rester sur un BigInt en auto incrément que je modifierais à chaque changement d'exercice pour correctement le positionner ?
je continue mes investigations et reviens sur le fils pour faire part de mes recherches.
==> colonne supplémentaire + temps d'accès + risque (improbable) d'avoir 2 insertions par 2 users en même temps (on peut aussi utiliser une colonne concaténée avec le timestamp & code user ...)
Bref ça devient compliqué, mon objectif initial était de définir une clef primaire avec peu de limite dans le temps d'où une clef primaire concaténée sur l'exercice + 1 numéro. Peut être que la solution serait de rester sur un BigInt en auto incrément que je modifierais à chaque changement d'exercice pour correctement le positionner ?
je continue mes investigations et reviens sur le fils pour faire part de mes recherches.
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Base]Recuperer les info insérées par SQL
Salut,
Tu es face à un faux problème car Base en format natif HSQLDB est mono-utilisateur.sldf a écrit :risque (improbable) d'avoir 2 insertions par 2 users en même temps
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
Re: [Base]Recuperer les info insérées par SQL
Ah flûte il me semblait avoir lu que l'on pouvait y accéder à distance (ou tout au moins aux tables à distance).
1/Je pensais donc à une organisation de type :
* la base sur un serveur ou sur un PC faisant office de serveur (je maitrise peu ces sujets)
* les accès gérés via des échanges mails avec formulaire en pièce jointe sur une boite mail dédiée
* la base accède périodiquement à la messagerie dédiée et met à jour ses tables
2/Idéalement je pensais peut être que certains super-users pourraient avoir un doc Base vide avec les bons form et pourrais interroger via ces form la base distante...
Les points 1 & 2 semblent-ils raisonnables ou complétement à coté du sujet ?
ou me faut il une autre "base distante" comme MySQL et si je souhaite employer les outils LibreOffice et ses formulaires, dois/puis-je utiliser les form de Base ou plutôt m'orienter vers les Form de Writer/Calc ?
Si vous le souhaitez je peux ouvrir un nouveau sujet si oui dans quel forum [Base] ?
Merci
1/Je pensais donc à une organisation de type :
* la base sur un serveur ou sur un PC faisant office de serveur (je maitrise peu ces sujets)
* les accès gérés via des échanges mails avec formulaire en pièce jointe sur une boite mail dédiée
* la base accède périodiquement à la messagerie dédiée et met à jour ses tables
2/Idéalement je pensais peut être que certains super-users pourraient avoir un doc Base vide avec les bons form et pourrais interroger via ces form la base distante...
Les points 1 & 2 semblent-ils raisonnables ou complétement à coté du sujet ?
ou me faut il une autre "base distante" comme MySQL et si je souhaite employer les outils LibreOffice et ses formulaires, dois/puis-je utiliser les form de Base ou plutôt m'orienter vers les Form de Writer/Calc ?
Si vous le souhaitez je peux ouvrir un nouveau sujet si oui dans quel forum [Base] ?
Merci
LibreOffice 7.0.6.2 (x64) sous Windows 10
-
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Base]Recuperer les info insérées par SQL
Bonjour,
Cordialement,
Lire le chapitre "Accès aux bases de données externes" dans le chapitre 2 du Guide Basesldf a écrit :Ah flûte il me semblait avoir lu que l'on pouvait y accéder à distance (ou tout au moins aux tables à distance).
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
-
- Membre OOrganisé
- Messages : 78
- Inscription : 23 mars 2009 15:25
[Résolu][Base]Recuperer les info insérées par SQL
Merci pour tous ces apports.
J'en déduit que l'accès aux informations du module Base venant d'être insérées n'est pas "nativement" possible (accès logique tjrs envisageable) sauf pour les auto-incrémentés. Par contre les autres type de bases ont l'air d'offrir cette possibilité.
Je vais creuser l'aspect logique et poursuivre dans un 1er temps sur le module Base.
J'en déduit que l'accès aux informations du module Base venant d'être insérées n'est pas "nativement" possible (accès logique tjrs envisageable) sauf pour les auto-incrémentés. Par contre les autres type de bases ont l'air d'offrir cette possibilité.
Je vais creuser l'aspect logique et poursuivre dans un 1er temps sur le module Base.
LibreOffice 7.0.6.2 (x64) sous Windows 10