Comparaison avec base de donnée [Résolu]

Signaler
Messages postés
153
Date d'inscription
dimanche 4 mars 2007
Statut
Membre
Dernière intervention
24 avril 2011
-
Messages postés
153
Date d'inscription
dimanche 4 mars 2007
Statut
Membre
Dernière intervention
24 avril 2011
-
Bonjour, alors il m'arrive un petit problème, j'aimerais comparer deux mots. Plus précisément, il y a une liste de mot dans une base de donnée access, je tappe un mot dans un textbox et je voudrais comparer avec tout ceux qu'il y a dans une base de donnée access, et si il y a exactement le même dans cette base de donnée alors par exemple j'affiche un icone...
Je ne voix pas du tout comment il faudrait faire, est ce que quelqu'un peut m'aiguiller ?

Merci et bonne journée

http://ThoT-Corporation.sdz.fr/

ThoT//Dévellopeur Etudiant

3 réponses

Messages postés
153
Date d'inscription
dimanche 4 mars 2007
Statut
Membre
Dernière intervention
24 avril 2011
2
Bon je n'es pas réussi a faire fonctionner ce que tu m'as proposé comme aide mais tu m'as aiguillé sur le comment il fallait que je procède pour comparer une variable à une table... Donc je donne ce que j'ai fait qui fonctionne très bien :) Comme ça, cela pourrait peut etre aider d'autres personnes...






<ol>
<li>
'il faut importer ceci afin d'éviter un code trop lourd ...

</li>
<li>    Imports System.Data.OleDb
</li>
<li>

</li>
<li>
'Il faut ensuite déclarer toute ces variables...

</li>
<li>    Private Dtt As New DataTable()
</li>
<li>    Private Dts As New DataSet()
</li>
<li>  Private Conn As New OleDbConnection()
</li>
<li>    Private Cmd As New OleDbCommand()
</li>
<li>    Private Sql As String
</li>
<li>    Private BDDPath As String
</li>
<li>    Private ConnString As String
</li>
<li>    Private Key As String 
</li>
<li>  private KeySearch as string = "1234"
</li>
<li>

</li>
<li>
'Puis on compare avec ma base access géré indépendament de visual studio.

</li>
<li>
'Donc en faite je me suis dit que j'irais faire une recherche dans la base _
<li>  par rapport à la variable string puis que je regarderai combien j'ai trouvé de _
</li><li>  solutions à ma recherche.</li>

</li>
<li>
'donc bah regardez comme j'ai fait :)

</li>
<li>

</li>
<li>
'j'initialise la commande

</li>
<li>    Cmd = Conn.CreateCommand()
</li>
<li>

</li>
<li>
'ensuite jais fait toute ma connection a la base de donnée

</li>
<li>    BDDPath = Application.StartupPath
</li>
<li>    ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + _
</li>
<li>      BDDPath + "\Ma_Base.mdb"
</li>
<li>    Conn.ConnectionString = Me.ConnString
</li>
<li>

</li>
<li>
'je définis les recherches

</li>
<li>    Cmd.CommandText = "SELECT * FROM Ma_Table WHERE Mon_Champs = '" & _
</li>
<li>      KeySearch & "'"
</li>
<li>    Sql = "SELECT * FROM Ma_Table WHERE Mon_Champs = '" & KeySearch _
</li>
<li>      & "'"
</li>
<li>

</li>
<li>
'j'ouvre la connection

</li>
<li>    Conn.Open()
</li>
<li>

</li>
<li>
'je déclare une lecture de la base avec mon champs de recherche

</li>
<li>    Dim Rdr As OleDbDataReader = Cmd.ExecuteReader()
</li>
<li>

</li>
<li>
'je commence la lecture de la base

</li>
<li>    Rdr.Read()
</li>
<li>

</li>
<li>
'je déclare un data adapter avec l'autre champs de recherche qui est le même _
<li>  mais c'est pour éviter les confrontations...</li>

</li>
<li>    Dim Dta As New OleDbDataAdapter(Sql, Conn)
</li>
<li>

</li>
<li>
'je m'occupe de suite de la connection, de la liste etc...

</li>
<li>    Dta.Fill(Me.Dts, "Ma_Table")
</li>
<li>    Dtt = Me.Dts.Tables("Ma_Table")
</li>
<li>

</li>
<li>
'et là je regarde si il n'y a que un seul résultat c'est gagné et s'il n'y _
<li>  en a pas c'est que c'est pas bon ... :) tout à fait ce que je voulais merci _
</li><li>  ;)</li>

</li>
<li>    If Dtt.Rows.Count = 1 Then
</li>
<li>        MessageBox.Show("ça fonctionne")
</li>
<li>        If Rdr.HasRows Then
</li>
<li>                Key = Rdr("Key")
</li>
<li>        End If
</li>
<li>        MessageBox.Show(Key)
</li>
<li>    Else
</li>
<li>        MessageBox.Show("Bah tampis")
</li>
<li>    End If
</li>
<li>

</li>
<li>
'ensuite je ferme la lecture et la connection à la base

</li>
<li>    Rdr.Close()
</li>
<li>    Conn.Close()</li>
</ol>
,

----

(http://ThoT-Corporation.sdz.fr/



ThoT//Dévellopeur Etudiant
Messages postés
96
Date d'inscription
mardi 29 mars 2005
Statut
Membre
Dernière intervention
10 mars 2011
2
Bonjour,
je te communique la syntaxe pour retrouver un mot dans un champ ACCESS:

1/ si le mot cherché est quelque part dans le champ entouré de texte
strsql="SELECT * FROM nom_table WHERE nom_champ LIKE '%" & trim(textbox.text) & "%'"
(nb selon le moteur de recherche il faut peut-être remplacer % par * qui est une spécificité d'ACCESS)


2/si le mot cherché est seul dans le champ
strsql="SELECT * FROM nom_table WHERE nom_champ= '" & textbox.text & "'"

puis tester le résultat du recordset:


if recordset.eof and recordset.bof then
   msgbox"mot non trouvé"
else
   msgbox recordset.recordcount & " occurences trouvées"
end if

Ceci en considérant que tu aies déjà défini ta base de données et ta connect° en ADO.
NB: attention si ton textbox contient des apostrophes, une erreur sera générée, prévoir alors d'utiliser la fonction replace pour changer ' en ''' (3').
Messages postés
153
Date d'inscription
dimanche 4 mars 2007
Statut
Membre
Dernière intervention
24 avril 2011
2
je suis désolé mais je n'arrive pas a faire fonctionner ce que tu me propose. Et je fonctionne sous access  et une connection ADO.NET donc ya pas de soucis là dessus. Je ne comprend pas comment il faut déclarer le recordset... Peut tu m'aider ?

http://ThoT-Corporation.sdz.fr/

ThoT//Dévellopeur Etudiant