il discorso del progschedina l'ho risolto ma non riesco a capire perchè
in questa stored:
ALTER PROCEDURE [dbo].[GetSchedine_new]
(
@Codalbergo Int,
@CodComAlbergo Int,
@Data SmallDateTime
)
AS
BEGIN
SET NOCOUNT ON;
SELECT
ARC.codalbergo,
ARC.codcomalbergo,
ARC.progschedina,
count(progschedina)As Nrcomp,
ARC.dataArrivo,
ARC.DataPartenza,
ARC.idstato,
Nazione=N.Nazione,
ARC.idcomune,
Comune=C.Comune,
Provincia=C.prov,
ARC.idgruppo,
DescrizioneGruppo=G.Descrizione
FROM dbo.Archivio_mov_new ARC
JOIN
dbo.Nazioni N
ON N.CodicePgrStatistica=ARC.Idstato
JOIN
dbo.Comuni C
ON C.codcomune=ARC.idcomune
JOIN
dbo.Gruppi G
ON G.Codicegruppo=ARC.idgruppo
WHERE
codalbergo=@codalbergo
And CodComAlbergo=@CodComAlbergo
And dataArrivo =@data Or DataPartenza =@Data
Group By
codalbergo,
codcomalbergo,
progschedina,
dataarrivo,
datapartenza,
idstato,
nazione,
idcomune,
comune,
prov,
idgruppo,
Descrizione
Order by progschedina,dataarrivo,datapartenza
END
progschedina è di tipo Int nella tabella del db come anche il campo codalbergo e codcomalbergo.
eseguo la stored scritta su attraverso questa funzione:
Public Function CaricaSchedine(ByVal ObjC59 As PropertyC59) As C59Collection
Dim C59Coll As New C59Collection
SqlCmd.CommandText = "GetSchedine_New"
SqlCmd.Parameters.Add("@CodAlbergo", SqlDbType.Int).Value = ObjC59.CodAlbergo
SqlCmd.Parameters.Add("@CodComAlbergo", SqlDbType.Int).Value =ObjC59.CodComAlbergo
SqlCmd.Parameters.Add("@Data", SqlDbType.SmallDateTime).Value = ObjC59.DataElaborazione
Try
SqlCmd.Connection = Db
SqlCmd.CommandType = CommandType.StoredProcedure
SqlDr = SqlCmd.ExecuteReader
While SqlDr.Read
ObjC59 = New PropertyC59
ObjC59.CodAlbergo = SqlDr.GetSqlInt32(0).Value
ObjC59.CodComAlbergo = SqlDr.GetSqlInt32(1).Value
ObjC59.NumeroSchedina = SqlDr.GetSqlInt32(2).Value
ObjC59.NumeroComponenti = SqlDr.GetSqlInt32(3).Value
ObjC59.DataArrivo = CStr(SqlDr.GetSqlDateTime(4).Value)
If SqlDr.GetSqlDateTime(5).IsNull = True Then
ObjC59.DataPartenza = String.Empty
Else
ObjC59.DataPartenza = CStr(SqlDr.GetSqlDateTime(5).Value)
End If
ObjC59.CodStato_Res = SqlDr.GetSqlInt32(6).Value
ObjC59.StatoResidenza = SqlDr.GetSqlString(7).Value
ObjC59.CodComune = SqlDr.GetSqlInt32(8).Value
ObjC59.ComuneResidenza = SqlDr.GetSqlString(9).Value
ObjC59.ProvinciaResidenza = SqlDr.GetSqlString(10).Value
ObjC59.CodiceGruppo = SqlDr.GetSqlInt32(11).Value
ObjC59.DescrizioneGruppo = SqlDr.GetSqlString(12).Value
C59Coll.Add(ObjC59)
End While
Catch ex As Exception
Throw ex
Finally
SqlDr.Close()
SqlCmd.Parameters.Clear()
SqlCmd.Dispose()
End Try
Return C59Coll
End Function
imposto un punto di terruzione di debug per controllare passo passo i dati, appena passa sulla riga:
ObjC59.NumeroSchedina = SqlDr.GetSqlInt32(2).Value
mi si genera un errore di tipo cast non valido, eppure se eseguo la strored in sql management studio funge tranquillamente restituendomi un valore Int (almeno spero) e poi ha lo stesso data type delle colonne codalbergo e codcomalbergo che non mi danno alcun problema
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com