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

ThoT49 153 Messages postés dimanche 4 mars 2007Date d'inscription 24 avril 2011 Dernière intervention - 20 oct. 2007 à 15:31 - Dernière réponse : ThoT49 153 Messages postés dimanche 4 mars 2007Date d'inscription 24 avril 2011 Dernière intervention
- 21 oct. 2007 à 11:24
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
ThoT49 153 Messages postés dimanche 4 mars 2007Date d'inscription 24 avril 2011 Dernière intervention - 21 oct. 2007 à 11:24
3
Merci
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

Merci ThoT49 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ThoT49
JPGVB 96 Messages postés mardi 29 mars 2005Date d'inscription 10 mars 2011 Dernière intervention - 20 oct. 2007 à 17:36
0
Merci
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').
Commenter la réponse de JPGVB
ThoT49 153 Messages postés dimanche 4 mars 2007Date d'inscription 24 avril 2011 Dernière intervention - 20 oct. 2007 à 22:59
0
Merci
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
Commenter la réponse de ThoT49

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.