IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InterBase Discussion :

Update Interbase TIBQuery


Sujet :

InterBase

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Update Interbase TIBQuery
    Bonjour
    j'utilise un TIBQuery
    voici ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    UPDATE TRESIDMVT
     
    SET DATERGLORGMVT = (SELECT DATERGL FROM TRGLLIG),
           MTRGLORGMVT = (SELECT MONTRGL FROM TRGLLIG),
           RESTDUMVT = (SELECT RESTDU FROM TRGLLIG)
     
    WHERE  NUMSSMVT = (SELECT NUMSS FROM TRGLLIG)
    AND MEDECINMVT = (SELECT MEDECIN FROM TRGLLIG)
    AND DATECONSULTMVT = (SELECT DATECONSUL FROM TRGLLIG)
    AND MTCONSULTMVT = (SELECT MONTCONSUL FROM TRGLLIG)
    j'ai 2 Tables TRESIDMVT à modifier
    les 3 champs DATERGLORGMVT - MTRGLORGMVT - RESTDUMVT
    TRGLLIG à copier les 3 champs DATERGL - MONTRGL - RESTDU
    Avec 4 critères Table TRESIDMVT NUMSSMVT - MEDECINMVT - DATECONSULTMVT - MTCONSULTMVT avec 4 champs de la table TRGLLIG
    NUMSS - MEDECIN - DATECONSUL - MONTCONSUL
    j'ai un message d'erreur: MULTIPLE ROWS IN SINGLETON SELECT

    avez vous une idée
    par avance merci
    cordialement
    KrisSol

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 763
    Points
    30 763
    Par défaut
    S'il y a plus d'une ligne dans TRGLLIG, le SGBD ne sait pas laquelle choisir pour y prendre les données.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 017
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour ,

    Cette requête est loin d'être un modèle d'optimisation !

    de base , je serais passé par une procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SET TERM ^ ;
    CREATE PROCEDURE UPDATE_TRESIDMVT
    (PNUMSS type,
     PMEDECIN  type,
     PDATECONSUL type,
     PMTCONSULTMVT type)
    AS 
    DECLARE VARIABLE VDATERGL type;
    DECLARE VARIABLE VMONTRGL type;
    DECLARE VARIABLE VRESTDU type;
    BEGIN
    SELECT DATERGL,MONTRGL,RESTDU 
      FROM TRGLLIG 
      WHERE NUMSS=:PNUMSS
      AND MEDECIN=:PMEDECIN
      AND DATECONSUL=:PDATECONSUL
      AND MTCONSULT=:PMTCONSULT
    INTO :VDATEREGL,:VMONTRGL,:VRESTDU ;
    UPDATE  TRESIDMVT
     SET DATERGLORGMVT = :VDATERGL,
           MTRGLORGMVT = :VMONTRGL,
           RESTDUMVT = :VRESTDU 
    WHERE NUMSSMVT = :PNUMSS
    AND MEDECINMVT = :PMEDECIN
    AND DATECONSULTMVT = :PDATECONSUL
    AND MTCONSULTMVT = :PMONTCONSUL
    END ^
    
    SET TERM ;  ^
    cependant je m'interroge sur le bien fondé de celle-ci et pense qu'il serait possible de transformer en Trigger

    j'ai un message d'erreur: MULTIPLE ROWS IN SINGLETON SELECT
    normal chaque SELECT ... FROM TRGLLIG n'a aucun WHERE donc , sauf si la table TRGLLIG n'a qu'un seul enregistrement on obtient des 'multiple rows'
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Requete interbase
    Merci pour ces réponses
    je ne maîtrise pas les procédures et trigger en Delphi
    mais je vais y travailler
    cordialement

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 017
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par krisSol Voir le message
    je ne maîtrise pas les procédures et trigger en Delphi
    Ce ne sont pas des procédures ou triggers DELPHI mais bien des Procédures ou triggers du SGBD

    en Delphi cette procédure se fera via un ExecSQL
    quant au trigger , c'est la SGBD qui déclenche son exécution en fonction de sa déclaration
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [INTERBASE][UPDATE SET WHERE] problème de requete
    Par exclusif dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/03/2006, 22h10
  2. [interbase]Le plus rapide TIBTable ou TIBQuery?
    Par plante20100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/11/2005, 13h09
  3. interbase commande UPDATE et NIL
    Par mitur dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/11/2004, 19h37
  4. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 17h15
  5. code pour interbase 6.0 et 6.5 de generateur
    Par tripper.dim dans le forum InterBase
    Réponses: 4
    Dernier message: 01/07/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo