CREATION REQUETE SQL

Résolu
winvsmac Messages postés 84 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 14 décembre 2016 - 16 mars 2008 à 20:27
dimitriusai Messages postés 76 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 7 mai 2009 - 16 mars 2008 à 21:10
Bonjour à tout le monde de VBFrance !

J'aurai besoin d'un coup de main ! Environnement VB6.

J'ai un formulaire qui comprend les champs suivants :

J'ai déjà passé bcp de temps à monter ma requete SQL mais je n'y arrive pas.

Je dois monter ma requete mais comment faire si plusieurs champs sont renseignés.
Exemple : si l'utilisateur choisi OUI sur le champ Photo, M sur le champ sexe et CNIL OUI, comment monter la requete.

Comment monter la requete SQL en testant les champs un par un ?

J'espere que je suis assez clair. Merci pour votre aide.
Jerome

2 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
16 mars 2008 à 21:05
Salut,

Si tu veux tester tes champs un par un il te faudras faire une requête à chaque fois...Par contre tu peux faire une concaténation de recherche dans ta requête avec l'opérateur AND

Un petit cours sur les requêtes ??? Alors par ici
A+
Exploreur

 Linux a un noyau, Windows un pépin

Un jeu en flash sympa...? Voir ici
Si vous voulez vous inscrire
mettez comme parrain : exploreur
3
dimitriusai Messages postés 76 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 7 mai 2009 1
16 mars 2008 à 21:10
Si je comprend bien tu veux faire une recherche en fct de plusieurs éléments.

Voici comment je ferrais
MySQL_Query("SELECT * FROM `vdlb_perf_history` WHERE server '" + var1 + "' AND ip '" + var2 + "' ORDER BY id DESC LIMIT 10 ")

N'hésite pas si j'ai mal compris ta question.

Je peux te proposer ci dessous une classe que j'ai adapté à mes besoins pour tt requetes sql :

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Imports MySql.Data.MySqlClient

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'   Class VDLB permet de créer la MysqlConnection, de lui passer en paramètre la requête sql et de fermer la connection     '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Class maclassemysql
    'Vars SQL
    Dim connStr As String
    Dim myConnection As New MySqlConnection
    Dim DB_Connection As New MySqlConnection
    Dim MySQLCmdCount As String

    Public ConnectionStatus = True

    'Création de l'instance.
    Public Sub New(ByVal SQL_serverLoc, ByVal SQL_useridLoc, ByVal SQL_passwordLoc, ByVal SQL_DATABASELoc)
        'Mise des variables de connexion en blob.

        If (CreateMySQLConnection(SQL_serverLoc, SQL_useridLoc, SQL_passwordLoc, SQL_DATABASELoc)) Then
            Console.WriteLine("Connexion ouverte TRUE")
            ConnectionStatus = True
        Else
            Console.WriteLine("Connexion ouverte FALSE")
            ConnectionStatus = False

        End If

    End Sub

    'Initialisatin de la connexion SQL.
    Public Function CreateMySQLConnection(ByVal SQL_server, ByVal SQL_userid, ByVal SQL_password, ByVal SQL_DATABASE) As Boolean
        Try
            connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false", SQL_server, SQL_userid, SQL_password, SQL_DATABASE)
            Dim myConnection As New MySqlConnection(connStr)
            'Dim DB_Connection As New MySqlConnection.
            DB_Connection.ConnectionString = connStr
            DB_Connection.Open()
            Console.WriteLine("Connexion ouverte")
            Return True
        Catch ex As Exception
            Console.WriteLine(ex.Message)
            Return False
        End Try

    End Function

    'Fonctions de QUERY SQL.
    Public Function MySQL_Query(ByVal Command As String) As ArrayList
        Dim Result As New ArrayList()

        Try

            MySQLCmdCount = Command
            Dim SelectCommand = New MySqlCommand(MySQLCmdCount, DB_Connection)
            Dim oReader As MySqlDataReader = SelectCommand.ExecuteReader()

            'Mise dans un Array des résultats de la requête.
            While oReader.Read()
                Dim ResultQuery As New ArrayList()
                For i As Integer = 0 To oReader.FieldCount - 1
                    ResultQuery.Add(oReader.Item(i))
                Next
                Result.Add(ResultQuery)
            End While
            oReader.Close()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

        Return Result
    End Function

    'Fermeture de la connexion SQL.
    Public Sub CloseClass()
        DB_Connection.Close()
        Console.WriteLine("Connexion fermée")
        'clos le port 3333 (mysql).
    End Sub

End Class


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Comment l'utiliser ?

 Dim MysqlResult1 As New ArrayList() Pour récuperer les donnéers
 Dim mysql_class_VAR1 As New maclassemysql(serveurtxt, usertxt, passtxt, databasetxt)  On instancie la classe
 'Requête MySql. MysqlResult1 mysql_class_VAR1.MySQL_Query("SELECT * FROM `vdlb_perf_history` WHERE server '" + var1
+ "' AND ip = '" + var2 + "' ORDER BY id DESC LIMIT 10 ")

'On récupère la première ligne MysqlResult1(0) avec le première Item(0) dans result1

MysqlResult1(0)item(0) pour récupérer la premiuère valeur etc.

Si ta table compte trois champ tu les récupreras comme ceci : 
Dim var1 as ..... = MysqlResult1(0)item(0)
Dim var2 as ..... = MysqlResult1(0)item(1)
Dim var3 as ..... = MysqlResult1(0)item(2)

Si la réponse de ta requete contient plusieurs enregistrements, alors il te suffire de mettre 1, 2 etc.

Ps : pour savoir le nombre d'enregistrement, utilise MysqlResult1. Count
3
Rejoignez-nous