PDA

Visualizza la versione completa : Errore di inserimento lunghi testi


acsp
15-08-2006, 18:32
salve a tutti...
sto usando sql server, visual studio 2005 e vb.
tramite una stored procedure, devo inserire nel database un testo di max 2000 caratteri.
mi è stato detto che definire, in una tabella, un campo di tipo text mi avrebbe dato dei problemi e visto che il varchar ammette fino a 8000 caratteri ho definito il campo di mio interesse nel seguente modo


descrizione as varchar(2000)

l'inserimento dei dati è a posto ma il testo inserito in DESCRIZIONE mi viene tagliato.

ad esempio, ho il seguente testo (nr caratteri = 1378):

************************************************** *****************
Si vuol realizzare un database per una stazione televisiva in modo da gestire il palinsesto relativo alla programmazione giornaliera.
Un palinsesto per un dato giorno è composto di fasce temporali corrispondenti ad un programma. Ogni fascia temporale è identificata dal giorno e dall’ora di inizio e si vuole rappresentare anche l’ora di fine. I programmi sono suddivisi in programmi di informazione, fiction (film, telefilm, sceneggiati...) e spettacoli. Per ogni programma interessa conoscere il nome, che lo identifica, e la durata. Inoltre, si vuole registrare il nome del giornalista responsabile dei programmi di informazione, le eventuali restrizioni alla visione (visione sconsigliata ai bambini, per tutti…) delle fiction e la tipologia di spettacolo (varietà, quiz…).
Si intende tenere traccia anche della pubblicità. Ogni evento pubblicitario è identificato dall'azienda e dal nome del prodotto e si richiede di specificare anche la durata. Esistono due tipi di eventi pubblicitari: gli spot e le televendite. Gli spot sono caratterizzati anche da una fascia oraria e dal numero delle volte che lo spot andrà in onda. Gli spot sono trasmessi raggruppati in interruzioni pubblicitarie associate alle fasce temporali del palinsesto. Infine, le televendite vanno in onda solo nel corso degli spettacoli e vengono trasmesse in tutte le puntate, ogni volta alla stessa ora.
************************************************** *****************

ma quando vado a leggere la tabella ottengo solo questo:

************************************************** *****************
Si vuol realizzare un database per una stazione televisiva in modo da gestire il palinsesto relativo alla programmazione giornaliera. Un palinsesto per un dato giorno è composto di fasce temporali co
************************************************** *****************

devo usare x forza il campo di tipo text?
grazie a tutti :dhò:

alka
15-08-2006, 19:57
Ma sei sicuro che non sia un problema di lettura del testo da programma?

Se accedi al database usando un qualsiasi tool di amministrazione, quale contenuto vedi nel campo?

Il problema mi sembra riconducibile a SQL Server oppure all'uso errato di Visual Studio, più che a qualcosa relativo al linguaggio SQL in quanto tale.

acsp
17-08-2006, 16:35
ciao! innanzitutto grazie x la risposta.
la tabella contenente il campo descrizione è stata creata nel modo seguente



create table Progetto
(
codP smallint identity primary key,
titolo varchar (60) not null,
descrizione varchar(2000) not null,
commenti varchar(500),
stato varchar (10) not null default 'wait',
dataApprovazione smalldatetime,
dataConsegna smalldatetime,
voto tinyint check (voto between 0 and 30),
nomefile varchar (100)
)


mentre la stored procedure che inserisce i dati del progetto è la seguente



CREATE PROCEDURE proc_ins_progetto
@tit varchar(50), --titolo
@desc varchar(2000), --descrizione
@gruppo smallint --cod del gruppo
AS
--Inserimento di un nuovo progetto
BEGIN
...
--inserimento del progetto
BEGIN TRANSACTION
insert into Progetto(titolo, descrizione)
values(@tit, @desc)
...
if @@error=0
begin
commit
return 0
end
else
begin
rollback
return 2
end
...


l'inserimento è corretto e non da errori. ma, se apro la tabella dall'enterprise manager o se faccio una semplicissima query del tipo



select * from progetto where codp = ...


o se leggo i dati da vb.net ottengo:

************************************************** **********
codp 8

titolo Gestione stazione televisiva

descrizione Si vuol realizzare un database per una stazione televisiva in modo da gestire il palinsesto relativo alla programmazione giornaliera. Un palinsesto per un dato giorno è composto di fasce temporali co

commenti null

stato wait
...
************************************************** **********

pur avendo inserito il seguente testo

************************************************** **********
Si vuol realizzare un database per una stazione televisiva in modo da gestire il palinsesto relativo alla programmazione giornaliera.
Un palinsesto per un dato giorno è composto di fasce temporali corrispondenti ad un programma. Ogni fascia temporale è identificata dal giorno e dall’ora di inizio e si vuole rappresentare anche l’ora di fine. I programmi sono suddivisi in programmi di informazione, fiction (film, telefilm, sceneggiati...) e spettacoli. Per ogni programma interessa conoscere il nome, che lo identifica, e la durata. Inoltre, si vuole registrare il nome del giornalista responsabile dei programmi di informazione, le eventuali restrizioni alla visione (visione sconsigliata ai bambini, per tutti…) delle fiction e la tipologia di spettacolo (varietà, quiz…).
Si intende tenere traccia anche della pubblicità. Ogni evento pubblicitario è identificato dall'azienda e dal nome del prodotto e si richiede di specificare anche la durata. Esistono due tipi di eventi pubblicitari: gli spot e le televendite. Gli spot sono caratterizzati anche da una fascia oraria e dal numero delle volte che lo spot andrà in onda. Gli spot sono trasmessi raggruppati in interruzioni pubblicitarie associate alle fasce temporali del palinsesto. Infine, le televendite vanno in onda solo nel corso degli spettacoli e vengono trasmesse in tutte le puntate, ogni volta alla stessa ora.
************************************************** **********


perchè?
grazie mille

Loading