Recherche MSAccess

Résolu
jefftokyo Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 5 février 2008 - 4 févr. 2008 à 14:37
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 5 févr. 2008 à 15:05
Bonjour. Je me lance dans VB 2005, je suis debutant. Desole si la question est triviale.
Je souhaite effectuer une recherche dans une base de donnees Access.
Je voudrais parametrer le nom de colonne de la table (variable Mode) et la chaine a rechercher dans cette colonne (variable Contenu). J ai cree une fonction pour generer la synthaxe de recherche SQL (MaRecherche).
J ai pense affecter le contenu d un textbox a ma variable Contenu et combobox a ma variable Mode.
Comme je clique sur un bouton "recherche" pour lancer la recherche, dans la subroutine recherchetoolstipbutton, je mets a jour Mode, Contenu et la syntaxe de recherche.
Dans le code du dataset j ai remplace le code de recherche par ma variable form.MaRecherche

Ce qui fonctionne:
- aucun message d erreur
- la table access est bien visualisee

Ce qui ne fonctionne pas
- si je clique sur le bouton recherche, la table est rafraichie avec mode ="chanson" et contenu="petit"
- ca signifie que le programme ne prend en compte que les valeurs initiales de mes variables
- pourtant le msgbox ajoute dans la routine recherchetoolstipbutton indique que ces variables ont bien change et sont egales aux contenus de textbox et combobox

J en conclus que je dois placer la variable MaRecherche (chaine SQL) a un autre endroit.
Mais mon probleme est, a quel endroit?

Merci.

Voici le code de mon formulaire:

Public

Class Playlist

Public Mode
As
String =
"Chanson"

Public Contenu
As
String =
"petit"

Public MaRecherche
As
String = TraductionSQL(Mode, Contenu)

Function TraductionSQL(
ByRef par1
As
String,
ByRef par2
As
String)

Return
"SELECT Numero, Repertoire, Chanson, Artiste, Fichier, Player, Favori" &
Global.Microsoft.VisualBasic.ChrW(13) &
Global.Microsoft.VisualBasic.ChrW(10) &
"FROM " & _

" Repertoire" &
Global.Microsoft.VisualBasic.ChrW(13) &
Global.Microsoft.VisualBasic.ChrW(10) &
"WHERE (" & par1 &
" LIKE '%" & par2 &
"%')"

End
Function

Private
Sub RepertoireBindingNavigatorSaveItem_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)

Me.Validate()

Me.RepertoireBindingSource.EndEdit()

Me.RepertoireTableAdapter.Update(
Me.KaraokeDBDataSet.Repertoire)

End
Sub

Private
Sub Playlist_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

'TODO : cette ligne de code charge les données dans la table 'KaraokeDBDataSet.Repertoire'. Vous pouvez la déplacer ou la supprimer selon vos besoins.

Me.RepertoireTableAdapter.Fill(
Me.KaraokeDBDataSet.Repertoire)

End
Sub

Private
Sub RechercheKaraokeToolStripButton_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles RechercheKaraokeToolStripButton.ClickMode = CBRecherche.Text

Contenu = TBRecherche.Text

MessageBox.Show(Mode &

" " & Contenu)MaRecherche = TraductionSQL(Mode, Contenu)

MessageBox.Show(MaRecherche)

Try

Me.RepertoireTableAdapter.RechercheKaraoke(
Me.KaraokeDBDataSet.Repertoire)

Catch ex
As System.ExceptionSystem.Windows.Forms.MessageBox.Show(ex.Message)

End
Try

End
Sub

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs) Handles Retour.ClickTBRecherche.Text "texte à rechercher"CBRecherche.Text

"chanson"

End
Sub

Private
Sub TBRecherche_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles TBRecherche.ClickTBRecherche.Text =

""

End
SubEnd

Class

3 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 févr. 2008 à 15:19
Salut,
dans un premier temps, essaies avec:
Function TraductionSQL(
ByVal par1
As
String,
ByVal par2
As
String)

Puis avec:
Function TraductionSQL(
par1
As
String,
par2
As
String)

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
3
jefftokyo Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 5 février 2008
5 févr. 2008 à 12:21
bonjour,

J'ai essaye mais ca ne change rien.
Merci quand meme.

JF.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 févr. 2008 à 15:05
Salut,
il ne fallait pas valider ma réponse si ton
problème n' est pas résolu.

En tout cas, si par1 est le nom du champ dans
le quel tu effectues la recherche, mets plutôt ceci:
... & "WHERE Repertoire.Fields(" & par1 &
")" & _
" LIKE '%" & par2 &
"%'"

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
0
Rejoignez-nous