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 :

Dans une requête convertir un champ texte en numerique [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 22
    Points
    22
    Par défaut Dans une requête convertir un champ texte en numerique
    Bonjour à tous.

    Dans une requête j'ai plusieurs champs numérique. exemple Champ1 : champ2: champ3. etc....
    Ces champ sont trier par une fonction Trie (ci-dessous)
    Dans la même requête les champ sont donc trier: Champ_1: trie("1";[Champ1];[Champ2];[Champ3]) autre champ Champ_2: trie("2";[Champ1];[Champ2];[Champ3]) et Champ_3: trie("3";[Champ1];[Champ2];[Champ3]).

    Comment faire pour que Champ_1 et Champ_2 et Champ_3 soit en format numérique car actuellement il sont en Texte.

    Merci de votre aide.

    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
    Function Trie(ordre As Variant, ParamArray x() As Variant) As Variant
    Dim y As Variant
    Dim Tempo As Variant
    Dim boucle As Long
    Dim boucle2 As Long
    y = x()
    For boucle = 0 To UBound(x)
        For boucle2 = boucle + 1 To UBound(x)
            If y(boucle2) < y(boucle) Or IsNull(y(boucle2)) Then
                Tempo = y(boucle2)
                y(boucle2) = y(boucle)
                y(boucle) = Tempo
            End If
        Next boucle2
    Next boucle
    If IsNumeric(ordre) And ordre <= UBound(y) + 1 And ordre > 0 Then
        Trie = y(Int(ordre) - 1)
    Else
        Tempo = ""
        For boucle = 0 To UBound(y)
            If IsNull(y(boucle)) Then
                Tempo = Tempo & "null" & "/"
            Else
                Tempo = Tempo & y(boucle) & "/"
            End If
        Next boucle
        Trie = Left(Tempo, Len(Tempo) - 1)
    End If
    End Function

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Si x est un nombre sous format "Texte", alors :
    Clng(x) donne un nombre entier
    CDbl(x) donne un nombre réel
    CCur(x) donne un nombre en devise

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 647
    Points : 14 624
    Points
    14 624
    Par défaut
    bonjour,
    Citation Envoyé par Zekraoui_Jakani
    CCur(x) donne un nombre en devise
    précision: plus exactement cela donne un nombre réel limité à 4 décimales.
    Ce type de champ est couramment utilisé pour stocker les montants et les quantités mais cela ne veut pas dire que cela retourne un montant en devises.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 22
    Points
    22
    Par défaut Non expert en module
    Bonjour,
    Merci de votre aide.
    Je ne suis pas expert. Comment modifier le module pour intégré (Clng(x) donne un nombre entier)

    Merci

  5. #5
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Avant la ligne contenant "boucle"
    ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim j as long
     
    For j = LBound(x) to UBound(x)
        x(j)=Int(x(j))
    Next j

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/04/2010, 13h36
  2. Réponses: 1
    Dernier message: 24/03/2010, 19h07
  3. Comment faire une requête entre un champ text et un champ integer
    Par beegees dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/12/2008, 11h52
  4. Critères avec opérateurs dans une requête avec des champs calculés
    Par lmollard dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/05/2008, 18h53
  5. Déterminer dans une requête si un champ existe
    Par guidav dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/12/2007, 13h51

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