Recherche d'une chaine dans une colonne d'une BDD

Résolu
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010 - 6 févr. 2008 à 09:08
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 6 févr. 2008 à 10:42
Bonjour à tous,

Je suis en phase finale du projet, j'ajoute quelques fonctionnalité sur celui-ci actuellement j'ai un recherche de numéro de carte sim tout simple, cependant je cherche le numéro de ma sim. J'aimerai que si par exemple l'utilisateur saisi 3-4 chiffres, cela cherche dans ma colonne ou il y a les sims toutes les sim dont il y a ses 3-4 chiffres consécutifs.

Exemple : 3458

Données trouvées 34589562100,1253458449, 0054863458

J'ai donc pensé à InStr cependant je ne vois pas trop comment utiliser ca dans ma requête, j'ai vu quelques sujets traitants de ce genre de cas, mais sans grand succès car ses sujets restent sans réponses.

Je vous fais part de mon code qui traite cette recherche. Sachant que j'aimerai que ca affiche dans mon Listview toutes les sims trouvées mais bon je pense pas que des modifs doivent etre apportées vu que ca boucle tout seul
<hr size="2" width="100%" />
Private Sub btnOk_Click()
   
On Error GoTo Erreur
   
Dim conn As ADODB.Connection
Dim Sim As String
Dim IdSim As String
Dim Sql As Recordset
Dim Sql2 As Recordset
Dim nb As Long
Dim i As Integer
Dim myRegExp As RegExp

Set myRegExp = New RegExp
myRegExp.Pattern = "^[0-9]+$"

Sim = txtNumSim
   
Set conn = New ADODB.Connection
conn.ConnectionString = "DSN=LocalServer;uid=web;pwd=jhosoi;driver=MySQL ODBC 3.51 Driver;server=83.68.100.24;database=Sim"
conn.Open
If myRegExp.Test(txtNumSim) Then    Set Sql conn.Execute(("SELECT Id_Sim FROM T_Sim WHERE Sim'" & txtNumSim & "'"), nb)
    If nb = 0 Then
        MsgBox "La SIM n'existe pas.", vbInformation, "Recherche de SIM"
    Else
        IdSim = Sql.Fields(0).Value        Set Sql2 conn.Execute("SELECT Numero,Nom_Operateur,Facturation,McuCode,ClientCode, Fr_Data_Euro,Roaming_Data_Euro FROM T_Facturation, T_Sim, T_Operateur WHERE T_Facturation.Id_Sim T_Sim.Id_Sim AND T_Sim.Operateur = T_Operateur.Id_Operateur AND T_Sim.Id_Sim =" & IdSim)
        i = 1
        lvSim.ListItems.Clear
        While Not Sql2.EOF
            lvSim.ListItems.Add(1) = Sql2!Nom_operateur
            lvSim.ListItems(i).ListSubItems.Add = Sql2!Numero
            lvSim.ListItems(i).ListSubItems.Add = Sql2!ClientCode
            lvSim.ListItems(i).ListSubItems.Add = Sql2!McuCode
            lvSim.ListItems(i).ListSubItems.Add = Sql2!Facturation
            lvSim.ListItems(i).ListSubItems.Add = Sql2!Fr_Data_Euro
            lvSim.ListItems(i).ListSubItems.Add = Sql2!Roaming_Data_Euro
            i = i + 1
            Sql2.MoveNext
        Wend
        Sql2.Close
        Sql.Close
    End If
Else
    MsgBox "Le numéro de carte SIM est invalide, il doit comporter uniquement des numéros.", vbInformation, "Erreur de saisie"
End If
Exit Sub

Erreur:
MsgBox "Une erreur s'est produite lors du traitement :" & Err.Number & vbLf & Err.Description

End Sub
<hr size="2" width="100%" />
Merci pour votre aide et bonne journée

_______________________
<<<< :-: 4L!@$ :-: >>>>

5 réponses

pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
6 févr. 2008 à 09:47
Salut,

Tu peux utiliser la clause LIKE  avec le caractère %

ex
SELECT Id_Sim FROM T_Sim WHERE Sim like '123%'
Renvoie toutes les sim commencant par 123

SELECT Id_Sim FROM T_Sim WHERE Sim like '%123'
Renvoie toutes les sim se terminant par 123

SELECT Id_Sim FROM T_Sim WHERE Sim like '%123%'
Renvoie toutes les sim contenant 123

En espérant t'avoir aidé un peu

@+

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
6 févr. 2008 à 09:51
Salut,

Et si tu faisais une seule requête de selection du genre un truc comme cela :
Sql "SELECT Id_Sim FROM T_Sim WHERE Id_Sim'" & InStr(1, Id_Sim, NumSimTxt.Text) & "'"

Avec une requête du genre tu ne devrait avoir que les N° de Sim qui comporte ta saisie dans NumSimTxt....
A+
Exploreur

 Linux a un noyau, Windows un pépin
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
6 févr. 2008 à 09:52
Post's croisés...

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
6 févr. 2008 à 10:33
Re,

Merci pour l'inspiration, j'ai donc préféré utiliser le LIKE, mais t'inquiètes pas Exploreur j't'aime bien quand même

_______________________
<<<< :-: 4L!@$ :-: >>>>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
6 févr. 2008 à 10:42
lol...

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
Rejoignez-nous