*Para enviar un DataTable desde el APP a SQL y tratarlo directamente.
/****************************CREA TABLA TYPE******************************/
USE miBD
CREATE TYPE [dbo].CargaMITABLAValidaType AS TABLE(
[periodo] [int] NULL,
[tipo_registro] [int] NULL,
[fecha_proceso] [smalldatetime] NOT NULL
)
/**************************FIN CREA TABLA TYPE******************************/
/*************************SP QUE USA TABLA TYPE*************************/
/****** Object: StoredProcedure [dbo].[pa_lo_valida_edicion_c13] Script Date: 01/20/2016 18:39:43 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/* =============================================
-- Author:
JC
-- Create date: 20-01-2016
-- Description:
Valida que los campos ingresados en informe
declare @cod_error INT
declare @desc_error varchar(500)
declare @miTabla CargaMITABLAValidaType
insert into @miTabla VALUES (201601,2,'20150102')
--select * FROM @miTabla
exec pa_lo_valida_edicion @miTabla , @cod_error OUTPUT, @desc_error OUTPUT
--select @cod_error, @desc_error
-- =============================================
*/
CREATE PROCEDURE [dbo].[pa_lo_valida_edicion]
@miTabla AS CargaMITABLAValidaType READONLY ,
@cod_error INT OUTPUT ,
@desc_error VARCHAR(500) OUTPUT
AS
BEGIN
--variables de recorido
DECLARE
@periodo [int] ,
@tipo_registro [int] ,
@fecha_proceso [smalldatetime]
--tabla de validaciones
CREATE TABLE #validaciones
(
[periodo] [int] NOT NULL ,
[tipo_registro] [int] NOT NULL ,
[fecha_proceso] [smalldatetime] NOT NULL ,
)
--cursor de recorrido - VALIDACIONES
DECLARE c_valida CURSOR LOCAL
FOR
SELECT
periodo ,
tipo_registro ,
fecha_proceso ,
FROM
@miTabla
OPEN c_valida
FETCH c_valida INTO @periodo, @tipo_registro,@fecha_proceso
--
WHILE ( @@FETCH_STATUS = 0 )
BEGIN -- Inicio Ciclo
-- Seteo varaiables con valores OK
SELECT
@cod_error = 0 ,
@desc_error = 'OK'
--Validaciones
IF ( @periodo <> '2016'
)
BEGIN
SELECT
@cod_error = 1 ,
@desc_error = 'Mensaje de Error Aquí'
END
-- fin ciclo
INSERT
INTO #validaciones
VALUES
( @periodo, @tipo_registro, @fecha_proceso,
@cod_error,
@desc_error )
FETCH c_valida INTO @periodo, @tipo_registro,
@fecha_proceso
END
CLOSE c_valida
DEALLOCATE c_valida
SELECT error,desc_error FROM #validaciones
END
GO
/*************************FIN SP QUE USA TABLA TYPE*************************/
/*************************DAC llamada desde .NET C#*************************/
public DataTable ValidaEdicionC13(DataTable dt)
{
Database db = DatabaseFactory.CreateDatabase("LeaseOper"); //enterprise library 5.0
var ds = new DataSet();
var retorno = false;
var dataTable = new DataTable();
try
{
using (var cnxx = new SqlConnection(db.ConnectionString))
{
SqlCommand cmd = new SqlCommand("pa_lo_valida_edicion", cnxx);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvparam = cmd.Parameters.AddWithValue("@miTabla", dt);
tvparam.SqlDbType = SqlDbType.Structured;
db.AddOutParameter(cmd, "@cod_error", DbType.Int32, int.MaxValue);
db.AddOutParameter(cmd, "@desc_error", DbType.String, int.MaxValue);
cmd.Connection.Open();
SqlDataAdapter theDataAdapter = new SqlDataAdapter(cmd);
//los rescato pero no los estoy usando
var codError = db.GetParameterValue(cmd, "@cod_error");
var desError = db.GetParameterValue(cmd, "@desc_error");
theDataAdapter.Fill(ds);
}
}
catch (Exception ex)
{
throw ex;
}
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0];
return dataTable;
}
/*************************.CS llamada desde .NET C# con JQUERY*************************/
[WebMethod]
public static string GeneraCuponera(object rows, string idDoc)
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add("operacion", typeof(decimal));
dt.Columns.Add("cod_material", typeof(int));
string json = new JavaScriptSerializer().Serialize(rows);
dynamic selectedRows = JsonConvert.DeserializeObject(json);
foreach (dynamic rowGrid in selectedRows)
{
DataRow rowDt = dt.NewRow();
rowDt["operacion"] = Convert.ToDecimal(rowGrid.operacion);
rowDt["cod_material"] = Convert.ToDecimal(rowGrid.cod_material);
dt.Rows.Add(rowDt);
}
var retorno = new BcCuponeras().GeneraCuponera(dt);
return JsonConvert.SerializeObject(retorno);
}
catch (Exception ex)
{
var err = JsonConvert.SerializeObject(ex.Message);
return err;
}
}