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

Bases de données Delphi Discussion :

Access 2007 et sql


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Access 2007 et sql
    salut a tous voila j'ai une base de données Access 2007 une table contient plusieurs champs dont le code jeune et nombre de jour (NBJ)
    je veut mettre le NBJ a 22 dans le cas ou la somme des nbj dépasse 22 alors ja'i ecrit ca en sql

    update table set nbj=nbj-1 where SUM(NBJ)>22

    mais ca ne fonctionne pas

    update table set nbj=nbj-1 where code in (select code from table where SUM(nbj)>22)

    tjs ca ne marche pas

    alors comment faire ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    tu mets à jour "nbj=nbj-1" donc si il est à 24, il passe à 23 et non 22 !

    mais ca ne fonctionne pas
    C'est flou ça !
    Est-ce une erreur de syntaxe ou il lui manque un GROUP BY code dans le sous SELECT par exemple ?
    Est-ce que cela ne fait rien ou pire contamine la table entière ?
    Soit plus précis !

    Sinon c'est juste du SQL, les experts ACCESS sont là
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    l'erreur est dans le code SQL

    cela pourrait être
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set nbj=22 where NBJ>22
    mais dans ce cas je ne vois pas avoir utilisé le SUM

    plus incompréhensible cette syntaxe, que j'ai corrigé et mise juste pour montrer avec un group by
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update table set nbj=22 where code in (select code from table
                                                                         GROUP BY code 
                                                                         having SUM(nbj)>22)

    comme le souligne ShaiLeTroll , c'est flou , un descriptif de la table plus complet serait mieux

    par exemple
    Table
    CLE DATE NOT NULL
    CODEJEUNE INTEGER
    NBJ INTEGER

    P.S. il est de bon ton de baliser le code (utilisation du bouton # ou saisir CODE=SQL entre crochets [] en début de code et /CODE toujours entre crochets [] en fin de code , cela facilite la lecture
    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
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    salut a tous voila je vous explique :
    dans la table en question un jeune peut avoir plusieurs enregistrements et chaque enregistrement nbj peut avoir une valeur entre 0 et 22 c'est pour cela que j'utilise le SUM
    ce dont j'ai besoin est d'enlever 1 pour chque SUM(nbj) qui dépasse le 22

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    non , il ne faut pas utiliser le SUM , qui cumule des enregistrements , c'est donc bien ma première proposition qu'il faudrait utiliser .

    Si j'ai bien compris , il s'agit d'une sorte de calendrier indiquant si le jour est jeuné ou non . J'aurais fait une table de ce genre

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE CALENDRIER (
     DATE_JOUR DATE NOT NULL,
     ANNEE_RELIGIEUSE SMALLINT,
     JEUNE BOOLEAN,
     
      CONSTRAINT PK_CALENDRIER PRIMARY KEY (DATE_JOUR)
    );
    donc pas de numéro de jour de jeûne

    pour vérifier
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT ANNEE_RELIGIEUSE FROM CALENDRIER WHERE JEUNE=TRUE GROUP BY ANNEE_RELIGIEUSE HAVING COUNT(*)>22

    avec Firebird , j'aurais su avec certitude comment ensuite faire un compte (ou décompte) du jour de jeûne , avec Access cela doit être quelque chose comme ceci :
    non testé
    1- je n'ai pas access
    2- le SQL Acces n'offre peut être pas certaines des possibilités

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    CASE JEUNE
     WHEN TRUE THEN 
    DATE_CALENDRIER-(SELECT MIN(DATE_CALENDRIER) FROM CALENDRIER WHERE JEUNE=TRUE AND ANNEE_RELIGIEUSE=(SELECT ANNEE_RELIGIEUSE FROM CALENDRIER WHERE DATE_CALENDRIER=:Jour)) + 1 
    ELSE 0
    AS NUMEROJOURJEUNE
    FROM CALENDRIER WHERE DATE_CALENDRIER=:jour

    Note : j'ai prévu la possibilité que ramadan (pour appeler un chat un chat) puisse être à cheval sur 2 années grégorienne , il y a certainement la possibilité d'avoir une fonction qui transforme une date grégorienne en date du calendrier musulman (mais bon , Access accepte-t-il les fonctions ? )
    Note bis : j'aime pas trop ces SELECTs imbriqués
    Note ter : il faut certainement tronquer le résultat pour n'en avoir que la partie entière , en dessous de 1899 les dates étant négatives . le résultat serait faux
    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

Discussions similaires

  1. Access 2007 vers sql
    Par skins dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/05/2009, 21h05
  2. Export Access 2007 vers SQL Server
    Par Mvu dans le forum Access
    Réponses: 6
    Dernier message: 22/05/2008, 09h22
  3. Réponses: 1
    Dernier message: 16/05/2008, 18h58
  4. Access 2007 et Sql Server 2005
    Par JérômeD. dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 01/08/2007, 17h36
  5. Migration Access 2007 vers SQL Server 2005
    Par hannii dans le forum Access
    Réponses: 4
    Dernier message: 28/02/2007, 16h06

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