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

VBScript Discussion :

Microsoft VBScript runtime error Type mismatch


Sujet :

VBScript

  1. #1
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut Microsoft VBScript runtime error Type mismatch
    Salut à tous,

    le compileur indique une faute au niveau de la boucle if(voir code ligne 30). Je ne comprend plus comment faire. Quelqu'un a-t-il une idee?

    Merci d'avance pour 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub connect_to_my_DB()
     
        Dim oCon, oRs
        Dim strCon, result
        Dim nonServeur
     
     
        nonServeur = "\\MonServeur"
     
     
        strCon = "DRIVER={Microsoft ODBC for Oracle}; SERVER="& myDb &";User Id="& myUser &";Password=" & monMotdePasse &";"
     
        Set oCon    = WScript.CreateObject("ADODB.Connection")
        Set oRs     = WScript.CreateObject("ADODB.Recordset") 'Select
     
     
        oCon.Open strCon
     
     
        Set oRs = oCon.Execute("SELECT count(*) FROM  MaTable " & _ 
                              "WHERE nomclient = 'TotalG' " & _   
                              "AND cast(temps as date) > (sysdate - 60) " )
     
     
     
        oRS.movefirst 
     
        result = oRs.Fields(0).Value
     
        if result = 0 then ' Faute à ce niveau
            envoieMail ' Appel de la fonction   envoieMail
        else 
            protokoll logfile, "**result:  " & result 
        End if
     
     
     
    oCon.Close             
    Set oRs = Nothing
    Set oCon = Nothing
     
     
     
    End sub

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    cela signifie que l'objet Field du recordset d'index 0 (la 1ère colonne) a un type incompatible avec le type variant numérique
    si tu insères ligne 27 ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox oRs.Fields(0).type
    tu récupèreras le type du champ qui est une constante DataTypeEnum dont tu trouveras la liste dans la doc ADO
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Salut omen999,

    j'ai ajouté ce que tu m'a dit et j'ai obtenu 139.

    Je ne comprend pas pourtant à la ligne 33 le resultat est corect, il presente count(*) = 6, resultat que j'obtient aussi en testan directement sur la base de donné.

    Merci
    fiona

  4. #4
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Salut,

    pouvez vous me dire comment faire pour sauvegarder le resultat du count(*) dans une variable?

    Merci d'avance
    Fiona

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Peut être result = Cint(oRs.Fields(0).Value)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Salut,

    j'ai toujours la faute "erreur de syntaxe" à la ligne 31 . je ne sais plus quoi faire.

    merci pour votre aide
    Fiona


    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
    30
    31
    32
    33
    34
    35
    36
    37
    Sub connect_to_my_DB()
     
        Dim oCon, oRs
        Dim strCon, result
        Dim nonServeur 
     
        nonServeur = "\\MonServeur"
     
     
        strCon = "DRIVER={Microsoft ODBC for Oracle}; SERVER="& myDb &";User Id="& myUser &";Password=" & monMotdePasse &";"
     
        Set oCon    = WScript.CreateObject("ADODB.Connection")
        Set oRs     = WScript.CreateObject("ADODB.Recordset") 'Select
     
     
        oCon.Open strCon
     
     
        Set oRs = oCon.Execute("SELECT count(*) FROM  MaTable " & _ 
                              "WHERE nomclient = 'TotalG' " & _   
                              "AND cast(temps as date) > (sysdate - 60) " )
     
        oRS.movefirst 
     
        'msgbox oRs.Fields(0).type
        'msgbox  CInt(oRs.Fields(0).Value)
     
        'result = oRs.Fields(0).Value
        countResult = CInt(oRs.Fields(0).Value)
     
        if result = 0 then envoieMail else protokoll logfile, "**result:  " & result  'Faute à ce niveau 
     
    oCon.Close             
    Set oRs = Nothing
    Set oCon = Nothing 
     
    End sub

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    (Re)Salut
    Si tu reprends le code de ton premier message, remplaces la ligne 28 par result = CInt(oRs.Fields(0).Value), dans un premier temps ne fais pas le If .... End If sur une seule ligne, cela permetra de savoir si c'est la condition ou l'action envoieMail else protokoll logfile, "**result: " & result qui pose problème.
    Quand tu mes plusieurs fois du code, conserves les mêmes noms de variables, car cela devient vite difficile à s'y retrouver.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre confirmé Avatar de Fiona08
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Par défaut
    Salut ProgElecT,

    merci pour ton aide. Fonctionne bien.

    Bye
    Fiona

    Citation Envoyé par ProgElecT Voir le message
    (Re)Salut
    Si tu reprends le code de ton premier message, remplaces la ligne 28 par result = CInt(oRs.Fields(0).Value), dans un premier temps ne fais pas le If .... End If sur une seule ligne, cela permetra de savoir si c'est la condition ou l'action envoieMail else protokoll logfile, "**result: " & result qui pose problème.
    Quand tu mes plusieurs fois du code, conserves les mêmes noms de variables, car cela devient vite difficile à s'y retrouver.

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

Discussions similaires

  1. error: type mismatch;
    Par xoum89 dans le forum Scala
    Réponses: 4
    Dernier message: 23/11/2011, 08h52
  2. Microsoft VBScript compilation error '800a03ea'
    Par celinebuff dans le forum ASP
    Réponses: 1
    Dernier message: 17/04/2008, 00h28
  3. [VBA-E] - run-time error "Type mismatch"
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/02/2007, 18h44
  4. Microsoft VBScript runtime error '800a01a8'
    Par marlene dans le forum ASP
    Réponses: 13
    Dernier message: 12/05/2005, 17h21
  5. Réponses: 2
    Dernier message: 19/04/2005, 15h31

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