Rechercher SQL VB6.0

accent19811 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   -  
jee pee Messages postés 41423 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

jee pee Messages postés 41423 Date d'inscription   Statut Modérateur Dernière intervention   9 689
 
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
accent19811 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention  
 
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
jee pee Messages postés 41423 Date d'inscription   Statut Modérateur Dernière intervention   9 689 > accent19811 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention  
 
Il faut comme dans mon exemple, une étoile devant, et une étoile derrière.

LIKE "*54-*"
0
accent19811 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

désole, ça marche pas.

Merci.
0
jee pee Messages postés 41423 Date d'inscription   Statut Modérateur Dernière intervention   9 689 > accent19811 Messages postés 98 Date d'inscription   Statut Membre Dernière intervention  
 
cela devrait fonctionner : https://support.microsoft.com/fr-fr/office/op%c3%a9rateur-like-b2f7ef03-9085-4ffb-9829-eef18358e931?ui=fr-fr&rs=fr-fr&ad=fr

teste la requete seule à la main dans access

ce doit être un soucis de syntaxe
0