begin process at 2012 02 14 13:33:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Base de données

 > 

SQL

 > 

REQUETES SQL A CHOIX MULTIPLES


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

REQUETES SQL A CHOIX MULTIPLES

samedi 10 novembre 2007 à 10:43:38 | REQUETES SQL A CHOIX MULTIPLES

NICOLAS24112000

Bonjour à tous, je suis bloqué depuis pas mal de temps malgré de nombreuses recherches sur : comment "auto-écrire" des requêtes sql en fonction des choix de l'utilisateur.
En fait, dans un formulaire, je souhaiterais que l'utilisateur puisse faire des extractions en fonction des champs(ou critères) qu'il choisit. Et en fonction des champs choisis, la requête sql s'auto-écrit pour ensuite remplir le datagridview en cliquant sur le bouton recherche.
J'ai définit la requête de base : requete = "SELECT * FROM Affaire " ; ensuite si l'utilisateur choisit le champ "Nom" pour extraire les noms des clients et les afficher ds le datagridview en fonction du critère qu'il rentrera dans le textbox (nom), j'aimerais que la requête s'auto-écrit de la façon suivante : requete = "SELECT * FROM Affaire WHERE AND Nom like" & "'" & nom & "'".

Merci pour votre aide, j'espère que j'ai été clair; sinon j'expliquerais plus en détails.

Nico

samedi 10 novembre 2007 à 12:10:39 | Re : REQUETES SQL A CHOIX MULTIPLES

Exploreur

Membre Club

Salut,

Moi je ferais comme cela(à essayer) :

Option Explicit

Dim MyTypeSql1 As String
Dim MyTypeSql2 As String
Dim MyTypeSql3 As String
Dim Msg As String
Dim Requete As String


Private Sub Valider_Click()

If StrConv(Text1.Text, vbProperCase) = "Nom" Then
   Requete = MyTypeSql1
ElseIf StrConv(Text1.Text, vbProperCase) = "Prenom" Or StrConv(Text1.Text, vbProperCase) = "Prénom" Then
  Requete = MyTypeSql2
ElseIf StrConv(Text1.Text, vbProperCase) = "Age" Then
  Requete = MyTypeSql3
Else
  Msg = "Choix incorrect ! " & vbCrLf & _
             "Choix possible : " & vbCrLf & _
             " - Nom " & vbCrLf & _
             " - Prenom " & vbCrLf & _
             " - Age " & vbCrLf & vbCrLf

   MsgBox Msg
   Text1.Text = vbNullString
   Text1.SetFocus
   Exit Sub
  
End If

End Sub

Private Sub Form_Load()

MyTypeSql1 = "SELECT * FROM Affaire WHERE AND Nom like" & "'" & Text1.Text & "'"
MyTypeSql2 = "SELECT * FROM Affaire WHERE AND Prenom like" & "'" & Text1.Text & "'"
MyTypeSql3 = "SELECT * FROM Affaire WHERE AND Age like" & "'" & Text1.Text & "'"

End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

samedi 10 novembre 2007 à 13:18:07 | Re : REQUETES SQL A CHOIX MULTIPLES

NICOLAS24112000

Merci pour ta réponse rapide, mais en fait j'ai du mal m'expliquer.
Les critères de choix pour filtrer la base de données sont écris par l'utilisateur dans un des champs du datagridview1 suivant :

Me.DataGridView2.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Nom, Me.Prenom, Me.Ville})

Me .DataGridView2.Rows.Add() 'j'ajoute une ligne pour pouvoir saisir les critères de choix

Ensuite l'utilisateur rempli, soit le champ nom, prenom et/ou ville. Il clique sur bouton "Recherche" et dessous un datagridview2 se remplit suivant la requête. Pour savoir quels champs ont été rempli je fais :

PrivateSub Recherche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Recherche.Click
Dim requete, table AsString
Dim nom, prenom, ville As String
'attribution des variables string en fonction de champs du datagridview1
nom =
Me.DataGridView1.Item("Nom", 0).Value
prenom =
Me.DataGridView1.Item("Prenom", 0).Value
ville =
Me.DataGridView1.Item("Ville", 0).Value

'si aucun champ n'est rempli, on affiche toutes les données de la base dans datagridview2


If
nom IsNothingAnd prenom IsNothingAnd ville IsNothing  Then
requete = "SELECT * FROM Affaire"
table = "Affaire"
se_connecter(requete, table)

Else
If nom IsNotNothingThen
If prenom IsNotNothingThen
requete = "SELECT * FROM Affaire WHERE Nom like" & "'" & nom & "' AND ""WHERE Prenom like" & "'" & prenom & "'"
EndIf
requete = "SELECT * FROM Affaire WHERE Nom like" & "'" & nom & "'"
EndIf

If prenom IsNotNothingThen
If nom IsNotNothingThen
requete = "SELECT * FROM Affaire WHERE Nom like" & "'" & nom & "' AND ""WHERE Prenom like" & "'" & prenom & "'"
EndIf
requete = "SELECT * FROM Affaire WHERE Prenom like" & "'" & prenom & "'"
EndIf
table = "Affaire"
se_connecter(requete.ToString, table)
EndIf
End Sub

PrivateSub se_connecter(ByVal requete AsString, ByVal table AsString)
Dimbase, cheminAsString
'Chemin d'accès à la b.d. située dans le dossier bin
'chemin = Application.StartupPath & "\proprietaires.mdb"
chemin ="K:\CltAccess.mdb"
base ="provider=microsoft.jet.oledb.4.0;data source=" + chemin
DimconnexionAsOleDbConnection = NewOleDbConnection(base)
connexion.Open()
'Lien entre la base et la requête
DimLiaisonAsNew OleDbDataAdapter(requete, base)
DimMemoireAsNew DataSet()
'Charge la table en mémoire
Liaison.Fill(Memoire, table)
DimVue AsNewDataView(Memoire.Tables(table))
DataGridView2.DataSource = Vue
connexion.Close()
EndSub


Il s'agit juste d'un exemple pour 2 champs, mais le pb c'est que j'en ai au moins 25. Donc les possibilités sont énormes. Y-a-t-il un moyen pour faire + simple et prendre en compte les champs null ?
Merci
Nico
samedi 10 novembre 2007 à 16:09:44 | Re : REQUETES SQL A CHOIX MULTIPLES

NICOLAS24112000

Bon ben je m'en sors pas, voilà un aperçu pour essayer d'avoir toutes les possibilités (j'aimerais trouver comment faire pour automatiser les requêtes) : (j'ai remplacé le nom des champs par les numéro 1,2,3,4..... pour mettre dans le forum)

' tous les champs vides
If 1 = NothingAnd 2 = NothingAnd 3 = NothingAnd 4 = NothingAnd 5 = NothingAnd _
6 =
NothingAnd 7 = NothingAnd 8 = NothingAnd 9 = NothingAnd 10 IsNothingAnd _
11 
IsNothingAnd 12 IsNothingAnd 13 IsNothingAnd 14 IsNothingAnd 15 IsNothingAnd _
16 
IsNothingAnd 17 IsNothingAnd 18 IsNothingAnd 19 IsNothingAnd 20 IsNothingAnd _
21 
IsNothingAnd 22 IsNothingAnd 23 IsNothingAnd 24 IsNothingAnd 25 IsNothingThen
requete = "SELECT * FROM Client"
table = "Client"
se_connecter(requete, table)
EndIf
' champ 1 rempli et les autres vides
IfNot 1.ToString = NothingThen
If 2 = NothingAnd 3 = NothingAnd 4 = NothingAnd 5 = NothingAnd _
6 =
NothingAnd 7 = NothingAnd 8 = NothingAnd 9 = NothingAnd 10 IsNothingAnd _
11 
IsNothingAnd 12 IsNothingAnd 13 IsNothingAnd 14 IsNothingAnd 15 IsNothingAnd _
16 
IsNothingAnd 17 IsNothingAnd 18 IsNothingAnd 19 IsNothingAnd 20 IsNothingAnd _
21 
IsNothingAnd 22 IsNothingAnd 23 IsNothingAnd 24 IsNothingAnd 25 IsNothingThen
requete = "SELECT * FROM Client WHERE 1 IN (" & 1 & ") "
EndIf
EndIf
' champ 2 rempli et les autres vides
IfNot 2.ToString = NothingThen
If 1 = NothingAnd 3 = NothingAnd 4 = NothingAnd 5 = NothingAnd _
6 =
NothingAnd 7 = NothingAnd 8 = NothingAnd 9 = NothingAnd 10 IsNothingAnd _
11 
IsNothingAnd 12 IsNothingAnd 13 IsNothingAnd 14 IsNothingAnd 15 IsNothingAnd _
16 
IsNothingAnd 17 IsNothingAnd 18 IsNothingAnd 19 IsNothingAnd 20 IsNothingAnd _
21 
IsNothingAnd 22 IsNothingAnd 23 IsNothingAnd 24 IsNothingAnd 25 IsNothingThen
requete = "SELECT * FROM Client WHERE 2 IN (" & 2 & ") "
EndIf
EndIf

table ="Client"
se_connecter(requete, table)

Vous voyez, c'est indigeste et vraiment pas pro !!
Au secours !!!!
dimanche 11 novembre 2007 à 17:13:30 | Re : REQUETES SQL A CHOIX MULTIPLES

NICOLAS24112000

Toujours pas d'infos complémentaires ?

Je pense qu'il me faudrait en fait une "requête dynamique" dont le sql texte s'auto rempli en fonction des "champs critères" qui sont différents de Nothing.

J'ai vraiment besoin d'aide....

Merci


Cette discussion est classée dans : fonction, sql, utilisateur, choix, auto


Répondre à ce message

Sujets en rapport avec ce message

VB6 SQL Server [ par CHAHID ] Salut tout le mondeJ ai ecrit une fonction FC1 en vb et je veux l'introduire dans une requete sql par exemple :select champ1,chmp2,FC1(chmp3) from Nom Fonction! [ par couriousous ] ben c assez simple et en même temp compliqueé je voudrait savoir comment décoder une fonction que tappe un utilisateur dans une zone de text afin de Comment faire pour afficher une image en fonction du choix dans une listbox ? [ par Flit ] Voilà j'ai une Listbox (qui contient un TXT) et je voudrais que quand on clique sur un des differents "choix" de ce Listbox une image differente s'aff Afficher une form selon choix utilisateur [ par azf ] Bonjour.Comment résoudre le probleme suivent :je dispose d'un certain nombre de forms : formxx, formsyy, form aa, formvv................Ce que je souh Liste de choix [ par filou ] Salut le forum,Je veux faire une petite liste de selection non modifiable par l'utilisateur (saisie d'informations) J'ai essayé avec une combobox ! Av Question sur la Protection, Sécutité d'ACCESS. [ par Nitocris ] En faite je cherches une fonction qui me renverrai le group d'utilisateur auquel appartient mon userJe sais que la fonction Application.CurrentUserRen fonction sql [ par zak ] svp,je voudrais l equivalent de la fonction MID en db2merci Récursivité... Classe auto-référenciable [ par MarcoBrunelle ] Je devais simuler un arbre à l'aide de Type personnalisé, il s'avère qu'en VB, un type de ne pas avoir comme propriété, un objet de ce même type.Ex.:' sql fonction?? [ par bossun ] salut existe-t-il une fonction SQL qui me permette de séléctionner tout lesregistrements différents d'un champs.comme par ex la fonction count(distinc SQL fonction count [ par bossun ] salut,comment utilise-t-on la fonction count(distinct pour compter lesenretistrements différents d'un champs????J'ai une BD Access 2000j'ai essayérs.o


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales