viernes, 8 de agosto de 2008

How to brushes in ComboBox - Como dar color a los Items de un ComboBox con .Net

Hola de nuevo quizas algunos se hayan preguntado si se puede asignar color a algunos items de un combobox, la respuesta es Claro que se puede, lo que tenemos que establecer es la propiedad DrawMode del combo en la opcion OwnerDrawVariable

Después utilizaremos el evento DrawItem para colorear el fondo y dibujar el texto.

'Evento
Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
Select Case e.Index
Case 0,1,2,3,4 'Amarillo
e.Graphics.FillRectangle(Brushes.Yellow , e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
Case 5,6,7,8 'Verde
e.Graphics.FillRectangle(Brushes.Green, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
End Select
'Coloreamo el texto
e.Graphics.DrawString(ComboBox1.Items(e.Index).ToString(), e.Font, New SolidBrush(e.ForeColor), e.Bounds)
End Sub

Espero les sea de utilidad, hasta la proxima.
'----------------------------------------------------------------------------------------
Hello again perhaps some have questioned whether we can assign color to some items from a combobox, the answer is "Obviously, you can, what we have to establish is the DrawMode property of the combo in the option OwnerDrawVariable

Then use the DrawItem event coloring the background and draw the text.


'Event
Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
Select Case e.Index
Case 0,1,2,3,4 'Yellow
e.Graphics.FillRectangle(Brushes.Yellow , e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
Case 5,6,7,8 'Green
e.Graphics.FillRectangle(Brushes.Green, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
End Select
'Coloring the text
e.Graphics.DrawString(ComboBox1.Items(e.Index).ToString(), e.Font, New SolidBrush(e.ForeColor), e.Bounds)
End Sub

I hope will be useful until the next one

viernes, 27 de junio de 2008

TIP: Customize the format Columns's Data in DataGridView - Personalizar el formato de los datos de columnas en el control DataGridView

* Cuando se quiere dar formato de columnas en un Datagridview con la propiedad DatagridView.Columns("NameColumn").DefaultCellStyle.Format,nos tenemos que percatar si la Configuracion Regional y de idioma de la maquinadonde vamos a ejecutar la aplicacion este a nuestro Idioma y País, si no es asi debemos asignarla para que no haya problemas cuando queramos formatear el tipo de datos de columnas.

Ejmplo : Formateando la columna Monto para valores numericos

'Habiendo verificado la Configuracion Regional y de idioma podremos ejecutar sin problemas
'la siguiente linea de codigo

DatagridView.Columns("Monto").DefaultCellStyle.Format = "N2"

'Ejecutando la linea anterior, no debemos tener ningun Problema

Suerte, hasta el proximo Tip.

lunes, 23 de junio de 2008

Como eliminar datos o filas en un DataGridView enlazado a Datos (por un DataTable,DataSet,etc)

Bueno este caso es clasico de seguro les a pasado a muchos y la solucion es facil.
Cuando ustedes llenan el DataGridView a veces lo hacen con la Propiedad DataSource, que seria :
Ejemplo :
Dim dt as DataTable
dt = oClase.TraerDatos()
DataGridView1.DataSource= dt
Pero al hacer esto amarramos o enlazamos el DataGridView al DataTable y cuando querramos borrar o limpiar el DataGridView con :
DataGridView.Rows.Clear() ' No se podra
Pero si utilizamos :
DataGridView.Columns.Clear()
Si limpia el DataGridView pero con todo y Cabeceras, para solucionar esto haremos un pequeño artificio, quedando el codigo de la siguiente forma :
Dim dt as DataTable
Dim dt2 as DataTable
dt = oClase.TraerDatos()
dt2 = dt.Clone ' Es la Propiedad que me servira para clonar la estructura de un DataTable en este caso las Columnas
DataGridView1.DataSource= dt

Ahora si cuando limpiemos el DataGridView con el evento de un Boton, supongamos que se llame btnLimpiar :
Private Sub btnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpiar.Click
DataGridView1.Columns.Clear()
DataGridView1.DataSource = dt2
'Para simular que hemos limpiado todas las filas de datos del DataGridView y caso resuelto
End Sub


Hasta la proxima.

jueves, 19 de junio de 2008

How to: Describe columns from table in SQL - Como describir ver los nombres , tipo de datos, tamaño de columnas en una tabla en SQL Server 2000/2005

Hello for this we must use a catalogue of stored procedure called sp_columns, very useful when we want to see the description of the columns (columns such as name, data type, size of the column, etc.) from a table in a database.
Use it and enjoy.

For example, the syntax for sp_columns is:
sp_columns table_name [, table_owner] [, table_qualifier] [, column_name]

To use sp_columns and seek information about a column in particular, can be used:
sp_columns publishers, column_name = @ "pub_id"

This provides the same information that the command with all the specified parameters: sp_columns publishers, "BOD", "pubs2", "pub_id"
It can also be used "null" as a marker of place:
sp_columns publishers, null, null, "pub_id"

---------------------------------------------------------
--En Castellano

Hola para esto debemos usar un procedimiento almacenado de catálogo llamado sp_columns, muy util cuando deseamos ver la descripcion de las columnas(como columns name,data type,tamaño de la columna,etc) de una tabla en una database.
Pruebenlo y disfrutenlo.

Por ejemplo, la sintaxis para sp_columns es:
sp_columns table_name [, table_owner ] [, table_qualifier ] [, column_name ]


Para utilizar sp_columns y buscar información sobre una columna en particular, puede utilizarse:
sp_columns publishers, @column_name = "pub_id"
Esto proporciona la misma información que el comando con todos los parámetros especificados:
sp_columns publishers, "dbo", "pubs2", "pub_id"

También puede utilizarse "null" como marcador de lugar:
sp_columns publishers, null, null, "pub_id"


Hasta la proxima.

How to: Describe fields name from Tables in -Como ver el nombre de Campos, tipo de Campos o longitud de Campos de una Tabla en SQL Server 2000 o 2005

Hello, for this we must use a catalogue stored procedure calls sp_columns, very useful when we want to see the details of the fields (such as name fields, data type, length of the fields, etc.) from a table into a base data.

Use it and enjoy.



For example, the syntax for sp_columns is:

sp_columns table_name [, table_owner] [, table_qualifier] [, column_name]



To use sp_columns and seek information about a column in particular, can be used:

sp_columns publishers, column_name = @ "pub_id"

This provides the same information that the command with all the specified parameters:

sp_columns publishers, "BOD", "pubs2", "pub_id"

It can also be used "null" as a marker of place:

sp_columns publishers, null, null, "pub_id"



-------------------------------------------------------------

--En Castellano

Hola, para esto nosotros debemos usar un procedimiento almacenado de catálogo llamdo sp_columns,muy util cuando queremos ver el detalle de los campos ( como son Nombre de los campos,tipo de datos , longitud de los campos,etc )de una tabla en una base de datos.

Usenlo y disfrutenlo.



Por ejemplo, la sintaxis para sp_columns es:

sp_columns table_name [, table_owner ] [, table_qualifier ] [, column_name ]



Para utilizar sp_columns y buscar información sobre una columna en particular, puede utilizarse:

sp_columns publishers, @column_name = "pub_id"


Esto proporciona la misma información que el comando con todos los parámetros especificados:

sp_columns publishers, "dbo", "pubs2", "pub_id"


También puede utilizarse "null" como marcador de lugar:

sp_columns publishers, null, null, "pub_id"



Hasta la proxima.

sábado, 14 de junio de 2008

Stored Procedure with Text type parameters for handling plots - Procedimiento Almacenado con parametros tipo Text para manejo de tramas

Stored Procedure with Text type parameters for handling plots - Procedimiento Almacenado con parametros tipo Text para manejo de tramas

Hi again perhaps someone have been crossed with the case you need to insert large plots of data in a database and may also specify the number of database (unclear whether you are in a distributed application, this post is an example stored procedure , I hope will be useful to the next.
-----------------------------------------------------------------
Hola de nuevo quizas algunos se hayan cruzado con el caso que necesitan insertar grandes tramas de datos en una base de datos y especificar quizas tambien el numero de base de datos(claro si estamos en una aplicacion distribuida, bueno aca les posteo un procedimiento almacenado de ejemplo, espero les sea de utilidad hasta la proxima.



create proc uspInsertPlotsInDatabase
@CodId varchar(12),
@Plot1 text,
@Plot2 text,
@Plot3 text,
@Plot4 text,
@Plot5 text,
@Plot6 text,
@Plot7 text,
@dDate datetime,
@CodUser varchar(4),
@Plot8 text,
@Plot9 text,
@database varchar(50),
@NroDB varchar(4)
as
set nocount on
if len(@database)>0
exec( 'insert into '+@database+''+@NroDB+'..Plots(cCodId,cPlot1,cPlot2,cPlot3,cPlot4,cPlot5,cPlot6,cPlot7,dDate,cCodUser,cPlot8,cPlot9)'
+ ' values (' + @CodId + ',' + @Plot1 + ',' + @Plot2 + ',' + @Plot3 + ' '
+ ' ,' + @Plot4 + ',' + @Plot5 + ',' + @Plot6 + ','
+ ' '+ @Plot7 + ',' + @dDate + ',' + @CodUser + ',' + @Plot8 + ',' + @Plot9 + ')')
else
exec( 'insert into Plots(cCodId,cPlot1,cPlot2,cPlot3,cPlot4,cPlot5,cPlot6,cPlot7,dDate,cCodUser,cPlot8,cPlot9)'
+ ' values (' + @CodId + ',' + @Plot1 + ',' + @Plot2 + ',' + @Plot3 + ' '
+ ' ,' + @Plot4 + ',' + @Plot5 + ',' + @Plot6 + ','
+ ' '+ @Plot7 + ',' + @dDate + ',' + @CodUser + ',' + @Plot8 + ',' + @Plot9 + ')')

-----------------------------------------------------------------

create proc uspInsertaTramasenBaseDatos
@CodId varchar(12),
@Trama1 text,
@Trama2 text,
@Trama3 text,
@Trama4 text,
@Trama5 text,
@Trama6 text,
@Trama7 text,
@dFecha datetime,
@CodUser varchar(4),
@Trama8 text,
@Trama9 text,
@BaseDatos varchar(50),
@NroBD varchar(4)
as
set nocount on
if len(@BaseDatos)>0
exec( 'insert into '+@BaseDatos+''+@NroBD+'..Tramas(CodId,Trama1,Trama2,Trama3,Trama4,Trama5,Trama6,Trama7,dfecha,cCodUsuer,Trama8,Trama9)'
+ ' values (' + @CodId + ',' + @Trama1 + ',' + @Trama2 + ',' + @Trama3 + ' '
+ ' ,' + @Trama4 + ',' + @Trama5 + ',' + @Trama6 + ','
+ ' '+ @Trama7 + ',' + @dFecha + ',' + @CodUser + ',' + @Trama8 + ',' + @Trama9 + ')')
else
exec( 'insert into Tramas(CodId,Trama1,Trama2,Trama3,Trama4,Trama5,Trama6,Trama7,dfecha,cCodUsuer,Trama8,Trama9)'
+ ' values (' + @CodId + ',' + @Trama1 + ',' + @Trama2 + ',' + @Trama3 + ' '
+ ' ,' + @Trama4 + ',' + @Trama5 + ',' + @Trama6 + ','
+ ' '+ @Trama7 + ',' + @dFecha + ',' + @CodUser + ',' + @Trama8 + ',' + @Trama9 + ')')

jueves, 12 de junio de 2008

Custom Stored Procedure Complete II - Procedimiento Almacenado Personalizado Completo II

Hello, my last post about a custom stored procedure was limited when we want to work with INNER JOIN, so this is more comprehensive because it contains a parameter called tablesInner which I used to receive all INNER JOIN we want to add to the query. Any question leave me a comment.
--------------------------------------------------------------------------------------------
Hola, mi último post acerca de un procedimiento almacenado personalizado se limitaba cuando queremos trabajar con INNER JOIN, por lo que este es más completo porque contiene un parámetro llamado tablesInner que he usado para recibir todos los INNER JOIN que queremos añadir a la consulta. Cualquier pregunta me dejan un comentario.


--Custom Stored Procedure II - Contains a parameter called tablesInner
--which I used to receive all INNER JOIN we want to add to the query
create proc uspExecuteMultiSentences
@fields varchar(500),
@database varchar(80),
@table varchar(50),
@filters varchar(500),
@Nrodatabase varchar(4)='',
@tablesInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablesInner) = 0
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '' + @Nrodatabase + '..' + @table + ' WHERE ' + @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM ' + @database + '..' + @table + ' WHERE ' + @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' WHERE ' + @filters + ''
end
Else
begin
If Len(@database) > 0
If Len(@Nrodatabase)>0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + ''+ @Nrodatabase + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
else
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @database + '..'+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
Else If Len(@database)= 0
set @sSQL = 'SELECT '+ @fields + ' FROM '+ @table + ' '+ @tablesInner + ' WHERE '+ @filters + ''
end
exec(@sSQL)

--Executing Custom Stored Procedure
exec uspExecuteMultiSentences 'C.cCodCus,C.cNamPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetailCustomer DC ', ' DC.cTypeDetCus = ''FR'' and DC.cCodDetCus = ''0123456789''', '', ' INNER JOIN dbCustomer..Customer C ON DC.cCodCus = C.cCodCus '
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

--Procedimiento Almacenado Personalizado II - El cual contiene
--un parametro llamado tablasInner que utilizo para recibir todos los INNER JOIN

--para la consulta
create proc uspEjecutaMultiSentencia
@campos varchar(500),
@basedatos varchar(80),
@tabla varchar(50),
@filtros varchar(500),
@Nrobasedatos varchar(4)='',
@tablasInner varchar(500)=''
as
set nocount on
declare @sSQL varchar(1700)
If Len(@tablasInner) = 0
begin
If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '' + @Nrobasedatos+ '..' + @tabla + ' WHERE ' + @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM ' + @basedatos + '..' + @tabla + ' WHERE ' + @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' WHERE ' + @filtros + ''
end
Else
begin

If Len(@basedatos) > 0
IF Len(@codAge)>0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + ''+ @Nrobasedatos+ '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
else
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @basedatos + '..'+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
Else If Len(@basedatos)= 0
set @sSQL = 'SELECT '+ @campos + ' FROM '+ @tabla + ' '+ @tablasInner + ' WHERE '+ @filtros + ''
end
exec(@sSQL)
--Ejecutando Procedimiento Almacenado
exec uspEjecutaMultiSentencia 'C.cCodPer,C.cNomPer,C.cDirPer,C.cTelPer,C.cDoc', '', 'DetalleCliente DC ', ' DC.cTipoDetalle = ''FR'' and DP.cCodDet = ''0123456789''', '', ' INNER JOIN dbCliente..Cliente C ON DC.cCodPer = C.cCodPer '

See you.Happy Coding – Nos vemos. Feliz programacion

martes, 10 de junio de 2008

Custom Stored Procedure which parameters are fields_name, schema_name, database_name,table _name and filters – Procedimiento Almacenado Personalizado

Custom Stored Procedure which parameters are fields_name, schema_name, database_name,table _name and filters – Procedimiento Almacenado Personalizado cuyos parámetros que recibe son los Campos, esquema, base de datos, tabla y filtros

Example – Ejemplo : Let’s go to see the example – Veamos el ejemplo
As Fields = 'cCodCta,cEstadoCta,dAperturaCta',
Como Campos = 'cCodCta,cEstadoCta,dAperturaCta',
---------------------------------------------------------------------
As Schema = 'Pruebas',
Como Esquema = 'Pruebas',
---------------------------------------------------------------------
As Database = 'DBPrueba',
Como Base de Datos = 'DBPrueba',
---------------------------------------------------------------------
As Database_number = '01',
Como Numero de base de datos = '01'
As Table_name = 'Cta', --As Bill
Como Tabla= 'Cta', --Cuenta
---------------------------------------------------------------------
As filters = ' cCodCta ='''+ rtrim(@CodCta) +'''',
Como Filtros = ' cCodCta ='''+ rtrim(@CodCta) +'''',
Or
As filters = ' cCodCta =123456789', --Specific filters
Como Filtros = ' cCodCta =123456789', --Filtros especificos
--Stored Procedure in English
create proc uspGetDataCta
@Fields varchar(200),
@Schema varchar(40),
@Database varchar(40),
@NroDatabase varchar(4)
@Table varchar(40),
@Filters varchar(100)
as
set nocount on
DECLARE @Sentence varchar(1000)
set @ Sentence ='Select '+ @Fields +' from '+ @Schema +'.'+ @Database +''+ @NroDatabase +'..'+ @Table +' where @Filters
exec(@Sentence)
go
--Executing Stored Procedure
exec uspGetDataCta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta =123456789'
or
exec uspGetDataCta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta ='''+ rtrim(@CodCta) +''''

---------------------------------------------------------------------
--Procedimiento Almacenado en Castellano
create proc uspListarDatosCuenta
@Campos varchar(200),
@Esquema varchar(40),
@Basedatos varchar(40),
@NroBaseDatos varchar(4)
@Tabla varchar(40),
@Filtros varchar(100)
as
set nocount on
DECLARE @SentenciaSQL varchar(1000)
set @SentenciaSQL ='Select '+ @Campos +' from '+ @Esquema +'.'+ @BaseDatos +''+ @NroBaseDatos +'..'+ @Tabla +' where @Filtros
exec(@SentenciaSQL)
go
--Ejecutando Procedimiento Almacenado
exec uspListarDatosCuenta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta =123456789'
or
exec uspListarDatosCuenta 'cCodCta,cEstadoCta,dAperturaCta','Pruebas', 'DBPrueba','01','Cta',' cCodCta ='''+ rtrim(@CodCta) +''''

See you.Happy Coding – Nos vemos. Feliz programacion

viernes, 30 de mayo de 2008

vbConstants(Retorno de Carro, Salto de Línea, Nueva Linea , BackSpace, Caracter nulo, etc) para Cadenas de Texto

A continuación les posteo una tabla con las principales vbConstants o Constantes para Visual Basic.Net



Se pueden utilizar estas constantes en cualquier parte donde se desee que aparezcan en código de Visual Basic. Por ejemplo, las puede utilizar para mostrar un mensaje en una caja de texto multilínea, un cuadro de mensaje messagebox, escribir en un archivo de texto, etc.

Las vbConstants se utilizan cuando se quiere insertar texto en cualquier parte de nuestro código en VB.NET, si utilizamos estas constantes cuando insertamos texto, hay que asegurarnos de no encerrar las constantes entre comillas, sino la constante aparecera en la cadena de texto en lugar del carácter representado por ella.
Nos vemos.

jueves, 29 de mayo de 2008

¿Qué instalar para que nuestros clientes vean un informe desde un reportviewer ?

Habiendo creado ya algun informe de Reporting Services no tenemos ningun problema para visualizarlo en nuestra máquina con el visor que trae .NET Framework, pero ¿qué pasa si lo quisieramos instalar y ejecutar en un cliente o una pc donde no está el Framework 2.0?, para esto necesitamos tener instalado primero y fundamentalmente el .NET Framework 2.0, pero además una librería que no viene con el Framework 2.0.
La solución es que debemos instalar un paquete que nos proporciona las dll adicionales para que se pueda ejectuar correctamente. Este paquete lo pueden descargar desde este link y ver los detalles para su correcta instalación. El archivo se llama ReportViewer, está en español y ocupa 1.8 MB
Luego tenemos que descargar y ejecutar un parche de actualizacion que lo pueden descargar aqui

Saludos

viernes, 18 de abril de 2008

Error al intentar ejecutar el proyecto-no se puede inicializar la depuracion

Hola a todos quizas a algunos les haya pasado este problemilla y pues aca les dejo los pasos para poder darle solucion. Sucede cuando se intenta ejecutar un proyecto con la opcion Debug ( es decir presionando F5 ) y no sale un mensaje que dice: "Error al intentar ejecutar el proyecto: No se puede iniciar la depuracion. El identificador del enlace no es valido" , aun se puede ejecutarlo iniciando sin depurarlo ( Ctrl + F5 ) pero quisiera hacerlo funcionar en modo debug. Como hago para que me funcione en el modo debug ?

Una de las soluciones es esta, que fue la que me sirvio, la solución consiste en realizar los siguientes pasos:
1. Una vez abierto tu proyecto, selecciona el menú "Project"(Proyecto) y ve a la opción "Properties"(Propiedades).
2. Una vez que se haya abierto la pestaña de "Properties"(Propiedades), selecciona la pestaña lateral "Debug"(Depurar).
3. En esta sección, busca y habilita la casilla de verificación etiquetada como "Enable unmanaged code debugging"(Habilitar depuracion de codigo no administrado). Reconstruye o vuelve a generar tu proyecto e intenta iniciar el depurador con F5 y con esto quedara resulto.

Cualquier comentario o pregunta les sera contestada en la brevedad posible Hasta pronto.