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 :

[VBS] Select sur base SQL


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [VBS] Select sur base SQL
    Bonjour,
    J'utilise une base SQL via PhpMyAdmin pour autoriser la connexion réseau d'imprimantes par rapport au nom des postes.
    La base est faite de cette manière:
    192.168.xx.xx/localhost/locationposte/location

    - locationposte
    - - - location
    - - - - - Colonnes
    - - - - - - - - DefaultPrinter
    - - - - - - - - 2ndPrinter
    - - - - - - - - 3rdPrinter
    - - - - - - - - 4thPrinter
    - - - - - - - - 5thPrinter
    - - - - - - - - ClientName
    - - - - - Index
    - - - - - - - - ClientName

    A l'aide de la requête suivant, je récupère les postes qui utilisent une imprimante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM location
    WHERE ( `DefaultPrinter` LIKE '%lonspruacaseca%')
    OR ( `2ndPrinter` LIKE '%lonspruacaseca%')
    OR ( `3rdPrinter` LIKE '%lonspruacaseca%')
    OR ( `4thPrinter` LIKE '%lonspruacaseca%')
    OR ( `5thPrinter` LIKE '%lonspruacaseca%')
    J'aimerais simplifier la tâche par un script VB via un inputbox par exemple!
    Voilà ce que j'ai commencé:

    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
    dim objCon
    dim strCon
     
    dataSource = "192.168.xx.xx" 
    initialCatalog = "locationposte"
    tableName = "location"
    columnName = "DefaultPrinter"
    columnName2 = "2ndPrinter"
    columnName3 = "3rdPrinter"
    columnName4 = "4thPrinter"
    columnName5 = "5thPrinter"
    'Index = ClientName
    userId = " " 'Nom d'utilisateur
    password = " " 'mot de passe
     
    'Connection
    Set objCon = CreateObject("ADODB.Connection")
     
    'Authentication
    objCon.ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=" & dataSource & _
    						  "; PORT=3306;" & _
    						  "DATABASE=" & initialCatalog & _
    						  "; USER=" & userId & _
    						  "; PASSWORD=" & password & _
    						  "; OPTION=3;"
     
    objCon.Open
     
    strCon = "SELECT * FROM " & Tablename & "WHERE" & columnName & "or" & columnName2 & "or" & columnName3 & "or" & columnName4 & "or" & columnName5
    Je ne suis pas très à mon aise, un peu d'aide svp?
    Dernière modification par Invité ; 13/09/2017 à 08h25.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je progresse doucement.
    J'arrive à établir la connexion et requêter ma BDD MySQL depuis mon vbs.
    Avec le bon connecteur ODBC ça va tout de suite mieux.
    Je ne parviens pas à récupérer depuis mon "PrinterName" la liste des "ClientName" concernés.
    J'ai tenté une 1er approche en essayant dans un premier temps de récupérer déjà l'imprimante par défaut (Voire Code mis en commentaire).
    Je ne m'en sort pas! Un petit coup de pouce serait le bienvenue.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    OPTION Explicit
     
    Dim dataSource, initialCatalog, tableName, userId, password 
     
    Dim Connection
    Dim ConnectionString
    Dim Recordset
    Dim SQL
    Dim strValue
    Dim port
    Dim columnName1
    Dim PrinterName
     
    dataSource = "192.168.xx.xx" 
    initialCatalog = "locationposte"
    tableName = "location"
    userId = "xxxx" 
    password = "xxxx"
    port = "3306" 
    columnName1 = "DefaultPrinter"
    PrinterName = "Imprimante1"
     
     
    SQL = "SELECT * FROM " & tableName
    'SQL = "SELECT * FROM " & tableName & " WHERE ('" & columnName1 & "' LIKE '%" & PrinterName & "%')"
     
     
    ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=" & dataSource & _
    					";PORT=" & port & _
    					";DATABASE=" & initialCatalog & _
    					";UID=" & userId & _
    					";PASSWORD=" & password &_
    					";OPTION=3"
     
    Set Connection = CreateObject("ADODB.Connection")
    Set Recordset = CreateObject("ADODB.Recordset")
     
    Connection.Open ConnectionString
     
    Recordset.Open SQL,Connection
     
    If Recordset.EOF Then
    MsgBox "erreur"
    Else
     
    Do While NOT Recordset.Eof   
    	strValue = RecordSet.Fields("DefaultPrinter").Value 
    	'strValue = RecordSet.Fields("ClientName").Value  
    	Recordset.MoveNext 
    Loop
    End If
    MsgBox strValue
     
    Recordset.Close
    Set Recordset=nothing
    Connection.Close
    Set Connection=nothing

  3. #3
    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
    As tu un message d'erreur ?
    Utilises tu une gestion d'erreur type On Error Resume Next dans cette partie de ton code ?

    Il faudrait savoir si ton recordset est ouvert suite à Recordset.Open SQL,Connection
    Pour cela il faut lire la propriété State du recordset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Recordset.Open SQL,Connection
    If Recordset.State = 0 Then MsgBox "Recordset fermé"
    If Recordset.State = 1 Then MsgBox "Recordset ouvert"
    If Recordset.EOF Then MsgBox "Recordset ne renvoi aucun enregistrement"
    Si Recordset ouvert mais Recordset ne renvoi aucun enregistrement, on saura que c'est la rédaction de la requête qui n'est pas bonne.
    :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 ← ← 👈

  4. #4
    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
    De plus, es tu sur de ton ConnectionString
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ConnectionString = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=" & dataSource & _
    					";PORT=" & port & _
    					";DATABASE=" & initialCatalog & _
    					";UID=" & userId & _
    					";PASSWORD=" & password &_
    					";OPTION=3"
    Je penserai plus à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ConnectionString = "DRIVER=(MySQL ODBC 5.3 ANSI Driver); SERVER=" & dataSource & _
    					";PORT=" & port & _
    					";DATABASE=" & initialCatalog & _
    					";UID=" & userId & _
    					";PASSWORD=" & password &_
    					";OPTION=3"
    :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 ← ← 👈

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut ProgElecT
    Sympa de prendre le temps de te pencher sur mon problème
    Mon ConnectionString fonctionne bien avec les accolades mais plus avec les parenthèses.
    La gestion d'erreur me dit que le Recordset et bien ouvert est qu'il ne renvoi aucun enregistrement puis le MsgBox "erreur" du If Recordset.EOF Then s'affiche .
    Dernière modification par Invité ; 14/09/2017 à 12h47.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu avais raison la rédaction de la requête qui n'est pas bonne.
    Remplacement des apostrophes par des "accents grave" autour de DefaultPrinter (`" & columnName1 & "`).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * FROM " & tableName & " WHERE ('" & columnName1 & "' LIKE '%" & PrinterName & "%')"
    Remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT * FROM " & tableName & " WHERE (`" & columnName1 & "` LIKE '%" & PrinterName & "%')"

    Cette foi je coince sur l'appel de mon strValue lié cette requette.
    J'ai plusieurs " ClientName" qui peuvent avoir la même imprimante par défaut `DefaultPrinter`.
    Et idem pour `2ndPrinter`, `3rdPrinter`, `4thPrinter`, `5thPrinter`
    Je ne vois pas trop comment traiter successivement les différentes imprimantes et ce pour chaque ClientName

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

Discussions similaires

  1. Recherche à la google sur base SQL SERVER
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 09/08/2006, 18h12
  2. application access sur base sql server
    Par souma dans le forum Access
    Réponses: 1
    Dernier message: 05/05/2006, 09h11
  3. Requete SQL sur base SQL Server VB6
    Par Yanmeunier dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/11/2005, 12h30
  4. Connexion automatique sur base SQL (Login/pass mémorisé)
    Par Fredo67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2005, 16h24
  5. Requete ASP sur Base SQL
    Par smast2005 dans le forum ASP
    Réponses: 8
    Dernier message: 22/02/2005, 11h03

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