Rechercher SQL VB6.0
accent19811
Messages postés
149
Statut
Membre
-
jee pee Messages postés 42428 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 42428 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 :
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,
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,
A voir également:
- Rechercher SQL VB6.0
- Rechercher ou entrer l'adresse - Guide
- Rechercher image - Guide
- Rechercher remplacer word - Guide
- Rechercher une chanson - Guide
- Adresse IP locale : comment la trouver facilement - Guide
1 réponse
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é :
ou si tu n'as pas la reference exacte
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
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
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 SubMais 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
désole, ça marche pas.
Merci.
teste la requete seule à la main dans access
ce doit être un soucis de syntaxe