Rechercher SQL VB6.0

accent19811 Messages postés 149 Statut Membre -  
jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

VB 6.0 et Access

j'ai réalise un code qui permet de faire une rechercher d'article, avec Référence ou désignation d'article, Ce

code ça marche bien.

Mais quand la Table Article, contient plus de 30000 Produit.

la rechercher prendre plusieurs temps pour affiche la résulta.

le code :

Global dd As Database
Global ART As Recordset

Public Sub Connect()
On Error Resume Next
Dim STRDBNAME As String
STRDBNAME = ("c:\RechSQL\RechSQL.MDB")
Set dd = DBEngine.OpenDatabase(STRDBNAME, False, False)
End Sub

Private Sub fermer_Click()
End
End Sub

Private Sub Form_Load()
On Error Resume Next
Connect
Set ART = dd.OpenRecordset("ARTICLE")
End Sub

Private Sub DESIGNATION_Change()
On Error Resume Next

Dim HP As String
If DESIGNATION.Text = "" Then Exit Sub
HP = "SELECT * FROM ARTICLE order by DESI asc;"
Set ART = dd.OpenRecordset(HP)
G.Rows = 1
ART.MoveFirst
Do While Not ART.EOF
If InStr(1, ART(1), DESIGNATION.Text) Then
G.AddItem ART(0) & vbTab & ART(1) & vbTab & CSng(ART(2)) & vbTab & Format$(ART(3), "## ### ##0.00") & vbTab & ART(4)
End If
ART.MoveNext
Loop
End Sub


Private Sub REFERENCE_Change()
On Error Resume Next

Dim HP As String
If REFERENCE.Text = "" Then Exit Sub
HP = "SELECT * FROM ARTICLE order by REF asc;"
Set ART = dd.OpenRecordset(HP)
G.Rows = 1
ART.MoveFirst
Do While Not ART.EOF
If InStr(1, ART(0), REFERENCE.Text) Then
G.AddItem ART(0) & vbTab & ART(1) & vbTab & CSng(ART(2)) & vbTab & Format$(ART(3), "## ### ##0.00") & vbTab & ART(4)
End If
ART.MoveNext
Loop

End Sub




Image :



Merci d'avance

Aide-moi,

je rechercher un l'autre code SQL, qui permet d'effectuée une rechercher rapide, et non prendre pas plusieurs temps,

1 réponse

  1. jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention   9 973
     
    Bonjour,

    Je n'utilise ni VB ni ACCESS, je vais donc te donner des pistes, à toi de les tester et mettre en oeuvre.

    Tu sembles lire les articles dans ta table un par jusqu'à ce que tu trouves le bon. En sql on laisse le moteur de BDD se charger de cela.

    Plutôt qu'une boucle tu devrais avoir une recherche avec le critère souhaité :
    SELECT * FROM ARTICLE WHERE REFERENCE = "la_reference_a_trouver"

    ou si tu n'as pas la reference exacte
    SELECT * FROM ARTICLE WHERE REFERENCE LIKE "*la_reference_a_trouver*"
    

    Et tester le code retour quand le select ne trouve pas la référence demandée, le premier select pouvant ramener 0 ou 1 ligne, le second 0 ou n lignes.

    Cdlt
    0
    1. accent19811 Messages postés 149 Statut Membre
       
      Bonjour,

      Merci pour votre Réponse,

      j'ai test votre code

      
      Private Sub REFERENCE_Change()
      On Error Resume Next
      RechercherRef REFERENCE.Text
      End Sub
      
      Private Sub RechercherRef(Optional ByRef RefArticle As String)
      On Error Resume Next
      G.Rows = 1
        With dd.OpenRecordset("SELECT `REF`, `DESI`, `QTE`, `PU`, `REMISE` FROM `ARTICLE` WHERE `REF` LIKE """ & RefArticle & "*""")
           Do Until .EOF
            G.AddItem .Fields("REF") & vbTab & .Fields("DESI") & vbTab & CSng(.Fields("QTE")) & vbTab & Format$(.Fields("PU"), "## ### ##0.00") & vbTab & .Fields("REMISE")
             .MoveNext
       Loop
       .Close
      End With
      End Sub
      
      


      Mais ce code permet d'effectuée la rechercher simple, a partir de première phrase, cet à dire, elle s'affiche les caractères première, exemple : quand j'ai écrire (X01), s'affiche automatique tout les références quelle sont commence par X01.


      - Mais moi, je vous un code qui permet d'effectuée une rechercher rapide,
      Exemple;

      Référence : 8754-78452-TF

      Je vous tapi seulement (54-) dans le texte, et l'système s'affiche automatique tous les références, qui contient ce caractère. de Méthode Rapide

      Merci d'avance
      0
      1. jee pee Messages postés 31863 Date d'inscription   Statut Modérateur Dernière intervention   9 973 > accent19811 Messages postés 149 Statut Membre
         
        Il faut comme dans mon exemple, une étoile devant, et une étoile derrière.

        LIKE "*54-*"
        0
    2. accent19811 Messages postés 149 Statut Membre
       
      Bonsoir,

      désole, ça marche pas.

      Merci.
      0