Faire un tri sélectif et lien hypertexte

Signaler
Messages postés
15
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
14 août 2010
-
Messages postés
15
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
14 août 2010
-
Bonjour, j'ai une base de donnée Access(.mdb) que j'ouvre avec un controle "Adodc" et visionne avec un "MshFlexGrid".
Maintenant avec l'aide de bien des gens ça fonctionne très bien.
Mais il me reste 2 petites choses a règler pour que tout soit a mon goût. Au cas ou cela serait important toute les entrées de ma base sont en format texte sauf une qui est un lien hypertexte.

1) Dans ma feuille qui affiche mon MshFlexGrid j'ai insérer 3 TextBox, je peux écrire des chaines de recherche pour en faire un tri sélectif, tout est bien pour le moment, ou je bloque c'est que je dois écrire la chaine complète pour que mon tri fonctionne. Je ne peux pas rechercher quelque chose comme ça ex: dans une chaine "F45HG66" effectuer une recherche du style "*5H*"


2) L'autre chose qui me tracace est que dans ma base de donnée j'ai uu champ qui renvois un lien Hypertexte. Comment inclure ce lien pour qu'il fonctionne a l'intérieur de mon MshFlexGrid.
Présentement le lien s'affiche dans mon Grid ex: P498#E:\chemin...\P498.pdf##Information disque dur

Si vous avez de bon conseils, j'en serais très heureux.

Merci

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

-1- Comment fais-tu actuellement ta recherche ?
Par une requète SQL ? laquelle
Exemple :
"... Where monChamp Like '%5H%'"
"... Where monChamp Like '%" & maTextBox.Text & "%'"

Il faudra donc remplacer les * par des %, soit dans la chaine de recherche, soit dans la syntaxe.

-2- Il n'y a pas de composant tout fait qui sache interpréter les liens hypertext en VB6.
Mais comme tu as le texte complet, avec les #, il simple d'en extraire le chemin (par un simple Split) puis de donner cette chaine en pâture à un ShellExecute
Voilà les mots clés de tes prochaines recherches !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
15
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
14 août 2010

Ma requete :
Public Function TriFonction()
Dim x
If txtHeatNum.Text "" And txtThickness.Text "" And txtMaterial.Text = "" Then
Adodc1.RecordSource = ("SELECT * FROM Plaques")
Adodc1.Refresh
ElseIf txtHeatNum.Text <> "" And txtThickness.Text <> "" And txtMaterial.Text <> "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Heat Number] '" & txtHeatNum.Text & "' and [Épaisseur] = '" & txtThickness.Text & "' and [Material] = '" & txtMaterial.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text <> "" And txtThickness.Text <> "" And txtMaterial.Text = "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Heat Number] '" & txtHeatNum.Text & "' and [Épaisseur] = '" & txtThickness.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text <> "" And txtThickness.Text = "" And txtMaterial.Text <> "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Heat Number] '" & txtHeatNum.Text & "' and [Material] = '" & txtMaterial.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text = "" And txtThickness.Text <> "" And txtMaterial.Text <> "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Épaisseur] '" & txtThickness.Text & "' and [Material] = '" & txtMaterial.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text <> "" And txtThickness.Text "" And txtMaterial.Text "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Heat Number] '" & txtHeatNum.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text "" And txtThickness.Text <> "" And txtMaterial.Text "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Épaisseur] '" & txtThickness.Text & "' ")
Adodc1.Refresh
ElseIf txtHeatNum.Text "" And txtThickness.Text "" And txtMaterial.Text <> "" Then
Adodc1.RecordSource ("SELECT * FROM Plaques WHERE [Material] '" & txtMaterial.Text & "' ")
Adodc1.Refresh
End If

For x = 0 To 10 Step 1
MSHFlexGrid1.ColAlignment(x) = flexAlignCenterCenter
MSHFlexGrid1.ColAlignmentFixed(x) = flexAlignCenterCenter
Next

End Function

(Les lignes de code sont sur une ligne, pas sur 2 lignes comme dans cette fenètre)


Je peux te dire que j'ai jouer longtemps avec des ' , " , [] , ; , &, | , avant de trouvé cette façon.
Messages postés
15
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
14 août 2010

Excuse mon ignorance, ce n'est pas ma requète mais ma fonction que j'ai posté.

Ma requète ressemble a *11G*3
c'est le type de caractère que j'insérait dans mon textbox. Je vais essayer avec %

Merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Merci d'utiliser la coloration syntaxique proposée dans la barre d'outil de cette fenêtre de saisie : Cela rend le code beaucoup plus facile à lire (couleurs et respect des espaces de début de ligne)

Oui, eh bien tu utilises Like au lieu de =, comme je te l'ai dit :
("SELECT * FROM Plaques WHERE [Heat Number] Like '%" & txtHeatNum.Text & "%'")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
ou plutôt (le chien de mickey ?) :
Dim sTemp As String
sTemp = maTextBox.Text
sTemp = Replace(sTemp, "*", "%")
' et plus loin, la syntaxe sans les % puisqu'ils seront déjà intégrés à la variable
("SELECT * FROM Plaques WHERE [Heat Number] Like '" & sTemp & "'")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
15
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
14 août 2010

WOW super très gentil, tout fonctionne.
Je suis aux anges. J'ai enfin réussi a faire un programme qui va me servir grandement.

PS quand je dit que j'ai enfin réussi, c'est grace a vos réponse et votre gentillesse pour prendre de votre temps a répondre a des gens comme moi qui commence en vb.


Gros merci