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

VB 6 et antérieur Discussion :

Deux méthodes SQL dont une ne fonctionne pas ?


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Deux méthodes SQL dont une ne fonctionne pas ?
    Bonjour,

    J'essaie de pointer directement sur une base SQL dans un AS400. La première méthode fonctionne (la requête SQL est bonne), la même requête dans une autre méthode ne fonctionne pas ?
    Qui peut mé'aider ?

    PREMIERE METHODE

    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
    Dim as400 As New cwbx.AS400System
    Dim dlr As New cwbx.DatabaseDownloadRequest
    Dim dt As New cwbx.DatabaseTransfer
     
    as400.Define "11.1.16.1"
     
    Set dlr.system = as400
    dlr.AS400File = "mvxcdta500/mpdmat,"
     
    dlr.pcFile = "C:\Temp\APPROS_TEMP00.xls"
    dlr.pcFile.FileType = cwbdtBIFF8
     
    dlr.QueryDataTransferSyntax = False
     
    dlr.Query = "SELECT MPDMAT.PMMSEQ,MPDMAT.PMSTRT,MPDMAT.PMPRNO FROM MVXCDTA500/MPDMAT " _
    & "WHERE MPDMAT.PMSTRT = 'ETU' AND MPDMAT.PMPRNO= 'SM01012193A' " _
    & "ORDER BY MPDMAT.PMMSEQ"
     
    dlr.Download
    SECONDE METHODE
    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
     
    Dim CnnAs400 As ADODB.Connection
    Dim RsAs400 As ADODB.Recordset
    Dim Cnndb As New ADODB.Connection
    Dim Rsdb As New ADODB.Recordset
    Dim Champ1, Champ2 As String
    Dim Champ3, Champ4, Champ5, Champ6 As Variant
    Dim i As Integer
     
    Set CnnAs400 = CreateObject("ADODB.connection")
    CnnAs400.Open "provider=IBMDA400;data source=11.1.16.1", "Login", "password"
     
    Set RsAs400 = CreateObject("ADODB.recordset")
    RsAs400.ActiveConnection = CnnAs400
     
    strSql = "SELECT MPDMAT.PMMSEQ,MPDMAT.PMSTRT,MPDMAT.PMPRNO FROM MVXCDTA500/MPDMAT " _
    & "WHERE MPDMAT.PMSTRT = 'ETU' AND MPDMAT.PMPRNO= 'SM01012193A' " _
    & "ORDER BY MPDMAT.PMMSEQ"
     
    RsAs400.Open strSql

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Points : 178
    Points
    178
    Par défaut
    Quel est ton problème au juste? Vérifie d'abord que la connection se fait bien. Ensuite mets des lignes de debug pour connaitre les valeurs des tes variables
    Voilà comment j'écrirais cette fonction...
    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
    Private Function returnRS() As ADODB.Recordset
    Dim cnnAs400 As New ADODB.Recordset
    Dim cmd As New ADODB.Command
    Dim strsql As String
     
    strsql = "SELECT MPDMAT.PMMSEQ,MPDMAT.PMSTRT,MPDMAT.PMPRNO FROM MVXCDTA500/MPDMAT " & _
            "WHERE MPDMAT.PMSTRT = 'ETU' AND MPDMAT.PMPRNO= 'SM01012193A' " & _
            "ORDER BY MPDMAT.PMMSEQ"
     
    cnnAs400.Open "provider=IBMDA400;data source=11.1.16.1", "Login", "password"
    cmd.ActiveConnection = cnnAs400
    cmd.CommandTimeout = 0
    cmd.CommandType = adCmdText
    cmd.CommandText = strsql
     
    Set returnRS = cmd.Execute
    Set cmd = Nothing
    Set cnnAs400 = Nothing
    End Function
    Bien à toi.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Ok merci j'ai trouvé une erreur dans la syntaxe de la macro ce qui faisait que cela bloquer au niveau de l'execution de la requete.
    Le passage par un recordset était plus lent que ta solution que j'ai adopté.

    Merci à tous.

    Cordialement

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

Discussions similaires

  1. SQL select like ne fonctionne pas sur une base csv
    Par MisterJeanP dans le forum MkFramework
    Réponses: 2
    Dernier message: 07/08/2014, 23h19
  2. Réponses: 4
    Dernier message: 20/09/2011, 01h04
  3. Réponses: 2
    Dernier message: 25/09/2006, 14h04
  4. [Conception] Deux codes identique mais un qui fonctionne pas
    Par fabrice88 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/08/2006, 18h25
  5. [SQL] ma requette ne fonctionne pas
    Par nebil dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 16/07/2006, 17h29

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