Bonjour à tous,

Voici mon problème : j'ai une erreur incompatibilité de type lors d'une recherche SQL avec un pattern saisi dans une cellule.
A noter que lorsque ce pattern fait un mot ou deux mot je n'ai aucun soucis.
Cette erreur apparait lorsque mon pattern comporte plus de 2 mot.

Voici le code VBA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
.CommandText = Array( _
        "select distinct T1.dbid,T1.id,T1.titre,T1.severite,T17.login_name from Defect T1,users T17 where T1.responsable = T17.dbid " _
        , _
        Chr(10) & "" & Chr(13) & " and T1.dbid <> 0 " _
        , _
        Chr(10) & "" & Chr(13) & " and T1.lot = '" & lot & "' " _
        , _
        Chr(10) & "" & Chr(13) & " and    ( T1.TITRE like '%" & CStr(pattern) & "%'  or instr(T1.DESCRIPTION_ANALYSE, '" & CStr(pattern) & "') <> 0 or instr(T1.DESCRIPTION_TRAITEMENT, '" & CStr(pattern) & "') <> 0 or instr(T1.NOTES_LOG, '" & CStr(pattern) & "') <> 0 )   " _
        , Chr(10) & "" & Chr(13) & " order by T1.severite ASC")
En amont de cela j'execute sur la variable pattern les fonction trim, clean, replace chr(10) par "" et replace chr(13) par "".

A noter que la requete SQL déduite executée dans SQL dev fonctionne parfaitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
select distinct T1.dbid,T1.id,T1.titre,T1.severite,T17.login_name from Defect T1,users T17 where T1.responsable = T17.dbid 
 and T1.dbid <> 0 
 and T1.lot = 'toto' 
 and    ( T1.TITRE like '%Integration Framework bidon%' or instr(T1.DESCRIPTION_ANALYSE, 'Integration Framework bidon') <> 0 or instr(T1.DESCRIPTION_TRAITEMENT, 'Integration Framework bidon') <> 0 or instr(T1.NOTES_LOG, 'Integration Framework bidon') <> 0 )  
 order by T1.severite ASC
A noter que lorsque mon code VBA se trouve juste emputé de l'expression suivant alors tout fonctionne parfaitement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
instr(T1.NOTES_LOG, '" & CStr(pattern) & "') <> 0
Enfin à noter que NOTES_LOG est un clob, mais cela ne devrait pas changer la donne.

Voici quelques exemples de pattern :
  • Integration Framework bidon ==> KO
  • Integration Framework catalog ==> KO
  • integration framework catalog ==> KO
  • pattern avec mots ==> OK
  • integration framework cata ==> KO
  • pattern avec moooots ==> OK
  • pattern aaavec moooots ==> OK
  • patttern aaavec moooots ==> OK
  • pattttern aaavec moooots ==> OK
  • patttttern aaavec moooots ==> OK
  • patttttern aaavec mooooots ==> KO
  • integration framework cat ==> OK


Ainsi je vois qu'au dela de 25 caractères cela ne passe plus...
Est ce que quelqu'un a une idée ?

Merci