dim. 31 mai 2015, 17h30
eddymaue
atoutfox.public.association
Re: petit souci SQL
j'ai ajouté plusieurs balises
pour voir le résultat sur le forum atoufox.... des fois que ça fonctionne
Bonjour,
petit souci SQL
dans une table Facture
1 CFILES Memo 4
2 FILESIZE Integer 4
3 DATEMODIF Date 8
4 HEUREMODIF Character 8
5 ATTRIBUTES Character 5
6 LREP Logical 1
et ou le champs CFILES contient +de 3000 fichier comme du genre ce qui suit :
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3749, Monique Grenier 388 Samuel Edey.pdf
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3750, Carl Lessard, 2 chapel.jpg
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3750, Carl Lessard, 2 chapel.pdf
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3751, Carl Lessard, 26 chapel.jpg
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3751, Carl Lessard, 26 chapel.pdf
C:\Users\eddymaue\SkyDrive\facture\014-10-03 #3752 Carole Levesque, 68 Imp des Vents.jpg
C:\Users\eddymaue\SkyDrive\facture\2015 05 28\ 0001.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 28\ 0002.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 28\ 0003.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 28\ 0004.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 28\ 0005.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 27\ 0001.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 27\ 0002.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 27\ 0003.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 27\ 0004.pdf
C:\Users\eddymaue\SkyDrive\facture\2015 05 27\ 0005.pdf
Et voici la requête qui me fait probleme
Select JustPath(cfiles) as cPath ;&& converti le type memo en charactère
from facture ;
into cursor test ;
order by datemodif descending ;
where not lrep
et le resulatat est
cPath =
C:\Users\eddymaue\SkyDrive\facture\
C:\Users\eddymaue\SkyDrive\facture\
C:\Users\eddymaue\SkyDrive\facture\
C:\Users\eddymaue\SkyDrive\facture\
C:\Users\eddymaue\SkyDrive\facture\
.....
C:\Users\eddymaue\SkyDrive\facture\ && ca aurait dû etre C:\Users\eddymaue\SkyDrive\facture\2015 05 27\
Par contre si je ne fait que
Select cfiles as cPath ;
from facture ;
into cursor test ;
order by datemodif descending ;
where not lrep
le champs cPath est de type memo et correctement rempli par facture.cfiles
si j'essais
Select Alltrim(cfiles) as cPath ; && converti le type memo en charactère
from facture ;
into cursor test ;
order by datemodif descending ;
where not lrep
rep: string is too long
et effectivement il y a quelque enregistrement de plus de 255 caractères
Select subs(cfiles,Rat("\",cfiles))....
va me donner le \ 0005.pdf et ca demeure un champ memo. ce que je veux c'est un champ caractère
Select subs(cfiles,1,Rat("\",cfiles)) as cpath ....
va me donner le bon path et je reste toujours dans un champ memo et je désire toujours un champ caractère
bref du moment qu'il y a convertion de type sur le champ cPath la requête tronque le cPath à "C:\Users\eddymaue\SkyDrive\facture\"
donc je dois passer par le code suivant pour y parvenir
* la requête
Select subs(cfiles,1,Rat("\",cfiles)) as cpath ,;
Substr(cFiles,Rat("\",cfiles)+1) as cName ;
from facture ;
into table Test ;
order by datemodif descending ;
where not lrep
* le nbre de car par champ
Select Max(Len(cName)) , Max(Len(cPath)), from Test into array nMax && 198 , 68
* alteration des champs
Alter Table Test alter column cName c(nMax(1))
Alter Table Testc alter column cPath c(nMax(2))
le résultat est bon mais j'aurais aimer que cela ce fasse dans une seul requete
et voilà un beau dimance apres midi à résoudre des ti problemes
--
Merci de partager avec moi votre immense savoir que je me ferai plaisir
d'absorber...
il va de soi que je vais vous en laisser un peu
Politesse et savoir vivre oblige ;0)
Permalink : http://www.atoutfox.org/nntp.asp?ID=0000016411