PREMESSA
Posto questo topic per vari motivi:
1) Altri come me avranno sto problema con le benedette formule ed i
campi memo, quindi può essere di aiuto;
2) Esempio per chi non conosce google e le sue potenzialità;
3) Magari qualcuno ha qualche altro suggerimento;
FINE PREMESSA
I FATTI
Crystal Report considera un qualsiasi campo di testo
con dimensione superiore ai 254 caratteri, campi blob
o campi memo (true memo) come campi memo.
CR, non conoscendo la dimensione fisica di questi campi,
non ne permette l'utilizzo nelle formule.
Questo è molto scomodo, soprattutto se è veramente necessario
usare un campo memo nelle formule (per testare se, ad esempio,
è null o contiene o meno una stringa).
(Letto in giro : "...This is a known issue with CrystalReports version 8.5
and earlier and has been tracked. The CR Track ID
is: ADAPT00010707. ..."
http://216.239.39.100/search?q=cache...hl=en&ie=UTF-8
);
NOTA: In CR 9 si possono usare campi memo nelle formule.Era ora!
(http://216.239.51.100/search?q=cache...hl=en&ie=UTF-8);
Ci sono comunque alcuni work-around applicabili:
1) Nelle funzioni l'istruzione IsNull accetta campi memo
(http://support.crystaldecisions.com/kbase/c2007285.asp);
Testato, funziona.
2) Se possibile si può modificare la stringa SQL che pesca
i dati aggiungendo tra i campi della SELECT un "LEFT(NomeCampoMemo, 254) As NuovoNome",
si potrà quindi utilizzare "NuovoNome" nelle formule (almeno per vedere se esiste o meno)
(http://www.experts-exchange.com/Data..._20347923.html);
Testato, è possibile;
3) Usare funzioni relative al database
"...You use a SQL expression field within Crystal, and fool
Crystal into using the memo field._ Crystal has access to the
SQL Substring() function, which can take characters out of
any character field..."
Ma naturalmente dicono che funzioni solo con SQL-Server e (forse) ORACLE.codice:{fn SUBSTRING ( Employees."Notes" , 10 , 60 ) }
Non con Access.
Non testato;
(http://www.kenhamady.com/news0206.html)
4) Abbinare a ogni campo memo un campo booleano
dove mettete True se il campo memo è impostato, altrimenti False.
(http://groups.google.com/groups?q=cr...eja.com&rnum=4)
Non occorre testarlo, funziona di sicuro, ma comporta scomode modifiche al
programma che gestisce il database.
5) Create una query (access) o una vista (selserver ?) in cui
caricate tutti i campi della tabella e in più lo stesso campo memo limitato
a 254 caratteri. Es.:
Poi nel report, invece di fare riferimento alla tabella,codice:SELECT *, left(NomeCampoMemo,254) AS NuovoNome FROM Tabella
fate riferimento alla query/vista.
(http://groups.google.com/groups?hl=e...lg%26rnum%3D15);
Questo lo devo ancora testare ma promette bene.