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 :

Cast un champ dans une requête SQL


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2019
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Cast un champ dans une requête SQL
    Bonjour,

    Je souhaite effectuer une requête sur une base de données MySQL sur serveur distant. Voici mon code :

    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
    Sub LireData()
     
        Sheets(1).Columns("A:E").ClearContents
        Sheets(1).Columns("A:E").NumberFormat = "dd/mm/yyyy hh:mm:ss"
        Dim Rs As ADODB.Recordset
        Dim Derligne As Long, i As Integer
        Dim Requete As String
        Dim col As Integer
        Dim S As String
        Set oConnect = New ADODB.Connection
        Set Rs = New ADODB.Recordset
        S = "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
            "SERVER=XX.XX.XX.XX;" & _
            "DATABASE=XXX;" & _
            "USER=XXX;" & _
            "PASSWORD=XXX;" & _
            "Option=3"
        oConnect.Open S
     
        Sql = "SELECT num_valeur FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())"
        Set Rs = oConnect.Execute(Sql)
     
     
            Sheets(1).Range("A1").CopyFromRecordset Rs
     
        oConnect.Close
        Set Rs = Nothing
    End Sub
    Je suis au courant que cela n'est pas propre, je m'en occuperai à la fin.

    Le champ num_valeur est de type Text dans ma base de données. Telle quelle, la requête ne renvoie rien. En ajoutant des champs de type date, par exemple ou encore varchar, je ne récupère que ces deux colonnes. Je suppose donc que le VBA n'arrive pas à extraire mon champ qui est de type Text.

    Je cherche à convertir mon champ dans la requête, j'ai testé les solutions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sql = "SELECT CAST(num_valeur as NCHAR) FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())" ' Ce qui fonctionne lorsque je fais la requête directement sur excel (Données, connexion, etc...)
    Sql = "SELECT Cstring(num_valeur) FROM XXX.m5tcyrubi WHERE num_date REGEXP date(now())" ' ???
    Les deux formulations me renvoie l'erreur suivante :

    Erreur d'exécution '-2147217900 (80040e14)':
    Erreur Automation
    Je ne comprends pas l'erreur, sachant que lorsque je n'essaie pas le cast, je n'ai pas de message d'erreur, je suppose qu'elle apparaît au moment du cast.

    Quelle est la bonne formulation pour cast mon champ, ou, si je me suis trompé dans ma déduction, pourquoi mon champ num_valeur n'est pas récupéré par cette requête ?

    Merci par avance de votre aide.
    Cordialement,
    Teckyl.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2019
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Petit update :

    La fonction à l'air de fonctionner, mais seulement une fois sur 20. Après test, je récupère bien les données que je souhaite (les 3 colonnes) avec un Cast(num_valeur as signed).

    Cependant, 19 fois sur 20 la fonction me retourne l'erreur.

    Si quelqu'un sait d'où cela pourrait venir...

Discussions similaires

  1. [AC-2007] Calcul d’1 champ dans une requête SQL selon différents critères
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/04/2011, 16h44
  2. récupérer champs dans une requéte sql.
    Par Syphys dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 16/08/2010, 14h38
  3. [AC-2007] Récupérer le nom d'un champ dans une requête SQL
    Par othke dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/03/2010, 18h48
  4. [MySQL] Ajouter un champ dans une requête SQL Insert
    Par beegees dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/11/2008, 14h24
  5. Réponses: 5
    Dernier message: 28/12/2006, 15h41

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