Non valorizzare un campo data in sql server 2005

martedì 24 ottobre 2006 - 15.38

trinity Profilo | Guru

Ragazzi,
in sql server 2005 ho creato una tabella nella quale vi sono due campi data. Il primo è chiamato data_arrivo, mentre il secondo data_partenza. a come si può ben notare il campo data arrivo verrà valorizzato immeditamente al salvataggio dei dati mentre il campo data_partenza deve rimanere vuoto fino a quando non parte il cliente e quindi il campo verrà aggiornato e valorizzato.
Solo che se eseguo una stored di salvataggio, mi esce l'errore che il campo data_partenza deve essere valorizzato eppure nella creazione della tabella ho attivato che deve accettare i valori null

Come mai? e potete darmi un consiglio su come procedere?
dimenticavo vi posto il codice della stored per sicurezza:

ALTER PROCEDURE [dbo].[InsC59] ( @Nschedina Int, @Data_arrivo Smalldatetime, @Data_partenza Smalldatetime, @Stato_res Varchar(250), @Comune Varchar(250), @Prov Varchar(2), @Stato Varchar(1) ) AS BEGIN Insert Into dbo.Archivio_Mov (prog_schedina,data_arrivo,data_partenza,stato_res,comune,prov,stato) Values (@Nschedina,@Data_arrivo,@Data_partenza,@Stato_res,@Comune,@Prov,@Stato) END

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

AndreaKpr Profilo | Senior Member

Ciao, ho fatto roba simile a me problemi non ne ha dati...
Fai una prova : invece di leggere il parametro forza null nel "Insert"
Cosi escludi problematiche per il passaggio del parametro e vedi se funziona, si curo che la cella può accettare il null ???

lbenaglia Profilo | Guru

>come si può ben notare il campo data arrivo
>verrà valorizzato immeditamente al salvataggio dei dati mentre
>il campo data_partenza deve rimanere vuoto fino a quando non
>parte il cliente e quindi il campo verrà aggiornato e valorizzato.
Si può ben notare da cosa?
Posta il comando CREATE TABLE della tabella Archivio_Mov completo di constraint.

>Solo che se eseguo una stored di salvataggio, mi esce l'errore
>che il campo data_partenza deve essere valorizzato eppure nella
>creazione della tabella ho attivato che deve accettare i valori
>null
Se come penso la colonna data_partenza verrà valorizzata con un DEFAULT, per quale motivo la stored procedure prevede il parametro di input @Data_partenza utilizzato successivamente nel comando di INSERT?

>Come mai? e potete darmi un consiglio su come procedere?
Ah boh, posta la tabella, un esempio di chiamata della sp, l'errore che ricevi ed il risultato che vorresti ottenere.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

ecco il codice di creazione della tabella:

USE [dbsend] GO /****** Oggetto: Table [dbo].[Archivio_mov] Data script: 10/24/2006 15:51:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Archivio_mov]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [prog_schedina] [int] NOT NULL, [data_arrivo] [smalldatetime] NULL, [data_partenza] [smalldatetime] NULL, [stato_res] [varchar](250) COLLATE Latin1_General_CI_AS NULL, [comune] [varchar](250) COLLATE Latin1_General_CI_AS NULL, [prov] [varchar](2) COLLATE Latin1_General_CI_AS NULL, [stato] [varchar](1) COLLATE Latin1_General_CI_AS NULL, CONSTRAINT [PK_Archivio_mov_1] PRIMARY KEY CLUSTERED ( [Id] ASC, [prog_schedina] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF

ecco invece il codice di richiamo nella form della stored di inserimento:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ecco invece il codice della stored:

ALTER PROCEDURE [dbo].[InsC59] ( @Nschedina Int, @Data_arrivo Smalldatetime, @Data_partenza Smalldatetime, @Stato_res Varchar(250), @Comune Varchar(250), @Prov Varchar(2), @Stato Varchar(1) ) AS BEGIN Insert Into dbo.Archivio_Mov (prog_schedina,data_arrivo,data_partenza,stato_res,comune,prov,stato) Values (@Nschedina,@Data_arrivo,@Data_partenza,@Stato_res,@Comune,@Prov,@Stato) END

in altre parole quando salvo il record...il campo data_poartenza non deve essere valorizzato perchè verrà valorizzato in seguito con un'altra procedura
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>in altre parole quando salvo il record...il campo data_poartenza
>non deve essere valorizzato perchè verrà valorizzato in seguito
>con un'altra procedura

Perdonami Fabio,

se non devi valorizzare data_partenza, per quale motivo lo prevedi come parametro di input nella sp?!
Non puoi eliminare il parametro @Data_partenza e modificare il comando di INSERT nel seguente modo?

CREATE PROCEDURE [dbo].[InsC59] ( @Nschedina Int, @Data_arrivo Smalldatetime, @Stato_res Varchar(250), @Comune Varchar(250), @Prov Varchar(2), @Stato Varchar(1) ) AS INSERT INTO dbo.Archivio_Mov ( prog_schedina , data_arrivo , stato_res , comune , prov , stato ) VALUES ( @Nschedina , @Data_arrivo , @Stato_res , @Comune , @Prov , @Stato ) ;

Ovviamente anche il codice client .net non dovrà prevedere il medesimo parametro...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Hai perfettamente ragione...certo non accorgermi di questo è grave.
Grazie Lorenzo...

P.s. sul tuo blog ti ho scritto una domanda per quanto riguarda il metodo Truncate di sql se questo ha la stessa possibilità come il delete di utilizzare la clausola Where...

Ciao e grazie mille
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>P.s. sul tuo blog ti ho scritto una domanda per quanto riguarda
>il metodo Truncate di sql se questo ha la stessa possibilità
>come il delete di utilizzare la clausola Where...
No, il comando TRUNCATE TABLE non ammette alcuna clausola WHERE.
http://msdn.microsoft.com/library/en-us/tsqlref/ts_ta-tz_2hk5.asp

>Ciao e grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5