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 :

[VB6] + MySql


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut [Résolu] [VB6] + MySql
    Salut à tous

    Voici mon problème...

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    'Déclaration de la variable associée à la connexion
    Dim cnx1 As ADODB.Connection
    'Instanciation
    Set cnx1 = New ADODB.Connection
     
    'Constantes liées à la connexion
    Const NomUtilisateur = "root"
    Const MotDePasse = ""
    Const NomServeur = "127.0.0.1"
    Const NomBaseDeDonnées = "ProjetRichet"
     
    'Définition de la chaîne de connexion
    cnx1.ConnectionString = "UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";" & "DRIVER={MySQL ODBC 3.51 Driver};Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";"
     
    'Ouverture de la base de données
    cnx1.Open
     
    Select Case CmbType
     
        Case "Sélectionnez le type de logiciel"
     
            MsgBox " Vous n'avez pas séléctionné type de logiciel !"
            Exit Sub
     
        Case "Comptabilité"
     
            CleType = 1
     
        Case "Systéme"
     
            CleType = 2
     
        Case "Antivirus"
     
            CleType = 3
     
        Case "Messagerie"
     
            CleType = 4
     
        Case "Développement"
     
            CleType = 5
     
        Case "Internet"
     
            CleType = 6
     
    End Select
     
     
    Select Case CmbEdit
     
        Case "Sélectionnez l'éditeur"
     
            MsgBox " Vous n'avez pas séléctionné d'éditeur !"
            Exit Sub
     
        Case "Microsoft"
     
            CleEdit = 1
     
        Case "Sun"
     
            CleEdit = 2
     
        Case "MicroApplication"
     
            CleEdit = 3
     
        Case "IBM"
     
            CleEdit = 4
     
    End Select
     
     
    sSql = "Insert into Logiciel(NomLog,NumEdit,NumTypeLog) values ('" & TxtNom & "', '" & CleType & "','" & CleEdit & "') "
    cnx1.Execute sSql
     
    sSql = "Insert into Licence(NumLic) values ('" & TxtLicence & "') "
    cnx1.Execute sSql
     
    cnx1.Close
    Donc là j'ai essayé de contourner le problème en utilisant un select case
    Sachant que cette "solution" est assez limitée ,j'aimerai savoir comment faire autrement pour obtenir la CléPrimaire de l'éditeur ou du logiciel...

    Merci de votre aide

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Utilise la propriété ListIndex de ton combo :
    - elle vaut -1 si le combo n'a pas été déroulé,
    - elle vaut 0 sur le premier élément, 1 sur le second, etc.

    N'hésite pas à mieux détailler ton problème. dans ce cas précis, c'était facile à comprendre, mais plus tu nous donnes de précisions, plus c'est facile pour nous de t'aider, et donc plus on a envie de t'aider

    Une remarque sur la requête Insert : il ne faut pas gérer les champs alphanumériques en les encadrant simplement de quotes. Il suffit que ton champ txtNom en contienne une pour que ton insertion plante ! Fabrique-toi une petite procédure qui dédouble les quotes dans ta chaîne et qui encadre ta chaîne par ces quotes (cf ici pour des exemples)
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    ok je vais tester ça dans la matiné merci beaucoup

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Merci Merci et Merci encore ça fonctionne


    Celà dit j'ai un autre problème... qui tiendrait plus de MySql que de vb

    voilà mon problème:

    Je dois attribuer à chaque micros un numéro d'installation (clé primaire de la table installation) j'ai donc fait cette requête qui ne fonctionne pas...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    cleMicro = cmbMicro.listindex
     
    sSql="INSERT INTO micros(NumInstall) SELECT NumInstall FROM installation WHERE installation.NumInstall=MAX(Installation.NumInstall) WHERE Micros.NumMicros='" & CleMicro & "' "

    Voilà en espérant avoir été suffisament précis

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Il y a un forum Langage SQL et éventuellement un forum MySql, qui sont plus dédié à ce type de problème, tu devrais y poster le tien, en précisant :
    - ta version de MySQL (en effet, ce langage n'accepte pas les sous-requêtes avant la version 4.1)
    - ton message d'erreur,
    - une version (simplifiée) de ton modéles de données.

    En tout cas ta requête d'INSERT est fausse, tu ne peux faire appel à un MAX que via un SELECT, et dans ta sous-requête, tu fais appel à un champs de la table Micros sans clause "FROM" ...

    Est-ce que ceci fonctionne ? Est-ce bien ce que tu veux insérer dans ta table Micros ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT NumInstall 
      FROM installation 
     WHERE NumInstall = (SELECT MAX(Installation.NumInstall) 
                           FROM Micros 
                          WHERE Micros.NumMicros = '" & CleMicro & "' "
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    merci j'essaye au plus vite...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Oui c'est exactement ça ...
    Reste plus qu'à savoir comment je l'insert dans la table Micros ...

  8. #8
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Xo
    Est-ce que ceci fonctionne ? Est-ce bien ce que tu veux insérer dans ta table Micros ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT NumInstall 
      FROM installation 
     WHERE NumInstall = (SELECT MAX(Installation.NumInstall) 
                           FROM Micros 
                          WHERE Micros.NumMicros = '" & CleMicro & "' "
    En relisant cette requête, je me dis qu'elle est fausse puisque dans la sous-requête, je fais appel à un champ Numinstall de la table Installation qui n'existe pas dans cette sous-requête

    Quelle est la requête qui fonctionne chez toi ? Celle-là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT NumInstall 
      FROM installation 
     WHERE NumInstall = (SELECT MAX(NumInstall) 
                           FROM Micros 
                          WHERE Micros.NumMicros = '" & CleMicro & "' "
    D'ou l'utilité de préciser son shéma de données

    Si la requête fonctionne, et qu'elle renvoie ce que tu souahites, tu peux ensuite l'encapsuler dans un INSERT comme tu l'as fait précédemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Micros (NumInstall) (Mon SELECT qui fonctionne)
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    en fait j'ai mis la requête entre parenthèse précédée d'un insert into et ça marche du tonnerre MERCI !!!!

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    En fait aprés réflexion ce serait plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    INSERT INTO micros(NumInstall) (SELECT MAX(NumInstall) FROM installation) WHERE Micros.NumMachine='" & CleMicros & "'
    Je test si ça fonctionne et je reviens

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Bon au risque de passer pour un gros débutant en SQL
    j'ai utiliser un INSERT INTO à la place d'un UPDATE

    Voici ma requête d'update (elle semble fonctionner )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE Micros SET NumInstall=(SELECT MAX(NumInstall) FROM installation) WHERE NumMachine='" & cleMicros & "'
    [/quote]

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Finalement la requête ne renvoie pas de message d'erreur mais elle ne modifie rien...

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

Discussions similaires

  1. [VB6][MYSQL] recuperer des données MySQL via PHP
    Par psykotox dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/01/2008, 11h25
  2. [VB6 MySQL / SQL Server]
    Par Essedik dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 31/03/2006, 23h08
  3. [VB6] MySQL Comment récupérer les données ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/02/2006, 14h58
  4. [Vb6]Mysql
    Par shaftJackson dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/02/2006, 13h39
  5. [VB6 + Mysql]Gestion des erreurs de connexion
    Par Deejoh dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 25/01/2006, 20h01

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