/********************************INSERT/UPDATE***************************/
public bool GrabaNominaPagoProveedorEnc(BeNominaPagoProveedorEncabezado obj)
{
try
{
//BeNominaPagoProveedorEncabezado
var result = false;
var upd = 0;
var ins = 0;
Database db = DatabaseFactory.CreateDatabase("LeaseOper");
//intento actualizar, de no haber filas afectadas inserto.
DbCommand command = db.GetSqlStringCommand("UPDATE dbo.t_nomina_pago_proveedor_enc SET numero_nomina = @numero_nomina ,fecha_nomina = @fecha_nomina ,total_nomina = @total_nomina ,envio_contab = @envio_contab ,cod_usuario = @envio_contab,fecha_ingreso_reg = @fecha_ingreso_reg,estado = @estado WHERE numero_nomina = @numero_nomina");
db.AddInParameter(command, "@numero_nomina", DbType.Int32, obj.NumeroNomina);
db.AddInParameter(command, "@fecha_nomina", DbType.DateTime, obj.FechaNomina);
db.AddInParameter(command, "@total_nomina", DbType.Single, obj.TotalNomina);
db.AddInParameter(command, "@envio_contab", DbType.Int32, obj.EnvioContab);
db.AddInParameter(command, "@cod_usuario", DbType.Int32, obj.CodUsuario);
db.AddInParameter(command, "@fecha_ingreso_reg", DbType.DateTime, obj.FechaIngreso);
db.AddInParameter(command, "@estado", DbType.Int16, obj.Estado);
upd = db.ExecuteNonQuery(command);
if (upd == 0)
{
command =
db.GetSqlStringCommand(
"INSERT INTO dbo.t_nomina_pago_proveedor_enc ( numero_nomina ,fecha_nomina ,total_nomina ,envio_contab ,cod_usuario ,fecha_ingreso_reg ,estado) VALUES ( @numero_nomina ,@fecha_nomina ,@total_nomina ,@envio_contab ,@cod_usuario ,@fecha_ingreso_reg ,@estado)");
db.AddInParameter(command, "@numero_nomina", DbType.Int32, obj.NumeroNomina);
db.AddInParameter(command, "@fecha_nomina", DbType.DateTime, obj.FechaNomina);
db.AddInParameter(command, "@total_nomina", DbType.Single, obj.TotalNomina);
db.AddInParameter(command, "@envio_contab", DbType.Int32, obj.EnvioContab);
db.AddInParameter(command, "@cod_usuario", DbType.Int32, obj.CodUsuario);
db.AddInParameter(command, "@fecha_ingreso_reg", DbType.DateTime, obj.FechaIngreso);
db.AddInParameter(command, "@estado", DbType.Int16, obj.Estado);
ins = db.ExecuteNonQuery(command);
}
//compruebo si hubo actualización o inserción
if (upd > 0 || ins > 0)
result = true;
//cierro las conexiones
command.Connection.Close();
command.Connection.Dispose();
//devuelvo el resultado
return result;
}
catch (Exception ex)
{
return false;
}
}
/********************************SELECT***************************/
public DataTable SelectReqPagoDetalle(int numeroReq)
{
DataSet ds = new DataSet();
var dt = new DataTable();
try
{
var result = false;
var upd = 0;
var ins = 0;
Database db = DatabaseFactory.CreateDatabase("LeaseOper");
//intento actualizar, de no haber filas afectadas inserto.
DbCommand command =
db.GetSqlStringCommand(
"SELECT corrrelativo ,num_req ,monto ,rut_beneficiario ,digito ,nombre_beneficiario ,modo_pago ,cod_inst_financ ,cta_cte ,cod_sucursal ,cuenta_contable ,observacion ,envio_contab ,envio_banco ,fecha_envio_banco ,usuario_envio_banco ,fecha_ingreso_reg ,estado FROM leaseoper..t_req_pago_detalle WHERE num_req = @num_req");
db.AddInParameter(command, "@num_req", DbType.Int32, numeroReq);
ds = db.ExecuteDataSet(command);
command.Connection.Close();
command.Connection.Dispose();
}
catch (Exception ex)
{
throw ex;
}
if (ds != null && ds.Tables.Count > 0)
{
dt = ds.Tables[0];
}
return dt;
}
/********************************SP*************************************/
public DataTable ValidayCargaExcelDetalleAnticipo(int idAnticipo, Int16 tipoProceso, DataTable dt)
{
Database db = DatabaseFactory.CreateDatabase("LeaseOper");
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_y_carga_det_insc_trans", cnxx);
cmd.CommandType = CommandType.StoredProcedure;
db.AddInParameter(cmd, "@id_anticipo", DbType.Int32, idAnticipo);
db.AddInParameter(cmd, "@tipo_proceso", DbType.Int16, tipoProceso);
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);
//var mensaje = db.GetParameterValue(cmd, "@cod_error");
//var codigoRespuesta = 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;
}
miércoles, 30 de diciembre de 2015
lunes, 21 de diciembre de 2015
C# - Obtener valor desde una celda, en un row seleccionado (GRID)
var numMinuta = gvParent.GetRowValues(gvParent.FocusedRowIndex,
"ID_MINUTA");
"ID_MINUTA");
miércoles, 9 de diciembre de 2015
C# - Gif cargando al presionar botón
//previo al update panel de la pagina.
<div class="centrar">
<asp:UpdatePanel ID="udpanel" runat="server">
<ContentTemplate>
<dx:ASPxButton ID="btnLoad" runat="server" ClientInstanceName="btnLoad" Text="" ClientVisible="false"
AutoPostBack="true" OnClick="btnLoad_Click">
</dx:ASPxButton>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bonder">
<tr>
<td colspan="3">
</td>
</tr>
<tr>
<td width="30">
</td>
<td align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="td-colum">
<tr>
<td align="center" style="color: white; font-weight: bold">
Cargando
</td>
</tr>
<tr>
<td align="center">
<dx:ASPxImage ID="ASPxImage1" runat="server" ImageUrl="~/Images/carga.gif" Width="160px"
Height="24">
</dx:ASPxImage>
</td>
</tr>
</table>
</td>
<td width="30">
</td>
</tr>
<tr>
<td colspan="3">
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
//contenido, eventos y botones de la página
</asp:UpdatePanel>
<div class="centrar">
<asp:UpdatePanel ID="udpanel" runat="server">
<ContentTemplate>
<dx:ASPxButton ID="btnLoad" runat="server" ClientInstanceName="btnLoad" Text="" ClientVisible="false"
AutoPostBack="true" OnClick="btnLoad_Click">
</dx:ASPxButton>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="bonder">
<tr>
<td colspan="3">
</td>
</tr>
<tr>
<td width="30">
</td>
<td align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="td-colum">
<tr>
<td align="center" style="color: white; font-weight: bold">
Cargando
</td>
</tr>
<tr>
<td align="center">
<dx:ASPxImage ID="ASPxImage1" runat="server" ImageUrl="~/Images/carga.gif" Width="160px"
Height="24">
</dx:ASPxImage>
</td>
</tr>
</table>
</td>
<td width="30">
</td>
</tr>
<tr>
<td colspan="3">
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
//contenido, eventos y botones de la página
</asp:UpdatePanel>
miércoles, 2 de diciembre de 2015
C# - DEVEXPRESS Evitar que una grilla se llene por primera vez
//PAGE INIT , la grilla tiene un evento selecting, con este evento se puede cancelar la carga la primera vez.
protected void Page_Init(object sender, EventArgs e)
{
ObjDataDocumentos.Selecting += ObjDataSourceDocumentos_Selecting;
}
//dentro de este evento cancelo la carga si es la primera vez que entro a la pantalla
void ObjDataSourceDocumentos_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
if (IsPostBack)
{
e.InputParameters["todos"] = Convert.ToByte(chkTodos.Checked == true ? 1 : 0);
}
else
{
e.Cancel = true;
}
}
protected void Page_Init(object sender, EventArgs e)
{
ObjDataDocumentos.Selecting += ObjDataSourceDocumentos_Selecting;
}
//dentro de este evento cancelo la carga si es la primera vez que entro a la pantalla
void ObjDataSourceDocumentos_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
if (IsPostBack)
{
e.InputParameters["todos"] = Convert.ToByte(chkTodos.Checked == true ? 1 : 0);
}
else
{
e.Cancel = true;
}
}
martes, 1 de diciembre de 2015
SQL - Tablas con registros en la Base de Datos
--USE BASE_DE_DATOS
SET NOCOUNT ON DBCC UPDATEUSAGE(0) -- DB size.
--EXEC sp_spaceused-- Table row counts and sizes.
CREATE TABLE #t ( [name] NVARCHAR(128),
[rows] CHAR(11),
reserved VARCHAR(18),
data VARCHAR(18),
index_size VARCHAR(18),
unused VARCHAR(18))
INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?'''
SELECT 'TABLAS CON MAS DE UN REGISTRO',* FROM #t WHERE rows > 0 -- # of rows.
SELECT COUNT(*) AS tablas_con_datos FROM #t WHERE rows > 0
DROP TABLE #t
SET NOCOUNT ON DBCC UPDATEUSAGE(0) -- DB size.
--EXEC sp_spaceused-- Table row counts and sizes.
CREATE TABLE #t ( [name] NVARCHAR(128),
[rows] CHAR(11),
reserved VARCHAR(18),
data VARCHAR(18),
index_size VARCHAR(18),
unused VARCHAR(18))
INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?'''
SELECT 'TABLAS CON MAS DE UN REGISTRO',* FROM #t WHERE rows > 0 -- # of rows.
SELECT COUNT(*) AS tablas_con_datos FROM #t WHERE rows > 0
DROP TABLE #t
jueves, 26 de noviembre de 2015
C# - Obtener string de conexión desde la BD para mostrarlo en APP
ejemplo web.config
<add name="nombreConexion" connectionString="metadata=res://*/Model.ModelAdm.csdl|res://*/Model.ModelAdm.ssdl|res://*/Model.ModelAdm.msl;provider=System.Data.SqlClient;provider connection string="data source=BD-PRODUCCION\GESTION;initial catalog=BDGESTION;user id=sa;password=123456;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
método.
public string ObtenerConexionBD()
{
var conectado = ConfigurationManager.ConnectionStrings["nombreConexion"].ToString().Split(';');
var dataSource = conectado[0].Replace("Data source=", string.Empty).ToString();
return dataSource;
}
<add name="nombreConexion" connectionString="metadata=res://*/Model.ModelAdm.csdl|res://*/Model.ModelAdm.ssdl|res://*/Model.ModelAdm.msl;provider=System.Data.SqlClient;provider connection string="data source=BD-PRODUCCION\GESTION;initial catalog=BDGESTION;user id=sa;password=123456;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
método.
public string ObtenerConexionBD()
{
var conectado = ConfigurationManager.ConnectionStrings["nombreConexion"].ToString().Split(';');
var dataSource = conectado[0].Replace("Data source=", string.Empty).ToString();
return dataSource;
}
viernes, 30 de octubre de 2015
C# - Fecha Universal para SQL desde el Código
public string FechaGenerica(string obj)
{
var año = Convert.ToDateTime(obj).Year;
var mes = Convert.ToDateTime(obj).Month;
var dia = Convert.ToDateTime(obj).Day;
var fechaGen = año.ToString() + mes.ToString() + dia.ToString();
return fechaGen;
}
//ejemplo de llamada
var fIni = FechaGenerica(dteFechIni.Text);
{
var año = Convert.ToDateTime(obj).Year;
var mes = Convert.ToDateTime(obj).Month;
var dia = Convert.ToDateTime(obj).Day;
var fechaGen = año.ToString() + mes.ToString() + dia.ToString();
return fechaGen;
}
//ejemplo de llamada
var fIni = FechaGenerica(dteFechIni.Text);
viernes, 16 de octubre de 2015
C# - Inicializar una Session
//Session
private UserSessionBc UserSession
{
get { return (UserSessionBc)Session["UserSession"]; }
}
private UserSessionBc UserSession
{
get { return (UserSessionBc)Session["UserSession"]; }
}
lunes, 5 de octubre de 2015
C# - Atributos de una Clase echa a mano
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test.Be.Garra
{
public class Garae004Be
{
public string Usuario { get; set; }
public int Terminal { get; set; }
public Single Canal { get; set; }
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test.Be.Garra
{
public class Garae004Be
{
public string Usuario { get; set; }
public int Terminal { get; set; }
public Single Canal { get; set; }
}
}
domingo, 27 de septiembre de 2015
SQL - Trigger Update
/*Tanto para INSERT y UPDATE la tabla usada en los TRIGGER es INSERTED. para los delete es DELETED*/
USE [Gestion]
GO
/****** Object: Trigger [dbo].[upd_requerimientos] Script Date: 27/09/2015 12:02:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Create Trigger (New Menu).SQL
ALTER TRIGGER [dbo].[upd_requerimientos] ON [dbo].[REQUERIMIENTO]
AFTER UPDATE
AS
BEGIN
DECLARE @id_requerimiento INT
,@id_archivo INT
SELECT @id_requerimiento = ID_REQUERIMIENTO
,@id_archivo = ID_ARCHIVO
FROM inserted
UPDATE Gestion..REL_REQUERIMIENTO_ARCHIVO
SET ID_ARCHIVO = @id_archivo
WHERE ID_REQUERIMIENTO = @id_requerimiento
END
/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
USE [Gestion]
GO
/****** Object: Trigger [dbo].[upd_requerimientos] Script Date: 27/09/2015 12:02:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Create Trigger (New Menu).SQL
ALTER TRIGGER [dbo].[upd_requerimientos] ON [dbo].[REQUERIMIENTO]
AFTER UPDATE
AS
BEGIN
DECLARE @id_requerimiento INT
,@id_archivo INT
SELECT @id_requerimiento = ID_REQUERIMIENTO
,@id_archivo = ID_ARCHIVO
FROM inserted
UPDATE Gestion..REL_REQUERIMIENTO_ARCHIVO
SET ID_ARCHIVO = @id_archivo
WHERE ID_REQUERIMIENTO = @id_requerimiento
END
/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
SQL - Trigger Insert
USE [Gestion]
GO
/****** Object: Trigger [dbo].[ins_requerimientos] Script Date: 27/09/2015 11:56:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Create Trigger (New Menu).SQL
ALTER TRIGGER [dbo].[ins_requerimientos]
on [dbo].[REQUERIMIENTO]
for INSERT --DECLARO QUE ES CUANDO OCURRA UNA INSERCION EN LA TABLA REQUERIMIENTOS
as
DECLARE @id_requerimiento INT
,@id_archivo INT
SELECT @id_requerimiento = ID_REQUERIMIENTO --OBTENGO VALORES DE ENTRADA DESDE LA TABLA INSERTED
,@id_archivo = ID_ARCHIVO
FROM inserted
--Y LOS USO PARA INSERTAR SOBRE UNA SEGUNDA TABLA
INSERT INTO Gestion..REL_REQUERIMIENTO_ARCHIVO
( ID_REQUERIMIENTO, ID_ARCHIVO )
VALUES ( @id_requerimiento, -- ID_REQUERIMIENTO - int
@id_archivo -- ID_ARCHIVO - int
)
/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
/************************************************************************/
GO
/****** Object: Trigger [dbo].[ins_requerimientos] Script Date: 27/09/2015 11:56:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Create Trigger (New Menu).SQL
ALTER TRIGGER [dbo].[ins_requerimientos]
on [dbo].[REQUERIMIENTO]
for INSERT --DECLARO QUE ES CUANDO OCURRA UNA INSERCION EN LA TABLA REQUERIMIENTOS
as
DECLARE @id_requerimiento INT
,@id_archivo INT
SELECT @id_requerimiento = ID_REQUERIMIENTO --OBTENGO VALORES DE ENTRADA DESDE LA TABLA INSERTED
,@id_archivo = ID_ARCHIVO
FROM inserted
--Y LOS USO PARA INSERTAR SOBRE UNA SEGUNDA TABLA
INSERT INTO Gestion..REL_REQUERIMIENTO_ARCHIVO
( ID_REQUERIMIENTO, ID_ARCHIVO )
VALUES ( @id_requerimiento, -- ID_REQUERIMIENTO - int
@id_archivo -- ID_ARCHIVO - int
)
/************************************************************************/
/*TABLAS AFECTADAS PARA TENER UNA IDEA*/
CREATE TABLE [dbo].[REQUERIMIENTO](
[ID_REQUERIMIENTO] [int] IDENTITY(1,1) NOT NULL,
[ID_PROYECTO] [int] NULL,
[NOMBRE_REQUERIMIENTO] [varchar](max) NULL,
[DESCRIPCION_REQUERIMIIENTO] [varchar](max) NULL,
[TIPO_REQUERIMIENTO] [varchar](50) NULL,
[ESTADO] [tinyint] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REQUERIMIENTO] PRIMARY KEY CLUSTERED
(
[ID_REQUERIMIENTO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[REL_REQUERIMIENTO_ARCHIVO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_REQUERIMIENTO] [int] NULL,
[ID_ARCHIVO] [int] NULL,
CONSTRAINT [PK_REL_REQUERIMIENTO_ARCHIVO] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
/************************************************************************/
lunes, 7 de septiembre de 2015
SQL - Saber últimas consultas hechas sobre BD y quién.
SELECT s.host_name ,
s.program_name ,
c.session_id ,
c.most_recent_session_id ,
c.connect_time ,
c.net_transport ,
c.protocol_type ,
c.protocol_version ,
c.endpoint_id ,
c.encrypt_option ,
c.auth_scheme ,
c.node_affinity ,
c.num_reads ,
c.num_writes ,
c.last_read ,
c.last_write ,
c.net_packet_size ,
c.client_net_address ,
c.client_tcp_port ,
c.local_net_address ,
c.local_tcp_port ,
c.connection_id ,
c.parent_connection_id ,
c.most_recent_sql_handle ,
s.session_id ,
s.login_time ,
s.host_name ,
s.program_name ,
s.host_process_id ,
s.client_version ,
s.client_interface_name ,
s.security_id ,
s.login_name ,
s.nt_domain ,
s.nt_user_name ,
s.status ,
s.context_info ,
s.cpu_time ,
s.memory_usage ,
s.total_scheduled_time ,
s.total_elapsed_time ,
s.endpoint_id ,
s.last_request_start_time ,
s.last_request_end_time ,
s.reads ,
s.writes ,
s.logical_reads ,
s.is_user_process ,
s.text_size ,
s.language ,
s.date_format ,
s.date_first ,
s.quoted_identifier ,
s.arithabort ,
s.ansi_null_dflt_on ,
s.ansi_defaults ,
s.ansi_warnings ,
s.ansi_padding ,
s.ansi_nulls ,
s.concat_null_yields_null ,
s.transaction_isolation_level ,
s.lock_timeout ,
s.deadlock_priority ,
s.row_count ,
s.prev_error ,
s.original_security_id ,
s.original_login_name ,
s.last_successful_logon ,
s.last_unsuccessful_logon ,
s.unsuccessful_logons ,
s.group_id ,
st.dbid ,
st.objectid ,
st.number ,
st.encrypted ,
st.text
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s ON c.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS st
ORDER BY c.session_id
SELECT deqs.last_execution_time AS [Time] ,
dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
s.program_name ,
c.session_id ,
c.most_recent_session_id ,
c.connect_time ,
c.net_transport ,
c.protocol_type ,
c.protocol_version ,
c.endpoint_id ,
c.encrypt_option ,
c.auth_scheme ,
c.node_affinity ,
c.num_reads ,
c.num_writes ,
c.last_read ,
c.last_write ,
c.net_packet_size ,
c.client_net_address ,
c.client_tcp_port ,
c.local_net_address ,
c.local_tcp_port ,
c.connection_id ,
c.parent_connection_id ,
c.most_recent_sql_handle ,
s.session_id ,
s.login_time ,
s.host_name ,
s.program_name ,
s.host_process_id ,
s.client_version ,
s.client_interface_name ,
s.security_id ,
s.login_name ,
s.nt_domain ,
s.nt_user_name ,
s.status ,
s.context_info ,
s.cpu_time ,
s.memory_usage ,
s.total_scheduled_time ,
s.total_elapsed_time ,
s.endpoint_id ,
s.last_request_start_time ,
s.last_request_end_time ,
s.reads ,
s.writes ,
s.logical_reads ,
s.is_user_process ,
s.text_size ,
s.language ,
s.date_format ,
s.date_first ,
s.quoted_identifier ,
s.arithabort ,
s.ansi_null_dflt_on ,
s.ansi_defaults ,
s.ansi_warnings ,
s.ansi_padding ,
s.ansi_nulls ,
s.concat_null_yields_null ,
s.transaction_isolation_level ,
s.lock_timeout ,
s.deadlock_priority ,
s.row_count ,
s.prev_error ,
s.original_security_id ,
s.original_login_name ,
s.last_successful_logon ,
s.last_unsuccessful_logon ,
s.unsuccessful_logons ,
s.group_id ,
st.dbid ,
st.objectid ,
st.number ,
st.encrypted ,
st.text
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s ON c.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS st
ORDER BY c.session_id
SELECT deqs.last_execution_time AS [Time] ,
dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
C# - Operador Condicional Ternario ( ? : )
IF clásico
IF(Valor != null)
Valor = item.valor;
ELSE
Valor = 0.0;
En reemplazo de un IF "Operador Condicional Ternario"
Valor = item.valor != null ? (float)item.valor: (float)0.0;
IF(Valor != null)
Valor = item.valor;
ELSE
Valor = 0.0;
En reemplazo de un IF "Operador Condicional Ternario"
Valor = item.valor != null ? (float)item.valor: (float)0.0;
martes, 4 de agosto de 2015
C# - Solo números con control textbox asp y javascript
1.Crear un archivo Javascript (o dentro de las etiquetas correspondientes dentro de la misma página, no recomendado). en la estructura del sitio web.
2.Dentro del archivo crear la function (función para el ingreso de solo números).
/*Función solo Números*/
function SoloNumeros(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
status = "Este campo solo acepta números!";
return false;
}
}
3. Indicar referencia en la página al archivo .js creado. (escribiéndolo, o arrastrándolo)
4. Agregar la function como atributo en el control requerido en evento Page_Init() de la página.
protected void Page_Init(object sender, EventArgs e)
{
this.txtRut.Attributes.Add("OnKeyPress", "return SoloNumeros(event)");
}
lunes, 13 de julio de 2015
C# - Editar control (combo) asp dentro de una grilla Devexpress
Se ubica el método:
de la grilla, en este método se pinta el formulario que se va a editar (campos de la grilla.) Aquí adentro puedo realizar validaciones o manipulación de los controles. Por ejemplo:
private void miGrilla_HtmlEditFormCreated(object sender, ASPxGridViewEditFormEventArgs e)
{
ASPxGridView control = (ASPxGridView) sender;
int indice = gvValorSeguro.EditingRowVisibleIndex;
if (!control.IsNewRowEditing)
{
if (Convert.ToInt32(Session["valor"]) == 5) //ejemplo de alguna condición que se necesite
{
//para el ejemplo se usa un combo asp normal, pero puede ser cualquier tipo de control.
DropDownList miCombo = (gvValorSeguro.FindEditFormTemplateControl("miCombo") as DropDownList);
if (miCombo != null)
miCombo.Enabled = true;
}
}
}
- miGrilla_HtmlEditFormCreated(object sender, ASPxGridViewEditFormEventArgs e)
de la grilla, en este método se pinta el formulario que se va a editar (campos de la grilla.) Aquí adentro puedo realizar validaciones o manipulación de los controles. Por ejemplo:
private void miGrilla_HtmlEditFormCreated(object sender, ASPxGridViewEditFormEventArgs e)
{
ASPxGridView control = (ASPxGridView) sender;
int indice = gvValorSeguro.EditingRowVisibleIndex;
if (!control.IsNewRowEditing)
{
if (Convert.ToInt32(Session["valor"]) == 5) //ejemplo de alguna condición que se necesite
{
//para el ejemplo se usa un combo asp normal, pero puede ser cualquier tipo de control.
DropDownList miCombo = (gvValorSeguro.FindEditFormTemplateControl("miCombo") as DropDownList);
if (miCombo != null)
miCombo.Enabled = true;
}
}
}
martes, 7 de julio de 2015
SQL - Ver ejecuciones de un determinado JOB
use master
go
CREATE PROCEDURE [dbo].[sp_ViewJobListing]
(
@JobName VARCHAR(255)=NULL
)
--exec master..sp_ViewJobListing 'Nombre de mi Job'
AS
BEGIN
IF OBJECT_ID('tempdb..#Results')>0
DROP TABLE #Results
CREATE TABLE #Results
(
job_id UNIQUEIDENTIFIER NOT NULL,
last_run_date INT NOT NULL,
last_run_time INT NOT NULL,
next_run_date INT NOT NULL,
next_run_time INT NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id SYSNAME COLLATE DATABASE_DEFAULT NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL
)
DECLARE @JobID VARCHAR(100)
SELECT TOP 1 @JobID = job_ID FROM msdb.dbo.sysjobs
INSERT INTO #Results
EXECUTE master.dbo.xp_sqlagent_enum_jobs 1, @JobID
SELECT
s.Name,
CASE WHEN s.enabled = 0 THEN 'No' ELSE 'Yes' END AS Enabled,
CASE WHEN next_run_date > 0 THEN 'Yes' ELSE 'No' END AS Scheduled,
sc.name AS Category,
current_step AS CurrentExecutionStep,
last_run_date,
next_run_date,
CASE WHEN xp.running = 0 THEN 'Not Running' ELSE 'Executing...' END AS Status,
ISNULL((
SELECT CASE WHEN run_status = 1 THEN 'Succeeded' WHEN run_status = 3 THEN 'Cancelled' WHEN run_status = 0 THEN 'Failed' WHEN run_status IS NULL THEN 'Unknown' END AS LastRunStatus
FROM
msdb..sysjobhistory sho
WHERE
sho.job_id = xp.job_id AND
sho.instance_id =
(
SELECT MAX(instance_id)
FROM msdb..sysjobhistory sj (NOLOCK)
WHERE sj.job_id = sho.job_id
)
) ,'Unknown') AS LastRunStatus
FROM #Results xp
INNER JOIN msdb..sysjobs s on xp.job_id = s.job_id
INNER JOIN msdb..syscategories sc on s.category_id = sc.category_id
WHERE
s.Name = ISNULL(@JobName, s.Name)
ORDER BY s.Name
IF @JobName IS NOT NULL
BEGIN
CREATE TABLE #JobHistory
(
StepID INT,
StepName SYSNAME,
Message NVARCHAR(4000),
RunStatus INT,
RunDate INT,
RunTime INT,
RunDuration INT,
operator_emailed NVARCHAR(100),
operator_netsent NVARCHAR(100),
operator_paged NVARCHAR(100)
)
INSERT INTO #JobHistory
SELECT
sjh.step_id,
sjh.step_name,
sjh.message,
sjh.run_status,
sjh.run_date,
sjh.run_time,
sjh.run_duration,
operator_emailed = so1.name,
operator_netsent = so2.name,
operator_paged = so3.name
FROM
msdb.dbo.sysjobhistory sjh
JOIN msdb.dbo.sysjobs sjj ON sjh.job_id = sjj.job_id
LEFT OUTER JOIN msdb.dbo.sysoperators so1 ON (sjh.operator_id_emailed = so1.id)
LEFT OUTER JOIN msdb.dbo.sysoperators so2 ON (sjh.operator_id_netsent = so2.id)
LEFT OUTER JOIN msdb.dbo.sysoperators so3 ON (sjh.operator_id_paged = so3.id),
msdb.dbo.sysjobs sj
WHERE
sjj.Name = @JobName and
(sj.job_id = sjh.job_id)
SELECT
StepID, StepName, Message, RunDate AS LastRunTime,
CASE RunStatus
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry (step only)'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In-progress message'
WHEN 5 THEN 'Unknown'
END AS RunStatus
FROM #JobHistory
ORDER BY LastRunTime DESC, StepID ASC
END
END
GO
EXECUTE sp_ms_marksystemobject 'sp_ViewJobListing'
go
CREATE PROCEDURE [dbo].[sp_ViewJobListing]
(
@JobName VARCHAR(255)=NULL
)
--exec master..sp_ViewJobListing 'Nombre de mi Job'
AS
BEGIN
IF OBJECT_ID('tempdb..#Results')>0
DROP TABLE #Results
CREATE TABLE #Results
(
job_id UNIQUEIDENTIFIER NOT NULL,
last_run_date INT NOT NULL,
last_run_time INT NOT NULL,
next_run_date INT NOT NULL,
next_run_time INT NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id SYSNAME COLLATE DATABASE_DEFAULT NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL
)
DECLARE @JobID VARCHAR(100)
SELECT TOP 1 @JobID = job_ID FROM msdb.dbo.sysjobs
INSERT INTO #Results
EXECUTE master.dbo.xp_sqlagent_enum_jobs 1, @JobID
SELECT
s.Name,
CASE WHEN s.enabled = 0 THEN 'No' ELSE 'Yes' END AS Enabled,
CASE WHEN next_run_date > 0 THEN 'Yes' ELSE 'No' END AS Scheduled,
sc.name AS Category,
current_step AS CurrentExecutionStep,
last_run_date,
next_run_date,
CASE WHEN xp.running = 0 THEN 'Not Running' ELSE 'Executing...' END AS Status,
ISNULL((
SELECT CASE WHEN run_status = 1 THEN 'Succeeded' WHEN run_status = 3 THEN 'Cancelled' WHEN run_status = 0 THEN 'Failed' WHEN run_status IS NULL THEN 'Unknown' END AS LastRunStatus
FROM
msdb..sysjobhistory sho
WHERE
sho.job_id = xp.job_id AND
sho.instance_id =
(
SELECT MAX(instance_id)
FROM msdb..sysjobhistory sj (NOLOCK)
WHERE sj.job_id = sho.job_id
)
) ,'Unknown') AS LastRunStatus
FROM #Results xp
INNER JOIN msdb..sysjobs s on xp.job_id = s.job_id
INNER JOIN msdb..syscategories sc on s.category_id = sc.category_id
WHERE
s.Name = ISNULL(@JobName, s.Name)
ORDER BY s.Name
IF @JobName IS NOT NULL
BEGIN
CREATE TABLE #JobHistory
(
StepID INT,
StepName SYSNAME,
Message NVARCHAR(4000),
RunStatus INT,
RunDate INT,
RunTime INT,
RunDuration INT,
operator_emailed NVARCHAR(100),
operator_netsent NVARCHAR(100),
operator_paged NVARCHAR(100)
)
INSERT INTO #JobHistory
SELECT
sjh.step_id,
sjh.step_name,
sjh.message,
sjh.run_status,
sjh.run_date,
sjh.run_time,
sjh.run_duration,
operator_emailed = so1.name,
operator_netsent = so2.name,
operator_paged = so3.name
FROM
msdb.dbo.sysjobhistory sjh
JOIN msdb.dbo.sysjobs sjj ON sjh.job_id = sjj.job_id
LEFT OUTER JOIN msdb.dbo.sysoperators so1 ON (sjh.operator_id_emailed = so1.id)
LEFT OUTER JOIN msdb.dbo.sysoperators so2 ON (sjh.operator_id_netsent = so2.id)
LEFT OUTER JOIN msdb.dbo.sysoperators so3 ON (sjh.operator_id_paged = so3.id),
msdb.dbo.sysjobs sj
WHERE
sjj.Name = @JobName and
(sj.job_id = sjh.job_id)
SELECT
StepID, StepName, Message, RunDate AS LastRunTime,
CASE RunStatus
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry (step only)'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In-progress message'
WHEN 5 THEN 'Unknown'
END AS RunStatus
FROM #JobHistory
ORDER BY LastRunTime DESC, StepID ASC
END
END
GO
EXECUTE sp_ms_marksystemobject 'sp_ViewJobListing'
lunes, 6 de julio de 2015
SQL - Delay para la ejecución de una instrucción.
WAITFOR DELAY '02:00' --Dos Horas
WAITFOR DELAY '00:02' --Dos Minutos
WAITFOR DELAY '00:00:02' --Dos Segundos
WAITFOR DELAY '00:00:00.200' --Dos décimas de segundo
Ejemplo:
EXEC msdb.dbo.sp_start_job 'DTS_ParidadRC'
--espera la ejecución del JOB
WAITFOR DELAY '00:00:05'
-- y luego de 5 segundos consulta
SELECT * FROM t_paridades
WAITFOR DELAY '00:02' --Dos Minutos
WAITFOR DELAY '00:00:02' --Dos Segundos
WAITFOR DELAY '00:00:00.200' --Dos décimas de segundo
Ejemplo:
EXEC msdb.dbo.sp_start_job 'DTS_ParidadRC'
--espera la ejecución del JOB
WAITFOR DELAY '00:00:05'
-- y luego de 5 segundos consulta
SELECT * FROM t_paridades
Power Designer - Agregar Origen de Datos (Ej. SQL SERVER 2012)
Paso 1: Agregar un Origen de Datos.
Paso 2: Elegir Versión.
Paso 3: Rellenar campos.
Paso 4 : Agregar credenciales
Paso 5: Elegir BD predeterminada.
Paso 6: Creación.
Paso 7 : Ya estará creado el origen.
Paso 8: En Power Designer.
Paso 9: Al hacer Ingeniería Inversa se selecciona la BD más alta que aparezca.
Paso 10: Elegir la BD
Paso 11: poner credenciales.
Paso 12: Ya se puede pasar la BD a Power Designer.
viernes, 5 de junio de 2015
C# - Reemplazar caracteres especiales
/*Arreglo con caracteres*/
private string[] caracteres =
{
"Á", "Á",
"À", "À",
"Â", "Â",
"Ä", "Ä",
"Ã", "Ã",
"Å", "Å",
"á", "á",
"à", "à",
"â", "â",
"ä", "ä",
"ã", "ã",
"å", "å",
"É", "É",
"È", "È",
"Ê", "Ê",
"Ë", "Ë",
"é", "é",
"è", "è",
"ê", "ê",
"ë", "ë",
"Í", "Í",
"Ì", "Ì",
"Î", "Î",
"Ï", "Ï",
"í", "í",
"ì", "ì",
"î", "î",
"ï", "ï",
"Ó", "Ó",
"Ò", "Ò",
"Ô", "Ô",
"Ö", "Ö",
"Õ", "Õ",
"ó", "ó",
"ò", "ò",
"ô", "ô",
"ö", "ö",
"õ", "õ",
"Ú", "Ú",
"Ù", "Ù",
"Û", "Û",
"Ü", "Ü",
"ú", "ú",
"ù", "ù",
"û", "û",
"ü", "ü",
"Ý", "Ý",
"ý", "ý",
"ÿ", "ÿ",
"ñ", "ñ",
"Ñ", "Ñ",
"Ç", "Ç",
"ç", "ç",
"¡", "¡",
"¿", "¿",
"´", "´",
"·", "·",
"¸", "¸",
"«", "«",
"»", "»",
"¨", "¨",
"Æ", "Æ",
"æ", "æ",
"ß", "ß",
"µ", "µ",
"Ð", "Ð",
"ð", "ð",
"Þ", "Þ",
"þ", "þ",
"¢", "¢",
"£", "£",
"¤", "¤",
"¥", "¥",
"€", "€",
"$", "$",
"¹", "¹",
"²", "²",
"³", "³",
"×", "×",
"÷", "÷",
"±", "±",
"¼", "¼",
"½", "½",
"¾", "¾",
"Ø", "Ø",
"ø", "ø",
"¬", "¬",
"<", "<",
">", ">",
"&", "&",
" ", " ",
"\"", """,
"º", "º",
"ª", "ª",
"©", "©",
"®", "®",
"°", "°",
"¦", "¦",
"§", "§",
"¶", "¶",
"¯", "¯"
};
/// <summary>
/// ReemplazarCaracteresEspeciales
/// </summary>
/// <param name="origen">string con caracteres a limpiar</param>
/// <returns>string limpio</returns>
public string ReemplazarCaracteresEspeciales(string origen)
{
string destino = "";
List<string> listCaracteres = new List<string>();
for (int i = 0; i < origen.Length; i++)
{
listCaracteres.Add(origen[i].ToString());
}
for (int i = 0; i < listCaracteres.Count; i++)
{
for (int j = 0; j < caracteres.Length; j = j + 2)
{
if (listCaracteres[i] == caracteres[j])
{
listCaracteres[i] = listCaracteres[i].Replace(listCaracteres[i], caracteres[j + 1]);
j = caracteres.Length + 1;
}
}
}
for (int i = 0; i < listCaracteres.Count; i++)
{
destino = destino + listCaracteres[i];
}
return destino;
}
private string[] caracteres =
{
"Á", "Á",
"À", "À",
"Â", "Â",
"Ä", "Ä",
"Ã", "Ã",
"Å", "Å",
"á", "á",
"à", "à",
"â", "â",
"ä", "ä",
"ã", "ã",
"å", "å",
"É", "É",
"È", "È",
"Ê", "Ê",
"Ë", "Ë",
"é", "é",
"è", "è",
"ê", "ê",
"ë", "ë",
"Í", "Í",
"Ì", "Ì",
"Î", "Î",
"Ï", "Ï",
"í", "í",
"ì", "ì",
"î", "î",
"ï", "ï",
"Ó", "Ó",
"Ò", "Ò",
"Ô", "Ô",
"Ö", "Ö",
"Õ", "Õ",
"ó", "ó",
"ò", "ò",
"ô", "ô",
"ö", "ö",
"õ", "õ",
"Ú", "Ú",
"Ù", "Ù",
"Û", "Û",
"Ü", "Ü",
"ú", "ú",
"ù", "ù",
"û", "û",
"ü", "ü",
"Ý", "Ý",
"ý", "ý",
"ÿ", "ÿ",
"ñ", "ñ",
"Ñ", "Ñ",
"Ç", "Ç",
"ç", "ç",
"¡", "¡",
"¿", "¿",
"´", "´",
"·", "·",
"¸", "¸",
"«", "«",
"»", "»",
"¨", "¨",
"Æ", "Æ",
"æ", "æ",
"ß", "ß",
"µ", "µ",
"Ð", "Ð",
"ð", "ð",
"Þ", "Þ",
"þ", "þ",
"¢", "¢",
"£", "£",
"¤", "¤",
"¥", "¥",
"€", "€",
"$", "$",
"¹", "¹",
"²", "²",
"³", "³",
"×", "×",
"÷", "÷",
"±", "±",
"¼", "¼",
"½", "½",
"¾", "¾",
"Ø", "Ø",
"ø", "ø",
"¬", "¬",
"<", "<",
">", ">",
"&", "&",
" ", " ",
"\"", """,
"º", "º",
"ª", "ª",
"©", "©",
"®", "®",
"°", "°",
"¦", "¦",
"§", "§",
"¶", "¶",
"¯", "¯"
};
/// <summary>
/// ReemplazarCaracteresEspeciales
/// </summary>
/// <param name="origen">string con caracteres a limpiar</param>
/// <returns>string limpio</returns>
public string ReemplazarCaracteresEspeciales(string origen)
{
string destino = "";
List<string> listCaracteres = new List<string>();
for (int i = 0; i < origen.Length; i++)
{
listCaracteres.Add(origen[i].ToString());
}
for (int i = 0; i < listCaracteres.Count; i++)
{
for (int j = 0; j < caracteres.Length; j = j + 2)
{
if (listCaracteres[i] == caracteres[j])
{
listCaracteres[i] = listCaracteres[i].Replace(listCaracteres[i], caracteres[j + 1]);
j = caracteres.Length + 1;
}
}
}
for (int i = 0; i < listCaracteres.Count; i++)
{
destino = destino + listCaracteres[i];
}
return destino;
}
SQL - Agregar ID en consulta ROW_NUMBER
SELECT ROW_NUMBER() OVER(ORDER BY campo_1 ASC) AS ID
,campo_1
,campo_2
,campo_3
FROM mi_tabla
,campo_1
,campo_2
,campo_3
FROM mi_tabla
SQL - Cantidad de registros por Tabla en BD
USE [mi_base_de_datos]
/*Cantidad de registros del Modelo*/
select substring(obj.name, 1, 50) as Tabla, ind.rows as Registros
from sysobjects as obj
inner join sysindexes as ind on obj.id = ind.id
where obj.xtype = 'u'
and ind.indid < 2
order by ind.rows desc
/*Cantidad de registros del Modelo*/
select substring(obj.name, 1, 50) as Tabla, ind.rows as Registros
from sysobjects as obj
inner join sysindexes as ind on obj.id = ind.id
where obj.xtype = 'u'
and ind.indid < 2
order by ind.rows desc
SQL - Deshabilitar Triggers o Trigger de una tabla
/*deshabilitar */
ALTER TABLE mi_tabla DISABLE TRIGGER ALL
o
ALTER TABLE mi_tabla DISABLE TRIGGER nombre_trigger
/*habilitar */
ALTER TABLE mi_tabla ENABLE TRIGGER ALL
o
ALTER TABLE mi_tabla ENABLE TRIGGER nombre_trigger
ALTER TABLE mi_tabla DISABLE TRIGGER ALL
o
ALTER TABLE mi_tabla DISABLE TRIGGER nombre_trigger
/*habilitar */
ALTER TABLE mi_tabla ENABLE TRIGGER ALL
o
ALTER TABLE mi_tabla ENABLE TRIGGER nombre_trigger
C# - Convertir lista en DataTable
/// <summary>
///Convierte Lista en DataTable
/// </summary>
/// <param name="items">Lista a convertir de tipo object</param>
/// <param name="nameService">Nombre a dar al DataTable</param>
/// <returns></returns>
public static DataTable ConvertirListaToDataTable(List<object> items, string nameService)
{
// Instancia del objeto a devolver
var returnValue = new DataTable();
// Información del tipo de datos de los elementos del List
Type itemsType = items.First().GetType();
/*Se Recorren las propiedades para crear las columnas del datatable y
pregunta si el objeto tiene estrcutra.Si tiene entra.*/
if (itemsType.GetProperties().Any())
{
foreach (PropertyInfo prop in itemsType.GetProperties())
{
//Se Crea y agrega una columna por cada propiedad de la entidad
var column = new DataColumn(prop.Name);
var propType = Nullable.GetUnderlyingType(prop.PropertyType)
?? prop.PropertyType;
column.DataType = propType;
returnValue.Columns.Add(column);
}
int j;
/* Se recorre la colección para guardar los datos
en el DataTable*/
foreach (var item in items)
{
j = 0;
object[] newRow = new object[returnValue.Columns.Count];
/* Se vuelve a recorrer las propiedades de cada item para
obtener su valor y guardarlo en la fila de la tabla*/
foreach (PropertyInfo prop in itemsType.GetProperties())
{
newRow[j] = prop.GetValue(item, null);
j++;
}
returnValue.Rows.Add(newRow);
}
}
//si el objeto no tiene estructura, se arma una.
else
{
var newRow = new object[items.Count];
for (int i = 0; i < items.Count; i++)
{
var colName = nameService + i;
var column = new DataColumn(colName);
column.DataType = typeof(string);
returnValue.Columns.Add(column);
}
for (int i = 0; i < items.Count; i++)
{
newRow[i] = items[i].ToString();
}
returnValue.Rows.Add(newRow);
}
// devolución del DataTable
return returnValue;
}
///Convierte Lista en DataTable
/// </summary>
/// <param name="items">Lista a convertir de tipo object</param>
/// <param name="nameService">Nombre a dar al DataTable</param>
/// <returns></returns>
public static DataTable ConvertirListaToDataTable(List<object> items, string nameService)
{
// Instancia del objeto a devolver
var returnValue = new DataTable();
// Información del tipo de datos de los elementos del List
Type itemsType = items.First().GetType();
/*Se Recorren las propiedades para crear las columnas del datatable y
pregunta si el objeto tiene estrcutra.Si tiene entra.*/
if (itemsType.GetProperties().Any())
{
foreach (PropertyInfo prop in itemsType.GetProperties())
{
//Se Crea y agrega una columna por cada propiedad de la entidad
var column = new DataColumn(prop.Name);
var propType = Nullable.GetUnderlyingType(prop.PropertyType)
?? prop.PropertyType;
column.DataType = propType;
returnValue.Columns.Add(column);
}
int j;
/* Se recorre la colección para guardar los datos
en el DataTable*/
foreach (var item in items)
{
j = 0;
object[] newRow = new object[returnValue.Columns.Count];
/* Se vuelve a recorrer las propiedades de cada item para
obtener su valor y guardarlo en la fila de la tabla*/
foreach (PropertyInfo prop in itemsType.GetProperties())
{
newRow[j] = prop.GetValue(item, null);
j++;
}
returnValue.Rows.Add(newRow);
}
}
//si el objeto no tiene estructura, se arma una.
else
{
var newRow = new object[items.Count];
for (int i = 0; i < items.Count; i++)
{
var colName = nameService + i;
var column = new DataColumn(colName);
column.DataType = typeof(string);
returnValue.Columns.Add(column);
}
for (int i = 0; i < items.Count; i++)
{
newRow[i] = items[i].ToString();
}
returnValue.Rows.Add(newRow);
}
// devolución del DataTable
return returnValue;
}
miércoles, 3 de junio de 2015
SQL - Editar tipo de dato en clave compuesta
Generar DROP AND CREATE de la tabla a modificar.
De esa forma se obtienen las CONSTRAINT que se deben eliminar para modificar tipo de dato y luego agregar.
Ejemplo de modificacion de Tipo de dato en tabla con clave compuesta:
ALTER TABLE t_documentos
DROP CONSTRAINT DF_t_documentos_fecha_creacion,DF_t_documentos_estado
GO
ALTER TABLE t_documentos DROP CONSTRAINT PK_t_documentos
GO
ALTER TABLE t_documentos ALTER COLUMN correlativo INT NOT NULL
GO
ALTER TABLE t_documentos
ADD CONSTRAINT [PK_t_documentos] PRIMARY KEY (numero, tipo_doc, correlativo)
GO
ALTER TABLE [dbo].[t_documentos] ADD CONSTRAINT [DF_t_documentos_fecha_creacion] DEFAULT (getdate()) FOR [fecha_creacion]
GO
ALTER TABLE [dbo].[t_documentos] ADD CONSTRAINT [DF_t_documentos_estado] DEFAULT ((0)) FOR [estado]
GO
De esa forma se obtienen las CONSTRAINT que se deben eliminar para modificar tipo de dato y luego agregar.
Ejemplo de modificacion de Tipo de dato en tabla con clave compuesta:
ALTER TABLE t_documentos
DROP CONSTRAINT DF_t_documentos_fecha_creacion,DF_t_documentos_estado
GO
ALTER TABLE t_documentos DROP CONSTRAINT PK_t_documentos
GO
ALTER TABLE t_documentos ALTER COLUMN correlativo INT NOT NULL
GO
ALTER TABLE t_documentos
ADD CONSTRAINT [PK_t_documentos] PRIMARY KEY (numero, tipo_doc, correlativo)
GO
ALTER TABLE [dbo].[t_documentos] ADD CONSTRAINT [DF_t_documentos_fecha_creacion] DEFAULT (getdate()) FOR [fecha_creacion]
GO
ALTER TABLE [dbo].[t_documentos] ADD CONSTRAINT [DF_t_documentos_estado] DEFAULT ((0)) FOR [estado]
GO
miércoles, 27 de mayo de 2015
SQL - Desconectar usuarios de una BD
/*Desconectarlos para realizar una restauración, o sacar un .bak-por ejemplo-*/
USE master
DECLARE curkillproc
CURSOR FOR
SELECT spid,dbs.name AS dbname
FROM master..sysprocesses pro, master..sysdatabases dbs
WHERE pro.dbid = dbs.dbid
AND dbs.name = 'mi_base_datos' --aquí el nombre de la BD
FOR READ ONLY
DECLARE @varspid AS integer
DECLARE @vardbname AS varchar(256)
DECLARE @numUsers AS integer
SET @numUsers = 0
OPEN curkillproc
FETCH NEXT FROM curkillproc
INTO @varspid, @vardbname
WHILE @@fetch_status = 0
BEGIN
EXEC('kill ' + @varspid)
SET @numUsers = @numUsers + 1
FETCH NEXT FROM curkillproc INTO @varspid, @vardbname
END
CLOSE curkillproc
DEALLOCATE curkillproc
SELECT @numUsers as NumUsersDisconnected
USE master
DECLARE curkillproc
CURSOR FOR
SELECT spid,dbs.name AS dbname
FROM master..sysprocesses pro, master..sysdatabases dbs
WHERE pro.dbid = dbs.dbid
AND dbs.name = 'mi_base_datos' --aquí el nombre de la BD
FOR READ ONLY
DECLARE @varspid AS integer
DECLARE @vardbname AS varchar(256)
DECLARE @numUsers AS integer
SET @numUsers = 0
OPEN curkillproc
FETCH NEXT FROM curkillproc
INTO @varspid, @vardbname
WHILE @@fetch_status = 0
BEGIN
EXEC('kill ' + @varspid)
SET @numUsers = @numUsers + 1
FETCH NEXT FROM curkillproc INTO @varspid, @vardbname
END
CLOSE curkillproc
DEALLOCATE curkillproc
SELECT @numUsers as NumUsersDisconnected
SQL - Reducir el log de una Base de Datos
USE miBaseDeDatos;
GO
-- se cambia el recovery a modo simple
ALTER DATABASE miBaseDeDatos
SET RECOVERY SIMPLE;
GO
-- se reduce el archivo log a 1 MB.
DBCC SHRINKFILE (miBaseDeDatos_Log, 1); --conservar _Log
GO
-- se devuelve el nivel de recovery a full
ALTER DATABASE miBaseDeDatos
SET RECOVERY FULL;
GO
/*Donde miBaseDeDatos es el nombre de la base de datos.*/
GO
-- se cambia el recovery a modo simple
ALTER DATABASE miBaseDeDatos
SET RECOVERY SIMPLE;
GO
-- se reduce el archivo log a 1 MB.
DBCC SHRINKFILE (miBaseDeDatos_Log, 1); --conservar _Log
GO
-- se devuelve el nivel de recovery a full
ALTER DATABASE miBaseDeDatos
SET RECOVERY FULL;
GO
/*Donde miBaseDeDatos es el nombre de la base de datos.*/
lunes, 25 de mayo de 2015
SQL - Subir nivel de compatibilidad de la BD
EXEC sp_dbcmptlevel 'mi_base_de_datos', 100
SELECT compatibility_level
FROM sys.databases WHERE name = 'mi_base_de_datos';
90 = SQL Server 2005
100 = SQL Server 2008
110 = SQL Server 2012
120 = SQL Server 2014
Ver nivel de compatibilidad actual:
SELECT compatibility_level
FROM sys.databases WHERE name = 'mi_base_de_datos';
SQL - Obtener columnas con valores repetidos
SELECT col1, col2, count(*) --columna(s) a consulta(r)
FROM t1 --nombre de la tabla a consultar
GROUP BY col1, col2 --agrupación según la(s) columna(s) a consultar
HAVING count(*) > 1 --contador de repeticiones
viernes, 22 de mayo de 2015
C# - Probar Web Services Fuera del Servidor.
Por defecto un Servicio Web no puede ser testeado (con el respectivo paso de parámetros) desde otro sitio que no sea el Servidor en donde está instalado. Para si poder hacerlo, es necesario agregar las siguientes líneas dentro del tag <system.web> del archivo de configuración (Web.Config).
<system.web>
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
<add name="Documentation" />
</protocols>
</webServices>
</system.web>
Debería quedar de esta forma.
<system.web>
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
<add name="Documentation" />
</protocols>
</webServices>
</system.web>
Debería quedar de esta forma.
jueves, 21 de mayo de 2015
SQL - Ciclo While Reemplazo de un Cursor
-------------------------------------------------------
--Declaracion de variables necesarias para el ciclo
-------------------------------------------------------
DECLARE @origen TINYINT ,
@rut_origen INT ,
@tipo_direccion TINYINT ,
@direccion CHAR(70) ,
@comuna SMALLINT ,
@email CHAR(50) ,
@telefono CHAR(25) ,
@telefono2 CHAR(25) ,
@fax CHAR(25) ,
@estado TINYINT
-----------------------------------
--Declaro temporal
-----------------------------------
CREATE TABLE #direccionesTemp
(
id INT IDENTITY(1, 1) ,
cod_origen TINYINT,
rut_origen INT ,
cod_tipo_direccion TINYINT ,
direccion CHAR(255) ,
comuna SMALLINT ,
telefono CHAR(12) ,
estado TINYINT
)
CREATE INDEX I_direcciones_temp --El Indice es para aportar velocidad
ON #direccionesTemp(id) ;
-----------------------------------
--Lleno tabla temporal
-----------------------------------
INSERT INTO #direccionesTemp
SELECT cod_origen ,
rut_origen ,
cod_tipo_direccion ,
direccion ,
comuna ,
telefono ,
estado
FROM dbo.direcciones
----------------------------------------
--Variables de Recorrido
----------------------------------------
DECLARE @numeroDeRegistros INT
SET @numeroDeRegistros = ( SELECT COUNT(*)
FROM #direccionesTemp
)
DECLARE @recorridoWhile INT
SET @recorridoWhile = 1
-----------------------------------------
--recorrido
-----------------------------------------
WHILE ( @numeroDeRegistros > 0 --mientras,el numero de registros sea mayor a 0
AND @recorridoWhile <= @numeroDeRegistros --y mientras la variable de recorrido sea menor o igual a la cantidad de registros
)
BEGIN
--lleno mis variables
SELECT @origen = cod_origen ,
@rut_origen = rut_origen ,
@tipo_direccion = cod_tipo_direccion ,
@direccion = direccion ,
@comuna = comuna ,
@telefono = telefono ,
@estado = ISNULL(estado,0)
FROM #direccionesTemp
WHERE id = @recorridoWhile --las lleno con la data de la fila que voy recorriendo.
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO leasecom..t_clientes_direccion
( cod_origen ,
rut ,
tipo_direccion ,
correlativo ,
direccion ,
cod_comuna ,
email ,
telefono ,
estado
)
VALUES ( @origen ,
@rut_origen ,
@tipo_direccion ,
@correlativo ,
SUBSTRING(LTRIM(RTRIM(@direccion)), 1, 40) ,
@comuna , -- cod_comuna - smallint
NULL , -- email - varchar(255)
SUBSTRING(LTRIM(RTRIM(@telefono)), 1, 12) ,
@estado -- estado - tinyint
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() as ErrorNumber, ERROR_MESSAGE() as ErrorMessage;
ROLLBACK TRANSACTION
END CATCH
SET @recorridoWhile = @recorridoWhile + 1
--Print para indicar en que parte del recorrido va (Opcional).
PRINT CONVERT(VARCHAR(100), @recorridoWhile )
END
DROP TABLE #direccionesTemp
miércoles, 20 de mayo de 2015
SQL - Sintaxis de un Cursor
/*Declaracion de variables */
DECLARE @var1 NUMERIC(18,0),
@var2 SMALLINT,
/*Filas a recorrer*/
DECLARE c_ejemplo CURSOR FOR
select campo1,
campo2
from dbo.t_mi_tabla
/*Apertura del Cursor*/
OPEN c_ejemplo
FETCH c_ejemplo
INTO @var1,
@var2
WHILE (@@FETCH_STATUS = 0)
BEGIN
/*Instrucciones para cada fila recorrida*/
INSERT INTO dbo..t_mi_tabla2
( campo1 ,
campo2
)
VALUES ( @var1 , -- correlativo - numeric
@var2
)
/*Mensaje en caso de error (opcional)*/
IF @@error <> 0
BEGIN
Print 'Error al Insertar'
RETURN
END
FETCH c_ejemplo
INTO @var1,
@var2
END
/*Cierre y final del Cursor*/
CLOSE c_ejemplo
DEALLOCATE c_ejemplo
martes, 5 de mayo de 2015
C# - Fecha Automática para las Publicaciones
//Solo Fecha
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var fechaPublish = "01/01/1900";
var dll = Server.MapPath("bin\\DLLNombre.dll");
if (File.Exists(dll))
fechaPublish = File.GetLastWriteTime(dll).ToString("dd-MM-yyyy hh:mm") + " HRS.";
lblFechaLiberacion.Text = fechaPublish;
}
}
//Fecha + string de conexión
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var dataSource = System.Configuration.ConfigurationManager.ConnectionStrings["NombreConexion"].ConnectionString.Split(';').ToArray();
string data = dataSource[0].Replace("Data Source=", "");
var dll = Server.MapPath("bin\\DLLNombre.dll");
if (File.Exists(dll))
data += " - " + File.GetLastWriteTime(dll).ToString();
lblInfo2.Text = data;
}
}
Suscribirse a:
Entradas (Atom)