Buenas amigos , este fin de semana charlando con uno mis compañeros y muy amigo mio,me comento sobre Responsive web design, una tecnologia que nos va a ayudar muchisimo a los que desarrollamos aplicaticos web windows y mobiles, pero porque ?? pues por el simple hecho que esta tecnologia nos permite desarrollar paginas de tal manera que se pueda adaptar de manera facil y sencilla a los celulares y de esta manera evitar estar creando aplicativos extras para los celulares, como yo recordaba, ya hace unos mas de 4 años aproximada, que desarrolle un aplicativo para tomar pedidos, gestion de cobranza, entre otros, en J2ME,pero ahora ya con Responsive web design sera cosa del pasado ,pues ya no sera necesario.
Saludos ,
miércoles, 30 de julio de 2014
martes, 22 de abril de 2014
La gran importancia de UML en los proyectos
Buenas amigos y colegas, esta vez hablaremos un poco acerca de la gran importancia de UML en nuestros proyectos....
UML como sabemos en un Lenguaje Unificado para el modelado de sistemas ORIENTADO A OBJETOS, como por ejemplo .NET , JAVA entro otros, seria un delito desarrollar una aplicacion empresarial en .NET o java sin usar UML, porque??? la respuesta es simple todo esta basado en el paradigma de orientacion a Objetos, ademas UML nos ayuda a comunicar tanto a los analistas con los programadores, que hablen el mismo idioma, documentar, para que sepamos que es lo que esta bien y lo que esta mal ANTES DE METER MANO AL CODIGO!!!!!, de esta manera tenemos un proyecto mucho mas ordenado mas analisado, y con mucho menos probabilidades de errores cuando se ponga a produccion, ademas de que es validado en los diferentes diagramas, los errores se encuentran mientras estamos modelando el dominio y se va mejorando aun mas al legar al modelado de clases, si hubieron errores estos ya fueron detectados en procesos anteriores , obteniendo de esta manera una menor probabilidad de errores, veamos el caso contrario a los señores que no usaron UML, al no tener los diagramas adecuados e irse directamente al codigo (LO DIGO PORQUE HAY GENTE QUE LO HACE) hay mucho mayor probabilidad de obtener los horribles errores ya sea a nivel tecnico o funcional , porque estan programando a ciegas , sin un camino a donde ir y en muchos casos sin tener idea de lo que estan haciendo, en conclusion si el proyecto es de gran envergadura o mediano grande es indispensable el uso de UML en el proyecto.
Saludos................
UML como sabemos en un Lenguaje Unificado para el modelado de sistemas ORIENTADO A OBJETOS, como por ejemplo .NET , JAVA entro otros, seria un delito desarrollar una aplicacion empresarial en .NET o java sin usar UML, porque??? la respuesta es simple todo esta basado en el paradigma de orientacion a Objetos, ademas UML nos ayuda a comunicar tanto a los analistas con los programadores, que hablen el mismo idioma, documentar, para que sepamos que es lo que esta bien y lo que esta mal ANTES DE METER MANO AL CODIGO!!!!!, de esta manera tenemos un proyecto mucho mas ordenado mas analisado, y con mucho menos probabilidades de errores cuando se ponga a produccion, ademas de que es validado en los diferentes diagramas, los errores se encuentran mientras estamos modelando el dominio y se va mejorando aun mas al legar al modelado de clases, si hubieron errores estos ya fueron detectados en procesos anteriores , obteniendo de esta manera una menor probabilidad de errores, veamos el caso contrario a los señores que no usaron UML, al no tener los diagramas adecuados e irse directamente al codigo (LO DIGO PORQUE HAY GENTE QUE LO HACE) hay mucho mayor probabilidad de obtener los horribles errores ya sea a nivel tecnico o funcional , porque estan programando a ciegas , sin un camino a donde ir y en muchos casos sin tener idea de lo que estan haciendo, en conclusion si el proyecto es de gran envergadura o mediano grande es indispensable el uso de UML en el proyecto.
Saludos................
miércoles, 5 de marzo de 2014
RegisterForEventValidation can only be called during Render();
Buenas ,
cuando tengan este error que tipicamente se da cuando queremos exportar un archivo nos suele mostrar este mensaje de error
RegisterForEventValidation can only be called during Render();
Para ello en el lado aspx de nuestra pagina debe de estar asi
<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation ="false" CodeFile="Con_ComprobanteVenta_Listar.aspx.cs" Inherits="App_Ventas_Consultas_Con_ComprobanteVenta_Listar" %>
de esta manera no tendriamos problema alguno
Asi mismo en el lado .cs debe de estar asi
public override void VerifyRenderingInServerForm(Control control)
{
}
protected void btnExportarExcel_Click(object sender, EventArgs e)
{
Funciones.fn_ExportarExcel(this, GridFamiliaProductos, "Comprobantes " );
}
Saludos ,
lunes, 27 de enero de 2014
request for the permission of type 'system.data.sqlclient.sqlclientpermission
Hoy estuve implementando en una sucursal de una de las empresas que realizo consultoria, por algun motivo cuando modifique el directorio virtual me mostró este mensaje "request for the permission of type 'system.data.sqlclient.sqlclientpermission" , este error al parecer sale porque en el IIS no encuentra los permisos suficientes cuando el Application Pool Identity se encuentra en el modo ApplicationPoolIdentity, qie al parecer no tiene los permisos suficientes para ser modificados en red el cual lo cambie a NetWorkService , con esto di solución a mi problema , espero les ayude a ustedes también ,
Saludos
Saludos
lunes, 6 de enero de 2014
error durante la serialización o deserialización mediante javascriptserializer de json
Buenas ,
Despues de un tiempo estoy de regreso, esta vez veremos un error clasico cuando trabajamos con la serializacion json , o mejor dicho cuando intentamos obtener un volumen mayor al que por defecto trabaja json , en estos casos nos muestra un error asi
error durante la serialización o deserialización mediante javascriptserializer de json..............
como ya sabemos es porque sobrepasamos la longitud permitida por defecto
Modificamos en nuestro web config lo siguiente
<scripting>
<webServices>
<jsonSerialization maxJsonLength="500000000">
</jsonSerialization>
</webServices>
</scripting>
Y listo arreglado el asunto.
Despues de un tiempo estoy de regreso, esta vez veremos un error clasico cuando trabajamos con la serializacion json , o mejor dicho cuando intentamos obtener un volumen mayor al que por defecto trabaja json , en estos casos nos muestra un error asi
error durante la serialización o deserialización mediante javascriptserializer de json..............
como ya sabemos es porque sobrepasamos la longitud permitida por defecto
Modificamos en nuestro web config lo siguiente
<scripting>
<webServices>
<jsonSerialization maxJsonLength="500000000">
</jsonSerialization>
</webServices>
</scripting>
Y listo arreglado el asunto.
domingo, 17 de noviembre de 2013
OBTENER TODOS LOS STORE PROCEDURE DE UNA BASE DE DATOS
Buenas en esta ocasion veremos como obtener todos los sp de una bd, para esto genero un store procedure.
CREATE PROC MAESTROS.PA_OBTENER_STOREPROCEDURE 'Relacionado'
@NameSp VARCHAR(50)
AS
select name from sysobjects where type='P' and name like '%' + @NameSp +'%'
Order By Name
y de esta manera podemos obteneros de una manera sencilla.
CREATE PROC MAESTROS.PA_OBTENER_STOREPROCEDURE 'Relacionado'
@NameSp VARCHAR(50)
AS
select name from sysobjects where type='P' and name like '%' + @NameSp +'%'
Order By Name
y de esta manera podemos obteneros de una manera sencilla.
sábado, 9 de noviembre de 2013
VARIABLE TABLE SQL SERVER 2008
Buenas en esta ocasion veremos el uso de la variable tipo TABLE , conbinandose con otras sentencias dentro del Transact SQL.
/*
Autor : Martin Cox R.
*/
CREATE PROC [FINANZAS].[PA_ESTADOCUENTA_CLIENTES] --1, 24,1 , '21/01/2013','21/08/2013'
@IDCompania numeric ,
@IDCliente numeric ,
@IDMoneda numeric ,
@FechaInicio datetime ,
@FechaFinal datetime
AS
declare @FechaRegistro DateTime
declare @NumeroComprobante varchar(100)
declare @TipoDocumento varchar(100)
declare @Total decimal(18,4)
declare @Flag char(1)
declare @Contador numeric = 1
declare @Saldo decimal(18,4)= 0
declare @RazonSocial varchar(200)=''
declare @Ruc varchar(15)=''
DECLARE @tempEstadoCuentaFinal table(
FechaRegistro DateTime ,
NumeroComprobante varchar(100),
TipoDocumento varchar(100),
Debito decimal(18,4),
Credito decimal(18,4),
Saldo decimal(18,4) ,
RazonSocial varchar(200) ,
Ruc varchar(15)
)
select
FechaEmision as FechaRegistro ,NumeroDocumento as NumeroComprobante ,
tipDoc_cNombreTipoDocumento as TipoDocumento ,
Total , 'H' AS Flag , RazonSocial , Ruc
into #tempDoc from MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR
where MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR.FormaPago = 2
and IDPersona =@IDCliente and IDMonedaDocumento = @IDMoneda
Union All
SELECT FINANZAS.COMPROBANTECAJA.FechaRegistro, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobante,
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.TipoDocumento, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.ImportePagar AS Total,
'D' AS Flag , MAESTROS.MAE_CLIENTES.cli_cNombreCompletoCliente as RazonSocial ,MAESTROS.MAE_CLIENTES.cli_cRucCliente as Ruc
FROM FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR
INNER JOIN FINANZAS.COMPROBANTEENTRADACAJA ON FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCompania = FINANZAS.COMPROBANTEENTRADACAJA.IDCompania AND FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDTipoDocumento = FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDSede = FINANZAS.COMPROBANTEENTRADACAJA.IDSede AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCentroFinanciero = FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobanteCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroSerieCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie
INNER JOIN FINANZAS.COMPROBANTECAJA ON FINANZAS.COMPROBANTEENTRADACAJA.IDCompania = FINANZAS.COMPROBANTECAJA.IDCompania AND
FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento = FINANZAS.COMPROBANTECAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTEENTRADACAJA.IDSede = FINANZAS.COMPROBANTECAJA.IDSede AND
FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero = FINANZAS.COMPROBANTECAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante = FINANZAS.COMPROBANTECAJA.NumeroComprobante AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie = FINANZAS.COMPROBANTECAJA.NumeroSerie
inner join MAESTROS.MAE_CLIENTES on FINANZAS.COMPROBANTEENTRADACAJA.IDCliente =MAESTROS.MAE_CLIENTES.cli_nCodigoCliente
WHERE (FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.FormaPago = 'CREDITO') and (FINANZAS.COMPROBANTEENTRADACAJA.IDCliente = @IDCliente)
and FINANZAS.COMPROBANTECAJA.IDMoneda = @IDMoneda and RTRIM( FINANZAS.COMPROBANTECAJA.EstadoEntrega) != 'ANULADO'
DECLARE CursorEstadoCuenta CURSOR
FOR
select * from #tempDoc
--where FechaRegistro between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
where CONVERT(CHAR(10),FechaRegistro,103) between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
OPEN CursorEstadoCuenta
FETCH CursorEstadoCuenta
INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial ,@Ruc
WHILE (@@FETCH_STATUS = 0)
begin
if(@Flag = 'D')
begin
set @Saldo = @Saldo - @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,@Total ,0,@Saldo,rtrim(@RazonSocial) ,@Ruc )
end
else if(@Flag = 'H')
begin
set @Saldo = @Saldo + @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,0 ,@Total,@Saldo ,RTRIM( @RazonSocial),@Ruc)
end
FETCH CursorEstadoCuenta INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial
,@Ruc
set @Contador =@Contador +1;
END -- end loop while
CLOSE CursorEstadoCuenta
DEALLOCATE CursorEstadoCuenta
select * from @tempEstadoCuentaFinal
drop table #tempDoc
/*
Autor : Martin Cox R.
*/
CREATE PROC [FINANZAS].[PA_ESTADOCUENTA_CLIENTES] --1, 24,1 , '21/01/2013','21/08/2013'
@IDCompania numeric ,
@IDCliente numeric ,
@IDMoneda numeric ,
@FechaInicio datetime ,
@FechaFinal datetime
AS
declare @FechaRegistro DateTime
declare @NumeroComprobante varchar(100)
declare @TipoDocumento varchar(100)
declare @Total decimal(18,4)
declare @Flag char(1)
declare @Contador numeric = 1
declare @Saldo decimal(18,4)= 0
declare @RazonSocial varchar(200)=''
declare @Ruc varchar(15)=''
DECLARE @tempEstadoCuentaFinal table(
FechaRegistro DateTime ,
NumeroComprobante varchar(100),
TipoDocumento varchar(100),
Debito decimal(18,4),
Credito decimal(18,4),
Saldo decimal(18,4) ,
RazonSocial varchar(200) ,
Ruc varchar(15)
)
select
FechaEmision as FechaRegistro ,NumeroDocumento as NumeroComprobante ,
tipDoc_cNombreTipoDocumento as TipoDocumento ,
Total , 'H' AS Flag , RazonSocial , Ruc
into #tempDoc from MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR
where MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR.FormaPago = 2
and IDPersona =@IDCliente and IDMonedaDocumento = @IDMoneda
Union All
SELECT FINANZAS.COMPROBANTECAJA.FechaRegistro, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobante,
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.TipoDocumento, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.ImportePagar AS Total,
'D' AS Flag , MAESTROS.MAE_CLIENTES.cli_cNombreCompletoCliente as RazonSocial ,MAESTROS.MAE_CLIENTES.cli_cRucCliente as Ruc
FROM FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR
INNER JOIN FINANZAS.COMPROBANTEENTRADACAJA ON FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCompania = FINANZAS.COMPROBANTEENTRADACAJA.IDCompania AND FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDTipoDocumento = FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDSede = FINANZAS.COMPROBANTEENTRADACAJA.IDSede AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCentroFinanciero = FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobanteCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante AND
FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroSerieCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie
INNER JOIN FINANZAS.COMPROBANTECAJA ON FINANZAS.COMPROBANTEENTRADACAJA.IDCompania = FINANZAS.COMPROBANTECAJA.IDCompania AND
FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento = FINANZAS.COMPROBANTECAJA.IDTipoDocumento AND
FINANZAS.COMPROBANTEENTRADACAJA.IDSede = FINANZAS.COMPROBANTECAJA.IDSede AND
FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero = FINANZAS.COMPROBANTECAJA.IDCentroFinanciero AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante = FINANZAS.COMPROBANTECAJA.NumeroComprobante AND
FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie = FINANZAS.COMPROBANTECAJA.NumeroSerie
inner join MAESTROS.MAE_CLIENTES on FINANZAS.COMPROBANTEENTRADACAJA.IDCliente =MAESTROS.MAE_CLIENTES.cli_nCodigoCliente
WHERE (FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.FormaPago = 'CREDITO') and (FINANZAS.COMPROBANTEENTRADACAJA.IDCliente = @IDCliente)
and FINANZAS.COMPROBANTECAJA.IDMoneda = @IDMoneda and RTRIM( FINANZAS.COMPROBANTECAJA.EstadoEntrega) != 'ANULADO'
DECLARE CursorEstadoCuenta CURSOR
FOR
select * from #tempDoc
--where FechaRegistro between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
where CONVERT(CHAR(10),FechaRegistro,103) between CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal ,103)
OPEN CursorEstadoCuenta
FETCH CursorEstadoCuenta
INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial ,@Ruc
WHILE (@@FETCH_STATUS = 0)
begin
if(@Flag = 'D')
begin
set @Saldo = @Saldo - @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,@Total ,0,@Saldo,rtrim(@RazonSocial) ,@Ruc )
end
else if(@Flag = 'H')
begin
set @Saldo = @Saldo + @Total - 0 ;
insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,
@TipoDocumento ,0 ,@Total,@Saldo ,RTRIM( @RazonSocial),@Ruc)
end
FETCH CursorEstadoCuenta INTO @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial
,@Ruc
set @Contador =@Contador +1;
END -- end loop while
CLOSE CursorEstadoCuenta
DEALLOCATE CursorEstadoCuenta
select * from @tempEstadoCuentaFinal
drop table #tempDoc
Suscribirse a:
Entradas (Atom)