OVH Cloud OVH Cloud

SQL ou travail sur fichier txt.

5 réponses
Avatar
Ciginfo
Bonjour
Je dispose d'un dictionnaire de mots dans 2 fichiers au choix .txt et Acces
: Dico.txt et Dico.Mdb. Je dois réaliser un aide aux jeux de mots et 2
problèmes me sont posés.
1er probleme :
Trouver tous les mots de notre chère langue française figurant dans ma
base ou mon fichier .txt et comportant par exemple les lettres (dans le
desordre) JORBOUN (ce qui donne BONJOUR entre autres) et les lister dans un
listBox.
2ème problème:
Trouver (style aide aux mots croisés) tous les mots de 7 lettres par
exemple comportant qqs lettres connues, ex B--Jo-R (ce qui donne BONJOUR),
parmi bien sûr ceux qui figurent dans mon fichier .txt ou ma base Acces.

Je n'arrive pas à trouver la syntaxe SQL si j'utilise ma base de données
Dico.mdb, encore mois la routine qui permet d'extraire les mots du fichier
dico.txt
Avec SQL j'approche un peu avec : Q = "SELECT*FROM DICO WHERE MOt ='" & V1 &
V2 & V3 & V4 & V5 & "'" V1, V2 etc... étant des variables representant
chaque lettre du mot, mais je n'y arrive pas.
peut on me donner quelques pistes pour resoudre mes deux problèmes ?

Merci d'avance.

François

5 réponses

Avatar
le_troll
Salut,

J'ai fait un générateur de mots croisés, il y a dedans un fichier de
mots (lexique, car le dico explique le mot), vois si ça peut te servir, il
suffit de repiquer le fichier txt, ainsi tu pourras travailler directement
avec les fichiers...
http://irolog.free.fr


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Ciginfo" a écrit dans le message de news:
cfg6a5$b7h$
Bonjour
Je dispose d'un dictionnaire de mots dans 2 fichiers au choix .txt et


Acces
: Dico.txt et Dico.Mdb. Je dois réaliser un aide aux jeux de mots et 2
problèmes me sont posés.
1er probleme :
Trouver tous les mots de notre chère langue française figurant dans ma
base ou mon fichier .txt et comportant par exemple les lettres (dans le
desordre) JORBOUN (ce qui donne BONJOUR entre autres) et les lister dans


un
listBox.
2ème problème:
Trouver (style aide aux mots croisés) tous les mots de 7 lettres par
exemple comportant qqs lettres connues, ex B--Jo-R (ce qui donne BONJOUR),
parmi bien sûr ceux qui figurent dans mon fichier .txt ou ma base Acces.

Je n'arrive pas à trouver la syntaxe SQL si j'utilise ma base de données
Dico.mdb, encore mois la routine qui permet d'extraire les mots du fichier
dico.txt
Avec SQL j'approche un peu avec : Q = "SELECT*FROM DICO WHERE MOt ='" & V1


&
V2 & V3 & V4 & V5 & "'" V1, V2 etc... étant des variables representant
chaque lettre du mot, mais je n'y arrive pas.
peut on me donner quelques pistes pour resoudre mes deux problèmes ?

Merci d'avance.

François




Avatar
Ciginfo
Oui bravo pour ce programme mais ce qui me serait utile c'est par exemple de
m'indiquer un bout de source concernant l'anagramme. Juste un bout de code
permettant la recherche d'un mot dans ton fichier à l'aide de lettres
données.
Merci si tu peux.

François
"le_troll" a écrit dans le message de
news:
Salut,

J'ai fait un générateur de mots croisés, il y a dedans un fichier de
mots (lexique, car le dico explique le mot), vois si ça peut te servir, il
suffit de repiquer le fichier txt, ainsi tu pourras travailler directement
avec les fichiers...
http://irolog.free.fr


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Ciginfo" a écrit dans le message de news:
cfg6a5$b7h$
> Bonjour
> Je dispose d'un dictionnaire de mots dans 2 fichiers au choix .txt et
Acces
> : Dico.txt et Dico.Mdb. Je dois réaliser un aide aux jeux de mots et 2
> problèmes me sont posés.
> 1er probleme :
> Trouver tous les mots de notre chère langue française figurant dans


ma
> base ou mon fichier .txt et comportant par exemple les lettres (dans le
> desordre) JORBOUN (ce qui donne BONJOUR entre autres) et les lister dans
un
> listBox.
> 2ème problème:
> Trouver (style aide aux mots croisés) tous les mots de 7 lettres par
> exemple comportant qqs lettres connues, ex B--Jo-R (ce qui donne


BONJOUR),
> parmi bien sûr ceux qui figurent dans mon fichier .txt ou ma base Acces.
>
> Je n'arrive pas à trouver la syntaxe SQL si j'utilise ma base de données
> Dico.mdb, encore mois la routine qui permet d'extraire les mots du


fichier
> dico.txt
> Avec SQL j'approche un peu avec : Q = "SELECT*FROM DICO WHERE MOt ='" &


V1
&
> V2 & V3 & V4 & V5 & "'" V1, V2 etc... étant des variables representant
> chaque lettre du mot, mais je n'y arrive pas.
> peut on me donner quelques pistes pour resoudre mes deux problèmes ?
>
> Merci d'avance.
>
> François
>
>




Avatar
le_troll
Bonsoir,

Pour ta recherche, je te préviens que ça risque d'être long...

Pour mon code, il faut un certain temps pour que je retrouve et
comprenne tout, lol, alors vois déjà avec ça, sinon je te passerai du code
demain, demande...
'-------------------------------------

Pour les chaînes, on utilise notamment:

RECHERCHE du début vers la fin

position = InStr(depart, ch_examinée, élément_recherché, option_recherche)

position = N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel


Exemple, on recherche la lettre "A"
dim position as byte
position = InStr(1, Nom_de_ta_chaine, "A", 1)

Et si tu as autre chose que 0, tu auras l'octet du premier "A", etc...

'--------------------------------------------



Voici quelques instructions sur les chaines:



CONCATENATION (x + y)

Chaine_total = chaine_1 & chaine_2



LONGUEUR

longueur = Len(chaine)



CONVERSION majuscules -> MINUSCULES

minscules = Lcase(chaine)



CONVERSION minuscules -> MAJUSCULES

majuscules = Ucase(chaine)



INVERSION

resultat = StrReverse(chaine_a_inverser)



EXTACTION D'UN MORCEAU DE CHAINE

De la droite

extraction = Right(chaine, position, nombre_octets)

De la gauche

extraction = Left(chaine, position, nombre_octets)



EXTRACTION D'OCTETS DETEMINES

extraction = Mid(chaine, position, nombre_octets)



INSERTION D'OCTETS DETERMINES

Mid(ch_receveuse, position, nombre_octets) = ch_donneuse

Insertion d'un 0

Mid(ch_receveuse, position, 1) = Chr(0)



RECHERCHE du début vers la fin

position = InStr(depart, ch_examinée, élément_recherché, option_recherche)

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel



RECHERCHE de la fin vers le début

position = InStrRev(ch_examinée, élément_recherché, depart,
option_recherche)

depart

(-1) = fin de chaîne

position

N° octet de début de chaîne recherchée

option_recherche

-1 en l'état (defaut)

0 binaire

1 textuel

2 bdd Access





COMPARAISON

resultat = StrComp(chaine_1, chaine_2, type_comparaison)

1 < 2 : (-1)

1 = 2 : (0)

1 > 2 : (1)

1(=Null) ou 2(=Null) : Null

type 0 = comparaison binaire

type 1 = coparaison alphanumérique



RETASSEMENT A DROITE

Chaine = LTrim(chaine)



RETASSEMENT A GAUCHE

Chaine = RTrim(chaine)



RETASSEMENT A GAUCHE ET A DROITE

Chaine = Trim(chaine))



REMPLACEMENT

Replace(texte,"text cherché","texte remplaçant")





GENERATION DE CODE ASCII Chr(valeur_ascii_numrique)



GENERATION D'ESPACES Space (x)



ADDITION DE CHAINES & '(recommandé)




--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Ciginfo" a écrit dans le message de news:
cfgega$ib$
Oui bravo pour ce programme mais ce qui me serait utile c'est par exemple


de
m'indiquer un bout de source concernant l'anagramme. Juste un bout de code
permettant la recherche d'un mot dans ton fichier à l'aide de lettres
données.
Merci si tu peux.

François
"le_troll" a écrit dans le message de
news:
> Salut,
>
> J'ai fait un générateur de mots croisés, il y a dedans un fichier de
> mots (lexique, car le dico explique le mot), vois si ça peut te servir,


il
> suffit de repiquer le fichier txt, ainsi tu pourras travailler


directement
> avec les fichiers...
> http://irolog.free.fr
>
>
> --
> Merci, @+, bye, Joe
> troll75 AROBASE iFrance POINT com
> ------------------------------------------
> Ce message est plein de virus "certifiés"
> Le_Troll, éleveur de Trolls depuis César, qui disait:
> Avec une hache, celui qui tient le manche a toujours raison !
> ------------------------------------------
>
>
> "Ciginfo" a écrit dans le message de news:
> cfg6a5$b7h$
> > Bonjour
> > Je dispose d'un dictionnaire de mots dans 2 fichiers au choix .txt et
> Acces
> > : Dico.txt et Dico.Mdb. Je dois réaliser un aide aux jeux de mots et 2
> > problèmes me sont posés.
> > 1er probleme :
> > Trouver tous les mots de notre chère langue française figurant


dans
ma
> > base ou mon fichier .txt et comportant par exemple les lettres (dans


le
> > desordre) JORBOUN (ce qui donne BONJOUR entre autres) et les lister


dans
> un
> > listBox.
> > 2ème problème:
> > Trouver (style aide aux mots croisés) tous les mots de 7 lettres


par
> > exemple comportant qqs lettres connues, ex B--Jo-R (ce qui donne
BONJOUR),
> > parmi bien sûr ceux qui figurent dans mon fichier .txt ou ma base


Acces.
> >
> > Je n'arrive pas à trouver la syntaxe SQL si j'utilise ma base de


données
> > Dico.mdb, encore mois la routine qui permet d'extraire les mots du
fichier
> > dico.txt
> > Avec SQL j'approche un peu avec : Q = "SELECT*FROM DICO WHERE MOt ='"


&
V1
> &
> > V2 & V3 & V4 & V5 & "'" V1, V2 etc... étant des variables representant
> > chaque lettre du mot, mais je n'y arrive pas.
> > peut on me donner quelques pistes pour resoudre mes deux problèmes ?
> >
> > Merci d'avance.
> >
> > François
> >
> >
>
>




Avatar
Zoury
Salut! :O)

peut on me donner quelques pistes pour resoudre mes deux problèmes ?



Connais-tu les expressions régulières ?
http://msdn.microsoft.com/library/en-us/script56/html/vsobjregexp.asp

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
jmn
Votre 2° problème est trivial car,par exemple ::

.... where nom like "B??JO?R"

Pour une mise en oeuvre réelle il ne reste plus qu'à programmer la
fabrication de la chaine de comparaison.


Le 1° problème est plus complexe. Dans l'absolu il s'agit d'un parcours
d'arbre non orienté, mais en envisageant votre solution sous cet angle vous
allez à cop sûr être confronté à des temps de traitement considérables.
Dans votre cas, l'ensemble des solutions est connu. On peut donc 'tricher'
en utilisant un fichier adapté !
Par exemple, vous pourriez ajouter à votre table acces 1 champ Test,
caractère 26, la position 1 contenant 1 si il y a au moins un A dans le mot
et sinon 0, la position 2 contenant 1 si il y au moins un B dans le mot et
sinon 0, &c..nsi, en analysant la chaine à rechercher dans une boucle
ForNext, vous pouvez facilement construire la clause Where de votre requête
SQL

Par exemple

StrCherche=""
Pour ie à 65+25
if instr( chaine, chr(i))<>0 then
Strcherche = strcherche & "1"
else
Strcherche = strcherche & "0"
endif
Suivant
sql=" select * from table where Test='" & strcherche & "' "

En créant un index sur Test votre application va fonctionner à une vitesse
tout à fait acceptable.

Je vous laisse le soin de régler les quelques détails restant (redoublement
de lettre, etc...)