lunes, 18 de mayo de 2015

Creación de un Gráfica

lunes, 18 de mayo de 2015 0 comentarios

En este tutorial vamos a mostrar como agregar el control de gráfico a tu formulario de aplicación de Windows y su configuración necesaria:

Agregando el control gráfico:

a. Para agregar el control, en vista de diseño abra la Caja de Herramientas.

b. Desde la categoría Datos, arrastre el control "Chart" al área de diseño. Sino se visualiza el control "Chart" en el cuadro de herramientas, haga clic derecho en el cuadro de herramientas, seleccione Elegir elementos, y luego seleccione los siguientes espacios de nombres en la pestaña de componentes de .Net Framework:

System.Windows.Forms.DataVisualization.Charting

c. Clic sobre el control "Chart" en el área de diseño y seleccione Propiedades.

d. En la ventana de Propiedades, haga clic en el botón Categoría.

e. En la ventana de propiedades de Categoría, haga clic en la colección de propiedades ChartAreas, y a continuación haga clic en [...] los puntos suspensivos para abrir el editor de la colección de ChartAreas.

f. Haga clic en Agregar, y a continuación Aceptar, Un nuevo ChartArea se agrega a la colección de nombres.

g. En la ventana de Propiedades, haga clic en la colección de Serie, y a continuación haga clic en [...] los puntos suspensivos para abrir nuevamente la colección de Serie.

h. Ahora, en el editor de colección de serie, haga clic en Agregar, y a continuación , establezca las siguientes propiedades:

PropiedadValor
ChartArea
ChartArea2
ChartType
Bar
Nombre
Gráfico de barras
h. Haga clic en Aceptar, y a continuación nuevamente clic en Aceptar.

Agregando datos a la Tabla

Para agregar datos a la tabla haga lo siguiente:

a. Abra el editor de colección de la serie nuevamente.

b. En la zona de Miembros, seleccione la Series1.

c. En el área de propiedades de la categoría Data de la Series1, haga clic en propiedades y luego clic en [...] para abrir el editor de colección de DataPoint.

d. En el editor de DataPoint, haga clic en Agregar y a continuación asigne valor a YValues del objeto recién creado. Repita este paso hasta que usted cree conveniente.

e. Haga clic en Aceptar y a continuación repita los pasos para la serie BarChart.

f. En el editor de la colección de la Serie, haga clic en Aceptar.

g. Ejecute la aplicación.

Ahora, se podrá ver los gráficos en las áreas establecidas. De la misma forma usted podrá ir cambiando los datos y las gráficas a su conveniencia.


Leer mas

miércoles, 15 de abril de 2015

Cantidad de registros de tablas en SQL Server

miércoles, 15 de abril de 2015 0 comentarios

Hace unos días estuve realizando una aplicación donde necesitaba consultar y saber la cantidad de registros que tenían mis bases de datos en SQL Server, pero no utilizando el clásico SELECT COUNT(*) FROM TableName; y pude solucionarlo de la siguiente manera:

USE DataBase_Name

SELECT A.rows, B.name
FROM sysindexes A, (SELECT id, name FROM sysobjects WHERE xtype = 'U') B
WHERE A.id = B.id AND indid < 2
ORDER BY a.rows, B.name

Espero les sirva.

Saludos
Leer mas

jueves, 5 de marzo de 2015

Llenado óptimo de un DataGridView con una gran cantidad de Registros

jueves, 5 de marzo de 2015

Primeramente, acá no se va a discutir si es mejor usar un ListView o otro bendito control con la cual cargar datos desde una fuente tan grande como por ejemplo el de una tabla en un base de datos de SQL Server, si te sirve para otro control similar, eres un campeón!!!!, pero si no es así, mándame un correo a parte para publicarlo, si???

Estuve probando cargar una gran cantidad de datos desde un procedimiento en SQL Server, y déjenme decirles que el código anida 3 querys con mas de 10 tablas involucradas, bueno, lo cierto es que para invocar los registros en un DataGridView necesitarais asegurar el tiempo de carga, ya que esto puede originar malestar en el usuario final que por supuesto es un completo cretino que no entiende nuestros esfuerzos de brindarle una gama alta de tecnología informática a sus pies.

Verais, se que algunos optan por cargar directamente con la propiedad DataSource, y creo que es una solución más óptima de presentar rápidamente los datos en nuestro control, pero esto necesita una esquematización directa y dependiente de la sentencia SQL nativa en el Query, mejor dicho, si habeis puesto select * from tbl_datos en tu query, pues la cabecera de tus columnas en el datagridview se verá una mierda. Ademas esta el hecho de agregar columna con estilos visuales como colores y botones extras, pues es ahí donde estarais jodidos, pues entonces necesariamente tendras que recurrir a diseñar el DataGridView agregándolo con cada columna del dato que desais mostrar, pues no os preucupeies, existe siempre una solución.

Bueno yo opto por agregar las columnas mediante el diseñador del Datagridview, es más divetido ya que me da pereza en codigo puro, pero si podeis hacerlo de otra forma, es tu problema.

Bueno como ya teneis una idea a lo que me refiero pues os diré que solo falta el codigo para que esto sea una realidad. Yo use los métodos propios de mis técnicas de programación, si el tuyo es muy distinto al mió, que demonios, creo que eres lo suficientemente listo para acomodarlo a tu código fuente.

Dim sDao As New Procedimientos ' no se sentreis mucho en esta variable, es la que contiene mi clase donde están todas las funciones de consultas al sql


Dim Dt As DataTableReader  ' para este caso usare un datatablereader, si pueden hacer con un datatable purto pues estas en tu onda

Dt = sDao.query_datos("select * from tablita_pesada").CreateDataReader ' cargamos los datos al reader para recorrerlo, query_datos es la funcion en mi clase donde se invoca al sql server y demas cosas etc etc

     dg_doc.Rows.Clear() ' dg_doc es el nombre del datagridwiew, y uso el clear porque esto lo uso dentro de un sub para invocarlo desde varios eventos ya que de lo contrario me llenarian de datos repetidos

     Dim Cell As DataGridViewCell ' crea una variable con las caracteristicas de una celda de un datagridview que en primera instancia capturará el dato de cada registro recorrido
     Dim Row As DataGridViewRow ' crea una variable con las caracteristicas de una fila de un datagridview que en ultima instancia capturara los datos de las celdas por cada registro


           
           Do While Dt.Read() ' recorremos la variable reader con un loop, si saveis como hacerlo con un for pues bien
                
                'creo que el código aquí es pura deducción lógica, tampoco lo voy a explicar linea por linea, joder

                Row = New DataGridViewRow

                Cell = New DataGridViewTextBoxCell
                Cell.Value = Dt("Documento")
                Row.Cells.Add(Cell)
               
                Cell = New DataGridViewTextBoxCell
                Cell.Value = Dt("Fecha Vcto.").ToString
                Row.Cells.Add(Cell)

                             ' de esta parte me refería cuando les contabla que haveces necitamos poner algunas características que solo los podrais hacer al diseñar el datagridview
                Cell = New DataGridViewTextBoxCell
                If DateDiff(DateInterval.Day, Date.Today, Dt("Fecha Vcto.")) > 0 Then
                    Cell.Value = "Aún.."
                    Cell.Style.BackColor = Color.LightGreen

                ElseIf DateDiff(DateInterval.Day, Date.Today, Dt("Fecha Vcto.")) = 0 Then
                    Cell.Value = "Hoy!!"
                    Cell.Style.BackColor = Color.Green
                Else
                    Cell.Value = "Urgente!!"
                    Cell.Style.BackColor = Color.OrangeRed
                End If
                Row.Cells.Add(Cell)

               
                Cell = New DataGridViewCheckBoxCell
                Cell.Value = False

                Row.Cells.Add(Cell)

                            ' esta partecita es la que nos ahorra el tiempo de llenado en el DataGridView
                dg_doc.Rows.Add(Row)
            Loop



CUANDO ESTAS EN ESTA SITUACIÓN SE QUE LO MÁS COMÚN ES PONER EL SIGUIENTE CÓDIGO:

            Do While Dt.Read()

                 dg_doc.Rows.Add()
                dg_doc.Item(0, dg_doc.Rows.Count - 1).Value = Dt("Documento")
               
                dg_doc.Item(7, dg_doc.Rows.Count - 1).Value = Dt("Fecha Vcto.")

                If DateDiff(DateInterval.Day, Date.Today, Dt("Fecha Vcto.")) > 0 Then
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Value = "Aún.."
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Style.BackColor = Color.LightGreen
                ElseIf DateDiff(DateInterval.Day, Date.Today, Dt("Fecha Vcto.")) = 0 Then
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Value = "Hoy!!"
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Style.BackColor = Color.Yellow
                Else
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Value = "Urgente!!"
                    dg_doc.Item(8, dg_doc.Rows.Count - 1).Style.BackColor = Color.OrangeRed
                End If

                dg_doc.Item(9, dg_doc.Rows.Count - 1).Value = Dt("Moneda")
                dg_doc.Item(10, dg_doc.Rows.Count - 1).Value = Dt("Mto. Original")
                dg_doc.Item(11, dg_doc.Rows.Count - 1).Value = Dt("Mto. No Aplicado")
                dg_doc.Item(12, dg_doc.Rows.Count - 1).Value = Dt("Mto. No Aplicado")


            Loop

PERO SI DESEAIS QUE OS DESPIDAN DE SU TRABAJO POR NO OPTIMIZAR EL TIEMPO DE PRESENTACIÓN Y LLENADO DE SUS DATAGRIDVIEW, PUES ÁNDALE, LA DIFERENCIA ES ABISMAL, CON DECIRLES QUE CON ESTO TUVE QUE ESPERAR UN MINUTO PARA CARGAR TODA LA DATA DE LO QUE ME COSTO CASI 2 SEGUNDO CON EL CÓDIGO DE ARRIBA!!!!
Leer mas

Buscar

 
Copyright © 2009 .Net Solucion