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

Requêtes et SQL. Discussion :

Max d'1 champ Alphanumérique [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 25
    Points
    25
    Par défaut Max d'1 champ Alphanumérique
    Slt,
    À l'aide du générateur d'expression dans Access, je désire, trouver la valeur Max numérique (la maximale de toutes les valeurs numériques seulement) dans un champ alphanumérique (nommé FRS N°). Pour votre information le champ est du type texte.

    Merci pour votre précieuse Aide
    Mouna

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    salut,

    dans un premier temps, qu'as-tu déjà réussi à trouver comme filtre ?

    - savoir si une valeur de champs est un numérique ? voir IsNumeric()
    - "caster" un champ au format numérique ? voir Cdbl()
    - utiliser un opérateur dans le select ? voir le cours de SQLPro

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 25
    Points
    25
    Par défaut
    jpcheck, peut être que je me suis mal éxprimé:
    C’est que j'ai un champ "FRS N°" dans une table "Invoices", il représente les N° des enregistrements des invoices exemple d'information qu'il contient
    52455
    FRS25455
    AV45888
    36545
    ...etc
    Je désire faire apparaitre sur un formulaire le plus grand numéro numérique du champ "FRS N°" dans l'exemple qui précède c'est le 52455.
    merci de me donner l'expression qui me permettra d'avoir ce résultat (générateur d'expressions d'access) ?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    A mon avis, si ton champ ne contient pas de texte alpha, cette requête doit répondre à ta demande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Max(Val([MaTable].[MonChamp])) AS MaxDeMonChamp
    FROM MaTable;
    Sinon, il va falloir extraire la partie numérique de la valeur pour obtenir ton MAX avec par exemple cette fonction mais ça risque de ne pas être très optimal en performance.

    Le générateur d'expression est incapable d'effectuer cela...

    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
     
    Function GetInvoiceNumber(ByVal InvoiceNumber As String) As Long
    Const NUMERIC_CHARS                 As String = "0123456789"
    Dim C                               As Integer
    Dim strInvoiceNumber                As String
    Dim strChar                         As String
     
        On Error GoTo GetInvoiceNumber_Error
     
        For C = 1 To Len(InvoiceNumber)
            strChar = Mid$(InvoiceNumber, C, 1)
            If InStr(1, NUMERIC_CHARS, strChar) Then
                strInvoiceNumber = strInvoiceNumber & strChar
            End If
        Next
        GetInvoiceNumber = CLng(strInvoiceNumber)
     
        On Error GoTo 0
    GetInvoiceNumber_Exit:
        Exit Function
     
    GetInvoiceNumber_Error:
        GetInvoiceNumber = 0
        Resume GetInvoiceNumber_Exit
    End Function
    Ce qui donne alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Max(GetInvoiceNumber([MaTable].[MonChamp])) AS MaxDeMonChamp
    FROM MaTable;
    Pour info, lorsque je développe une application de gestion de factures, je pose toujours dans la table Orders et/ou Invoices un champ qui calcul la partie numérique du champ alpha en dynamique (si peu qu'un cahmp alpha soit demandé) et ce, au moment de la création de la pièce, ce qui fait que ce genre d'opération, telle que tu la demandes devient sans problème...

    Argy

    P.S. Évite les espaces dans les noms de champ

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 25
    Points
    25
    Par défaut Blocage sur la deuxième étape de la solution proposée par Argy
    merci bcp Argy, votre réponse a marché pour la fonction "GetInvoiceNumber", mais pour la deuxième tranche du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Max(GetInvoiceNumber([MaTable].[MonChamp])) AS MaxDeMonChamp
    FROM MaTable;
    il me renvoi #Erreur
    à votre avis pourquoi?

    Mouna

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Humm, là comme ça, il est probable que le champ examiné possède une valeur NULL ;

    Argy

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 52
    Points : 25
    Points
    25
    Par défaut
    Argy, c'est formidable, tout marche à la perfection.
    Merci encore une autre fois pour ton aide.

    Mouna

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

Discussions similaires

  1. select max sur champ alphanumérique ?
    Par clawhammer dans le forum SQL
    Réponses: 3
    Dernier message: 16/10/2006, 15h00
  2. rechercher le max d'un champ sur 2 tables
    Par rdams dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2006, 13h27
  3. [FB] longueur max d'un champ unique sous forebird = 80 ?!
    Par moucrack dans le forum Débuter
    Réponses: 3
    Dernier message: 06/09/2005, 23h50
  4. sélection d'un max parmi plusieurs champs
    Par invitésuprise dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/08/2005, 13h49
  5. Réponses: 6
    Dernier message: 28/12/2004, 16h09

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