Rechercher SQL VB6.0

Fermé
accent19811 Messages postés 105 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 28 mai 2023 - 15 déc. 2018 à 16:12
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 - 15 déc. 2018 à 22:52
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 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié le 15 déc. 2018 à 17:17
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 105 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 28 mai 2023
15 déc. 2018 à 17:47
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 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235 > accent19811 Messages postés 105 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 28 mai 2023
15 déc. 2018 à 17:52
Il faut comme dans mon exemple, une étoile devant, et une étoile derrière.

LIKE "*54-*"
0
accent19811 Messages postés 105 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 28 mai 2023
15 déc. 2018 à 19:24
Bonsoir,

désole, ça marche pas.

Merci.
0
jee pee Messages postés 39637 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235 > accent19811 Messages postés 105 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 28 mai 2023
15 déc. 2018 à 22:52
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