En DAO 3.6 je cherche une methode me permettant de vérifier qu'une
requête compilée si elle existe, contient l'instruction définie par le
code. Exemple:
Dim rq As QueryDef
Dim rst As Recordset
Dim sql$
sql$ = "PARAMETERS nomcomm Text;" _
& " SELECT Commune.NomCom, Commune.CodeInsee, Commune.ID_Commune,
Commune.Raster" _
& " From Commune" _
& " WHERE (((Commune.NomCom) Like ([nomcomm])));" _
Set mBase = DBEngine.Workspaces(0).OpenDatabase(mNomBase.nomcomplet)
Err.clear
On Error Resume Next
Set rq = mBase.CreateQueryDef("RQ_NomCommune", sql$)
if err.number<>0 then
if len(sql$) = len(mBase.QueryDefs("RQ_NomCommune").sql) then
'même longueur = même instruction on ne fait rien (je simplifie)
else
' pas la même longueur donc on remplace
mBase.QueryDefs.Delete ("RQ_NomCommune")
Set rq = mBase.CreateQueryDef("RQ_NomCommune", sql$)
end if
On Error GoTo 0
Set rq = mBase.QueryDefs("RQ_NomCommune")
rq.Parameters("nomcomm") = nomcom
Set rst = rq.OpenRecordset
If Not (rst.EOF And rst.BOF) Then
Else
End If
Set rst = Nothing
Set rq = Nothing
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont
pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en
plus au niveau des paramètres il rajoute ( 255 ) pour le paramètre type
text ....
Bref existe-t-il une règle bien définie me permettant de connaitre la
valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq
soit le type de chaîne SQL.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jean-marc
"touriste" wrote in message news:46f1456c$0$5113$
Bonjour,
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text ....
Bref existe-t-il une règle bien définie me permettant de connaitre la valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser": Tu "normalises" ta chaine et la chaine de la DB, comme ça: - ne garder que les caractères entre 32 et 127 - Si 2 blancs consécutifs, un seul blanc (et répéter) Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur n'aurait jamais l'idée saugrenue de mettre autre chose que de l'ascii dans une requete SQL :-)
"touriste" <touriste@g.fr> wrote in message
news:46f1456c$0$5113$ba4acef3@news.orange.fr...
Bonjour,
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont
pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus
au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text
....
Bref existe-t-il une règle bien définie me permettant de connaitre la
valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit
le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser":
Tu "normalises" ta chaine et la chaine de la DB, comme ça:
- ne garder que les caractères entre 32 et 127
- Si 2 blancs consécutifs, un seul blanc (et répéter)
Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne
contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de
caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur
n'aurait jamais l'idée saugrenue de mettre autre chose que
de l'ascii dans une requete SQL :-)
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text ....
Bref existe-t-il une règle bien définie me permettant de connaitre la valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser": Tu "normalises" ta chaine et la chaine de la DB, comme ça: - ne garder que les caractères entre 32 et 127 - Si 2 blancs consécutifs, un seul blanc (et répéter) Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur n'aurait jamais l'idée saugrenue de mettre autre chose que de l'ascii dans une requete SQL :-)
je vais tentez de normaliser, pour l'instant j'avais songer à effacer toutes les requêtes d'une BD en fonction de la date de la BD et celle du logiciel l'utilisant.
Concernant ta réponse sur les threads indépendants, merci. La principale différence est que le Thread est modal dans mon cas.
A+
Christophe
jean-marc a écrit :
"touriste" wrote in message news:46f1456c$0$5113$
Bonjour,
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text ....
Bref existe-t-il une règle bien définie me permettant de connaitre la valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser": Tu "normalises" ta chaine et la chaine de la DB, comme ça: - ne garder que les caractères entre 32 et 127 - Si 2 blancs consécutifs, un seul blanc (et répéter) Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur n'aurait jamais l'idée saugrenue de mettre autre chose que de l'ascii dans une requete SQL :-)
Merci pour les infos,
je vais tentez de normaliser, pour l'instant j'avais songer à effacer
toutes les requêtes d'une BD en fonction de la date de la BD et celle du
logiciel l'utilisant.
Concernant ta réponse sur les threads indépendants, merci. La principale
différence est que le Thread est modal dans mon cas.
A+
Christophe
jean-marc a écrit :
"touriste" <touriste@g.fr> wrote in message
news:46f1456c$0$5113$ba4acef3@news.orange.fr...
Bonjour,
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont
pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus
au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text
....
Bref existe-t-il une règle bien définie me permettant de connaitre la
valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit
le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser":
Tu "normalises" ta chaine et la chaine de la DB, comme ça:
- ne garder que les caractères entre 32 et 127
- Si 2 blancs consécutifs, un seul blanc (et répéter)
Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne
contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de
caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur
n'aurait jamais l'idée saugrenue de mettre autre chose que
de l'ascii dans une requete SQL :-)
je vais tentez de normaliser, pour l'instant j'avais songer à effacer toutes les requêtes d'une BD en fonction de la date de la BD et celle du logiciel l'utilisant.
Concernant ta réponse sur les threads indépendants, merci. La principale différence est que le Thread est modal dans mon cas.
A+
Christophe
jean-marc a écrit :
"touriste" wrote in message news:46f1456c$0$5113$
Bonjour,
Mais pb la chaîne SQL que je donne et celle contenue dans la BD ne sont pas les mêmes, celle dans la BD contient des Chr(10) & Chr(13) et en plus au niveau des paramètres il rajoute ( 255 ) pour le paramètre type text ....
Bref existe-t-il une règle bien définie me permettant de connaitre la valeur à ajouter à len(sql) pour pouvoir faire la comparaison, ce qq soit le type de chaîne SQL.
Non, en tout cas rien de doumenté de façon fiable.
Une solution possible est de "normaliser": Tu "normalises" ta chaine et la chaine de la DB, comme ça: - ne garder que les caractères entre 32 et 127 - Si 2 blancs consécutifs, un seul blanc (et répéter) Ensuite, tu compares.
Ceci marche très bien, avec n'importe quelle genre de chaines.
La seule chose, c'est que ça présuppose que les requêtes ne contiennent que de l'US-ASCII 7 bits ([0-127]) et pas de caractères fantaisistes genre "è", "ê", "à", etc.
Ca doit normalement être le cas puisqu'aucun vrai programmeur n'aurait jamais l'idée saugrenue de mettre autre chose que de l'ascii dans une requete SQL :-)