septiembre 12, 2008

Hotkeys en un DataGridView

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

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

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

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

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