7 messaggi dal 21 agosto 2008
Buongiorno a tutti,
faccio una premessa chiedendo scusa agli admin, se il thread non è aperto nella sezione corretta.
Comunque, ho un problema su una DetailsView probabilmente derivante dalla vista a cui si appoggia.
Ho un campo 'Note' all'interno del DB (SqlServer) definito come ntext dove ho necessità di salvare il più possibile delle informazioni. In fase di INSERT i dati vengono salvati correttamente ( ho provato oltre i 90 caratteri ed è tutto ok), ma quando invoco tale campo all'interno di una vista i campi vengono troncati a 30 caratteri ( ho definito il campo nella vista come Note = convert(varchar, C.Note) ). Ho provato a sostituire varchar con ntext ma ahimè SqlServer mi restituisce nell'esecuzione dello script per la creazione/modifica della vista il seguente errore:

Impossibile selezionare come DISTINCT il tipo di dati ntext perché non è confrontabile.

qualche idea?
salve
wkgrp ha scritto:
Buongiorno a tutti,
faccio una premessa chiedendo scusa agli admin, se il thread non è aperto nella sezione corretta.
Comunque, ho un problema su una DetailsView probabilmente derivante dalla vista a cui si appoggia.
Ho un campo 'Note' all'interno del DB (SqlServer) definito come ntext dove ho necessità di salvare il più possibile delle informazioni. In fase di INSERT i dati vengono salvati correttamente ( ho provato oltre i 90 caratteri ed è tutto ok), ma quando invoco tale campo all'interno di una vista i campi vengono troncati a 30 caratteri ( ho definito il campo nella vista come Note = convert(varchar, C.Note) ).


la tua definizione di conversione, CONVERT(varchar, col), non ha definito la dimensione della colonna di testo, che quindi viene implicitamente impostata a 30 caratteri, cioe' quello che in effetti ti viene ritornato...

Ho provato a sostituire varchar con ntext ma ahimè SqlServer mi restituisce nell'esecuzione dello script per la creazione/modifica della vista il seguente errore:

Impossibile selezionare come DISTINCT il tipo di dati ntext perché non è confrontabile.

qualche idea?

l'idea sarebbe quella di modificare la query, in modo da non utilizzare un distinct che esegue un raggruppamento sull'identita' di riga proiettata restituendo appunto 1 sola riga per ognuno dei raggruppamenti riscontrati..
altra soluzione sarebbe quella di definire la dimensione della conversione dell'output (vedi sopra) e quindi indicare ad esempio CONVERT(varchar(n), colonna), dove "n" e' la dimensione massima.. se utilizzi SQL Server 2005 o successivo, puoi utilizzare il varchar(MAX), che limita il contenuto a 2gb, diversamente il limite ti resta 8000 caratteri..
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org
http://www.hotelsole.com - http://www.hotelsolericcione.de

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.