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 :

Requete qui ne passe pas sous Oracle


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut Requete qui ne passe pas sous Oracle
    Hello,

    Voila j'ai une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Case When CLIENT.CODE_FOURNISSEUR=9998 Then 1 Else Case When CLIENT.CODE_FOURNISSEUR=999 Then 2 Else 0 End End AS TYPE FROM FOURNISSEUR WHERE IDFOURNISSEUR=11747667
    Cette requête passe trés bien sous TOAD mais sous VB6 ça ne passe pas.
    j'ai un message type "MOT CLEF ABSENT"
    Le provider c'est OraOledb.Oracle.1 (Oracle 9i).

    Qq aurez t il une idée ?

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Je n'est jamais utilisé de BD Oracle je vais donc propser une grosse betise, mais je propose sa quand même, pour faire avancer le chimilibilic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim MeRequete As String
    MeRequete = "SELECT "
    If CLIENT.CODE_FOURNISSEUR = 9998 Then MeRequete = MeRequete & "1"
    If CLIENT.CODE_FOURNISSEUR = 999 Then MeRequete = MeRequete & "2"
    If MeRequete = "SELECT " Then
     '????
     Else
     MeRequete = MeRequete & " FROM FOURNISSEUR WHERE IDFOURNISSEUR = 11747667"
     'ouverture de la table suivant cette requête ?
     MeRecod.Open MeRequete & " ", CheminDataBase, adOpenStatic, adLockPessimistic
    End If
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je travaille aussi un peu sur Toad, ce logiciel est crée par Oracle, donc il intégré les fonctions du SQL Oracle.

    Je n'ai pas regardé dans le détail, mais je pense que tu dois être obligé de passer par une solution comme ce que te propose ProgElecT.

    Mais ta requête pour qu'elle soit valide doit être exécuter par le moteur Oracle, hors là c'est le moteur VB que tu vas prendre.

    Starec

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    Le pb c'est que je ne connais pas le code avant de faire la requête.
    Grosso merdo il faut que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim MySQLRequest as String
    MySQLRequest="SELECT Case When CLIENT.CODE_FOURNISSEUR=9998 Then 1 "
    MySQLRequest=MySQLRequest & "Else Case When CLIENT.CODE_FOURNISSEUR=999 Then 2 "
    MySQLRequest=MySQLRequest & "Else 0 End End AS TYPE "
    MySQLRequest=MySQLRequest & "FROM CLIENT"
     
    MeRecod.Open MySQLRequest , CheminDataBase, adOpenStatic, adLockPessimistic
    En fait la requête est plus complexe que cela, il y d'autre champ, un tri etc.
    Mais je sais bien que c'est le Case... qui coince.

    Effectivement ya du PLSQL et avec TOAD ça passe bien.
    Je ne comprends pas pk ça passe pas avec VB6 puisque j'utilise le connecteur "Oracle Provide for OLEDB" fournit par Oracle.

    Sinon peut être en plaçant tout ça dans une Proc.Stock...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Je suis d'accord sur le principe, malheureusement, VB6 ne pourra interpréter le PL/SQL, il faut que tu restes sous une form basic, et comme l'exemple plus haut passé par du VB.

    Effectivement si tu passes par une procédure stockée cela devrait aller, car tu mets ta vue sur Oracle qui interprétera le PL/SQL.
    En théorie cela passe, car c'est le serveur Oracle qui effectuera le traitement (d'ailleurs celui-ci sera plus rapide sur Oracle).

    Starec

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    Je ne comprends pas pk ça ne passe pas à partir du moment où le fournisseur de données est le bon... Ce serait à cause de OleDb... bon, je vais faire autrement alors.

    Je bosse aussi su VB.Net 2005, je me demande si cette requête passe avec le fournisseur intégré pour Oracle.
    Je vais tester.

    Merci des conseils

    [EDIT]

    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
            Using cmd As Data.OracleClient.OracleCommand = CType(ActiveSqlCon.CreateCommand, OracleClient.OracleCommand)
     
                Dim MySQLRequest As String
                MySQLRequest = "SELECT Case When CLIENT.CODE_FOURNISSEUR=999 Then 1 "
                MySQLRequest = MySQLRequest & "Else Case When CLIENT.CODE_FOURNISSEUR=999687967 Then 2 "
                MySQLRequest = MySQLRequest & "Else 0 End End AS TYPE "
                MySQLRequest = MySQLRequest & "FROM CLIENT "
                MySQLRequest = MySQLRequest & "WHERE CLIENT.IDCLIENT=11760505 "
                cmd.CommandText = MySQLRequest
                cmd.CommandType = CommandType.Text
     
                Using SqlReader As OracleDataReader = cmd.ExecuteReader
                    While SqlReader.Read
                        MsgBox(SqlReader.Item("TYPE"))
                    End While
                End Using
    End Using
    Passe trés bien sous VB.Net

    [EDIT]

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Attention, il me semble que le fournisseur te permet juste de créer un passerelle pour les données.
    Je ne suis pas trop calé sur ce sujet, soit je fais du Oracle seul avec Forms, ou j'attache les tables Oracle dans une Base Access et je programmes sous Access.

    Désolé de ne pouvoir t'en dire plus, voici un petit bout de code de la FAQ Access http://access.developpez.com/faq/?pa...l#OraProcStock

    Starec

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    J'ai edité mon post et sous .Net ça passe trés bien...
    C'est quand même rageant

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    dans ton code dotnet tu utilises une ADO.Command, alors que dans ton code VB6 tu passes par le recordset (.open) conventionnel.

    Essaye avec le command en vb6, ça devrait marcher aussi

Discussions similaires

  1. sous-menu qui ne passe pas sous le menu
    Par Riwalenn dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/08/2010, 11h37
  2. [MySQL] condition avec requete qui ne marche pas ..sous ie
    Par esti89 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/06/2008, 09h53
  3. [MYSQL 5] Requete qui ne passe pas?
    Par sirbaldur dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/11/2006, 15h01
  4. myform.submit() qui ne passe pas sous IE
    Par narnou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/03/2006, 14h42
  5. un truc qui ne passe pas sous firefox ...
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 39
    Dernier message: 08/11/2005, 15h59

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