Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83

    errore inserimento lunghi testi

    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

    codice:
    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

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    83
    ciao! innanzitutto grazie x la risposta.
    la tabella contenente il campo descrizione è stata creata nel modo seguente

    codice:
    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

    codice:
    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

    codice:
    	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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.