En un formulario Windows agregar un DataGridView cargarlo con datos para implementar la funcionalidad de teclas calientes, por ejemplo al Ctrl+F aplica un calculo al Ctrl+R refresca la rejilla, etc.
1. Agregar métodos que responden a la combinación de teclas
Private Sub ctrl_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Dim ctrl As Control = DirectCast(sender, Control)
End Sub
Private Sub InitializeEvents()
'AddHandler Me.DataGridView1.KeyPress, AddressOf txt_KeyPress
'AddHandler Me.DataGridView1.KeyDown, AddressOf txt_KeyDown
AddHandler Me.DataGridView1.KeyUp, AddressOf ctrl_KeyUp
End Sub
2. Funcionalidad a ejecutar al detectar la combinación de teclas sobre un renglon de la rejilla al evento KeyUp
Private Sub DataGridView1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyUp
Select Case e.KeyData
Case e.KeyCode.Control + e.KeyCode.F 'Aplica Calcluo
MessageBox.Show("Ejecutar AplicaCaluloX())
Case e.KeyCode.Control + e.KeyCode.R 'Refrescar contenido-Databinding-
MessageBox.Show("Ejecutar RefrescarRejilla()")
End Select
End Sub
septiembre 12, 2008
Leer entrada de app.config VS.NET 2005
1. Agregar archivo app.config
2--Leer de app.config
Configuration.ConfigurationManager.AppSettings.Item("AplicarFactorDiseñoPaq").ToString.Length
2--Leer de app.config
Configuration.ConfigurationManager.AppSettings.Item("AplicarFactorDiseñoPaq").ToString.Length
septiembre 11, 2008
Referencia de Uso de la herramienta: JetBrains DotTrace con ADO.NET
Esta herramienta ayuda a medir es el tiempo que se toma cada una estas operaciones para mostrar los datos. Esta herramienta te permite mediante la técnica de "code profiling" conocer el tiempo y cantidad de veces de cada una de las llamadas a los métodos de tu aplicación, incluido el código de .NET.
En este pagina se describe el uso de esta interesante herramienta, yo la utilice porque al poblar un GridView de asp.net con un sqldatareader se tardaba muchisimo al solicitar unos 20,000 registros y con esta herramienta encntré en donde se hacia el cuello de botella.
http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx
La referencia es parte de un conjunto de articulos muy interesantes relacionados con la utilización de la herramienta con uso de objetos ADO.NET
Performance: Lectura de Datos con ADO.NET
Performance: Lectura de Datos con ADO.NET II
Performance: Lectura de Datos con ADO.NET III
Performance: Datos en Memoria con ADO.NET IV
En este pagina se describe el uso de esta interesante herramienta, yo la utilice porque al poblar un GridView de asp.net con un sqldatareader se tardaba muchisimo al solicitar unos 20,000 registros y con esta herramienta encntré en donde se hacia el cuello de botella.
http://msmvps.com/blogs/cwalzer/archive/2007/09/24/anti-pr-225-cticas-i-acceso-a-datos-con-ado-net.aspx
La referencia es parte de un conjunto de articulos muy interesantes relacionados con la utilización de la herramienta con uso de objetos ADO.NET
Performance: Lectura de Datos con ADO.NET
Performance: Lectura de Datos con ADO.NET II
Performance: Lectura de Datos con ADO.NET III
Performance: Datos en Memoria con ADO.NET IV
Store Procedure devuelve Información de Tablas de BD en SQL Server
create procedure dbo.p_sizetablesas
Begin transaction
/***Procedimiento creado por KM para ver el tamaño de las tablas de una base de datos*/
SET NOCOUNT ON
declare @nombre_tabla varchar(100)
declare @propietario varchar(40)
declare @uid int
declare @nombre_completo varchar(150)
declare @nombre_db varchar(256)
create table #resultados
(nombre varchar(50), filas decimal(12,0), reservado varchar(40),
data varchar(40), tamaño_indice varchar(20),
no_usado varchar(20))
declare tablas cursor
for select a.uid , propietario = left( b.name,40), tabla = a.name
from sysobjects a, sysusers b
where type = 'U' and a.uid = b.uid order by tabla
select @nombre_db = db_name()
OPEN tablas
FETCH NEXT FROM tablas
into @uid, @propietario, @nombre_tabla
WHILE @@FETCH_STATUS = 0
BEGIN
if @uid = 1
begin
insert #resultados
exec sp_spaceused @nombre_tabla
end
else
begin
SET @nombre_completo = rtrim(ltrim(@nombre_db))+'.' + ltrim(rtrim(@propietario)) +'.'+ @nombre_tabla
insert #resultados
exec sp_spaceused @nombre_completo
end
FETCH NEXT FROM tablas INTO @uid, @propietario, @nombre_tabla
END
CLOSE tablas
DEALLOCATE tablas
select * from #resultadosorder by filas desc
Commit Transaction
go
--ejecutarlo en query analizer
exec p_sizetables
Referencia
http://www.lawebdelprogramador.com/codigo/codigo.php?idp=794&id=89&texto=SQL
Begin transaction
/***Procedimiento creado por KM para ver el tamaño de las tablas de una base de datos*/
SET NOCOUNT ON
declare @nombre_tabla varchar(100)
declare @propietario varchar(40)
declare @uid int
declare @nombre_completo varchar(150)
declare @nombre_db varchar(256)
create table #resultados
(nombre varchar(50), filas decimal(12,0), reservado varchar(40),
data varchar(40), tamaño_indice varchar(20),
no_usado varchar(20))
declare tablas cursor
for select a.uid , propietario = left( b.name,40), tabla = a.name
from sysobjects a, sysusers b
where type = 'U' and a.uid = b.uid order by tabla
select @nombre_db = db_name()
OPEN tablas
FETCH NEXT FROM tablas
into @uid, @propietario, @nombre_tabla
WHILE @@FETCH_STATUS = 0
BEGIN
if @uid = 1
begin
insert #resultados
exec sp_spaceused @nombre_tabla
end
else
begin
SET @nombre_completo = rtrim(ltrim(@nombre_db))+'.' + ltrim(rtrim(@propietario)) +'.'+ @nombre_tabla
insert #resultados
exec sp_spaceused @nombre_completo
end
FETCH NEXT FROM tablas INTO @uid, @propietario, @nombre_tabla
END
CLOSE tablas
DEALLOCATE tablas
select * from #resultadosorder by filas desc
Commit Transaction
go
--ejecutarlo en query analizer
exec p_sizetables
Referencia
http://www.lawebdelprogramador.com/codigo/codigo.php?idp=794&id=89&texto=SQL
Query a cadena XML
Crear:
1. El esqueleto de la tabla para poder hacer el select
2. El store procedure que hace el query de la cadeana XML basado en el esqueleto de la tabla
3. Ejecutar el Store Procedure con la cadena XML (probar en el query analizer)
1--La Tabla -Esqueleto
CREATE TABLE [dbo].[SKUsCARGA] ( [CveProducto] [varchar] (20) NOT NULL , [DescProductoTerrSub] [varchar] (150) NOT NULL , [Territorio] [varchar] (20) NOT NULL , [SubTerritorio] [varchar] (20) NOT NULL , [Tecnica] [varchar] (50) NOT NULL , [Precio] [varchar] (10) NOT NULL , [Tamanio] [varchar] (50) NOT NULL , [Pocision] [varchar] (50) NOT NULL , [Apoyo] [varchar] (50) NOT NULL , [FechaAlta] [datetime] NOT NULL , [UsrAlta] [varchar] (20) NOT NULL )
--2. El Store Procedure
CREATE PROCEDURE dbo.PruebaXML
@xmlCargaSKUs text
as
Declare @idoc int
--Ejecutar el sp que carga en memoria el docuemnto XML.
EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlCargaSKUs
--El Query al docto XML
SELECT CveProducto, Territorio, SubTerritorio, Tecnica, Precio, Tamanio, Pocision, Apoyo
FROM OPENXML (@idoc, '/SKUsCARGA/SKU')
WITH SKUsCARGA
--Descargar documento XML de la memoria.
EXEC sp_xml_removedocument @idoc
GO
--3. La ejecucion del store procedure con el paso de la cadena XML
1. El esqueleto de la tabla para poder hacer el select
2. El store procedure que hace el query de la cadeana XML basado en el esqueleto de la tabla
3. Ejecutar el Store Procedure con la cadena XML (probar en el query analizer)
1--La Tabla -Esqueleto
CREATE TABLE [dbo].[SKUsCARGA] ( [CveProducto] [varchar] (20) NOT NULL , [DescProductoTerrSub] [varchar] (150) NOT NULL , [Territorio] [varchar] (20) NOT NULL , [SubTerritorio] [varchar] (20) NOT NULL , [Tecnica] [varchar] (50) NOT NULL , [Precio] [varchar] (10) NOT NULL , [Tamanio] [varchar] (50) NOT NULL , [Pocision] [varchar] (50) NOT NULL , [Apoyo] [varchar] (50) NOT NULL , [FechaAlta] [datetime] NOT NULL , [UsrAlta] [varchar] (20) NOT NULL )
--2. El Store Procedure
CREATE PROCEDURE dbo.PruebaXML
@xmlCargaSKUs text
as
Declare @idoc int
--Ejecutar el sp que carga en memoria el docuemnto XML.
EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlCargaSKUs
--El Query al docto XML
SELECT CveProducto, Territorio, SubTerritorio, Tecnica, Precio, Tamanio, Pocision, Apoyo
FROM OPENXML (@idoc, '/SKUsCARGA/SKU')
WITH SKUsCARGA
--Descargar documento XML de la memoria.
EXEC sp_xml_removedocument @idoc
GO
--3. La ejecucion del store procedure con el paso de la cadena XML
agosto 10, 2008
Requerimiento implementacion Gestión de Facturas
Implantación de la Base de Datos (Back-End)
-Deberá ser con el manejador de base de datos Access o SQL Server 2000
-Deberá diseñar una base de datos bajo los conceptos de normalización y su respectiva integración referencial de la información.
-Deberá modelar la entidad Cliente, Empleado, Producto y Factura. Para cada entidad definirás los atributos básicos para poder operar la factura.
-Si decide utilizar SQL Server 2K puedes usar Store Procedures o Vistas en la implantación o cadenas SQL en el Front-End
Implementación de la GUI (Front-End)
-Deberá ser utilizando Visual Basic NET 2005 o 2008 con el lenguaje Visual Basic .NET
-El tipo de aplicación puede ser ASP.NET -Web- o aplicación de escritorio
-Puedes hacerlo en capas, con objetos, etc. como tú desees.
-Sólo deberá implementar la interfaz GUI para la factura.
¿Qué debe permitir la aplicación para trabajar con las facturas?
- El sistema deberá permitir al usuario gestionar facturas: dar de alta, eliminar y hacer modificaciones a facturas existentes.
- El sistema deberá permitir seleccionar de una fuente de datos los productos -su descripción- que la empresa tiene a disposición para su venta y que se exponen en la factura (la factura deberá permitir contener de 1 a N productos sin repetir).
- El sistema deberá permitir seleccionar de una fuente de datos los clientes -su nombre o denominación social- registrados a los que se expide una factura.
- El sistema deberá permitir modificar los productos incluidos en la factura; es decir cambiar la cantidad o el producto.
- El sistema deberá calcular automáticamente el importe de cada producto de acuerdo a la cantidad solicitada, el subtotal, importe de IVA -manejarlo al 15%- y gran total.
Entrega de Fuentes :
- El archivo de la base de datos de Access o el archivo de respaldo de la Base de datos si decidiste implementar con SQL Server 2K.
- El proyecto de Visual Basic NET 2005 con el código fuente de la operación de la factura.
Aspectos principales a evaluar:
- Con respecto a la base datos el modelo Entidad-Relación implementado
- Con respecto a la GUI de la gestión de la factura, facilidad de uso al usuario, forma de interactuar con la base de datos.
-Deberá ser con el manejador de base de datos Access o SQL Server 2000
-Deberá diseñar una base de datos bajo los conceptos de normalización y su respectiva integración referencial de la información.
-Deberá modelar la entidad Cliente, Empleado, Producto y Factura. Para cada entidad definirás los atributos básicos para poder operar la factura.
-Si decide utilizar SQL Server 2K puedes usar Store Procedures o Vistas en la implantación o cadenas SQL en el Front-End
Implementación de la GUI (Front-End)
-Deberá ser utilizando Visual Basic NET 2005 o 2008 con el lenguaje Visual Basic .NET
-El tipo de aplicación puede ser ASP.NET -Web- o aplicación de escritorio
-Puedes hacerlo en capas, con objetos, etc. como tú desees.
-Sólo deberá implementar la interfaz GUI para la factura.
¿Qué debe permitir la aplicación para trabajar con las facturas?
- El sistema deberá permitir al usuario gestionar facturas: dar de alta, eliminar y hacer modificaciones a facturas existentes.
- El sistema deberá permitir seleccionar de una fuente de datos los productos -su descripción- que la empresa tiene a disposición para su venta y que se exponen en la factura (la factura deberá permitir contener de 1 a N productos sin repetir).
- El sistema deberá permitir seleccionar de una fuente de datos los clientes -su nombre o denominación social- registrados a los que se expide una factura.
- El sistema deberá permitir modificar los productos incluidos en la factura; es decir cambiar la cantidad o el producto.
- El sistema deberá calcular automáticamente el importe de cada producto de acuerdo a la cantidad solicitada, el subtotal, importe de IVA -manejarlo al 15%- y gran total.
Entrega de Fuentes :
- El archivo de la base de datos de Access o el archivo de respaldo de la Base de datos si decidiste implementar con SQL Server 2K.
- El proyecto de Visual Basic NET 2005 con el código fuente de la operación de la factura.
Aspectos principales a evaluar:
- Con respecto a la base datos el modelo Entidad-Relación implementado
- Con respecto a la GUI de la gestión de la factura, facilidad de uso al usuario, forma de interactuar con la base de datos.
Formato separador miles a número en SQL Server
DECLARE @val float
SET @val = '12456.00'
SELECT CONVERT(varchar(50), CONVERT(money, @val), 1)
--Salida
12,456.00
SET @val = '12456.00'
SELECT CONVERT(varchar(50), CONVERT(money, @val), 1)
--Salida
12,456.00
febrero 14, 2008
Uso de pwdencrypt y pwdcompare en SQL Server 2K
Estás dos funciones en SQL Server permiten cifrar y descifrar valores y que son muy últiles para guardar información no legible en la base de datos.
Ejemplo de uso:
--Devuelve la cadena cifrada.
select pwdencrypt('abcde')
--el resultado es: 0x0100841F6D61428B6A7C1E497428DA4F77201E9C15CE03B39414324ADFC9BEDF7C73FCEC7120D2AEEEACA1732737
--Este valor es el que almacenamos en nuestra tabla, por ejemplo un numero de cuenta o una contraseña, de esta manera si alguien ingresa a esta tabla no sabrá a que valor pertenece.
--Ahora comparamos el texto en claro con lo que se almacena en la BD, regresa 1 si son iguales, sino cero.
select pwdcompare('abcde',0x0100841F6D61428B6A7C1E497428DA4F77201E9C15CE03B39414324ADFC9BEDF7C73FCEC7120D2AEEEACA1732737)
Ahora veremos un store procedure en donde recibe el texto en claro -un password- y lo compara
con el que esta en la BD cifrado.
CREATE PROCEDURE dbo.spu_SelectUsr
@Usuario varchar(15),
@Passwd varchar(15)
AS
Set nocount on;
Declare @ExisteCta bit
set @ExisteCta = 0
SELECT @ExisteCta = 1
FROM USUARIO
WHERE (Usuario = @Usuario) AND (pwdcompare(@Passwd, PasswdCifrado)=1)
if @ExisteCta = 0
begin
Raiserror 13000 'No existe la cuenta de acceso proporcionada.'
Return
end
Go
Link otros ejemplos
http://msmvps.com/blogs/gladchenko/archive/2005/04/06/41083.aspx
Ejemplo de uso:
--Devuelve la cadena cifrada.
select pwdencrypt('abcde')
--el resultado es: 0x0100841F6D61428B6A7C1E497428DA4F77201E9C15CE03B39414324ADFC9BEDF7C73FCEC7120D2AEEEACA1732737
--Este valor es el que almacenamos en nuestra tabla, por ejemplo un numero de cuenta o una contraseña, de esta manera si alguien ingresa a esta tabla no sabrá a que valor pertenece.
--Ahora comparamos el texto en claro con lo que se almacena en la BD, regresa 1 si son iguales, sino cero.
select pwdcompare('abcde',0x0100841F6D61428B6A7C1E497428DA4F77201E9C15CE03B39414324ADFC9BEDF7C73FCEC7120D2AEEEACA1732737)
Ahora veremos un store procedure en donde recibe el texto en claro -un password- y lo compara
con el que esta en la BD cifrado.
CREATE PROCEDURE dbo.spu_SelectUsr
@Usuario varchar(15),
@Passwd varchar(15)
AS
Set nocount on;
Declare @ExisteCta bit
set @ExisteCta = 0
SELECT @ExisteCta = 1
FROM USUARIO
WHERE (Usuario = @Usuario) AND (pwdcompare(@Passwd, PasswdCifrado)=1)
if @ExisteCta = 0
begin
Raiserror 13000 'No existe la cuenta de acceso proporcionada.'
Return
end
Go
Link otros ejemplos
http://msmvps.com/blogs/gladchenko/archive/2005/04/06/41083.aspx
Control para graficar en asp.net
Recientemente tuve la necesidad de graficar unos datos en el web, y mi sorpresa fue que visual studio net 2005 no incluye un control para ello, mi otra opción era sacarlo con Crystal Reports o un control y encontré este gratuito que me parecio muy bueno y además free.
http://www.carlosag.net/Tools/WebChart/Default.aspx
La guía de uso rápido o tutorial:
http://www.carlosag.net/Articles/WebChartTutorial.aspx
http://www.carlosag.net/Tools/WebChart/Default.aspx
La guía de uso rápido o tutorial:
http://www.carlosag.net/Articles/WebChartTutorial.aspx
Herramientas gratis para SQL Server
Excelente link en donde podrán encontrar útiles herramientas para SQL Server 2k-2005
http://weblogs.sqlteam.com/mladenp/archive/2007/11/20/Free-SQL-Server-tools-that-might-make-your-life-a.aspx
http://weblogs.sqlteam.com/mladenp/archive/2007/11/20/Free-SQL-Server-tools-that-might-make-your-life-a.aspx
Suscribirse a:
Entradas (Atom)