Archivos para marzo, 2015

Personalizar las filas de un datagridview

Publicado: 29 de marzo de 2015 en Actualidad

Personalizar las filas de un datagridview

Hola a todos..
La mayoría de los proyecto realizado , siempre utilizamos los mismos controles de siempre en esta oportunidad tenemos un ejemplo de como personalizas la filas de un datagridview.
El siguiente ejemplo nos muestra la siguiente imagen donde observamos que las columnas ("código"," producto", "precio * unidad") tienen las primeras fila un BackColor = Write , pero la ultima se asigno un BackColor = PaleGreen, de misma manera la columnas de("Cant")., tiene las primeras filas un BackColor = LemonChiffon pero la ultima fila tiene el color asignado BackColor =MistyRose.

Así mismo estamos utilizando el evento CellEndEdit del datagridview, que nos permitirá realizar los cálculos del importe a pagar luego de haber finalizado la edición de la celda ("Cant").

Imagen
color+filas+dtg.png

Código fuente
***********
Paso 1:
******

Sub Listar_productos()
Try
Dim Codigo() As Integer = {1, 2, 3, 4, 5}
Dim Productos() As String = {"Gaseosa", "Yogurt", "Galletas", "Chocolates","Caramelos"}
Dim PreciosXunidad() As Double = {1.5, 1.2, 0.5, 0.5, 0.1}

DataGridView1.Rows.Clear()
For index As Integer = 0 To Codigo.Length – 1
DataGridView1.Rows.Add()
DataGridView1("txtCodigo", index).Value = Codigo(index)
DataGridView1("txtProducto", index).Value = Productos(index)
DataGridView1("txtPrecioXunidad", index).Value = PreciosXunidad(index)
Next

‘Agregamos una fila mas que contendrá lo siguiente
DataGridView1.Rows.Add()
DataGridView1("txtProducto", DataGridView1.Rows.Count – 1).Value = "Importe Total Pagar S/."
DataGridView1("txtPrecioXunidad", DataGridView1.Rows.Count – 1).Value = "===>"

Catch ex As Exception
MessageBox.Show(ex.Message, "vb.net", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Paso 2:
*******
Private Sub frmVentas_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load
‘Cargamos los productos
Listar_productos()
End Sub

Paso 3:
*******

‘asignamos formatos a las celda del datagridview

Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal eAs System.Windows.Forms.DataGridViewCellFormattingEventArgs) HandlesDataGridView1.CellFormatting
Try

Dim Tipo As String
‘comprobamos que sea la columna txtCant
If (DataGridView1.Columns(e.ColumnIndex).Name.Equals("txtCant")) Then
‘Capturamos el valor de la celda
Tipo = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If (DataGridView1.Rows.Count – 1 > e.RowIndex) Then
If (Tipo = "") Then
e.CellStyle.BackColor = Color.LemonChiffon
Else
e.CellStyle.BackColor = Color.White
End If
Else
e.CellStyle.BackColor = Color.MistyRose
End If

ElseIf (DataGridView1.Columns(e.ColumnIndex).Name.Equals("txtProducto")) Then
Tipo = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
‘verificamos que el valor de la celda contemga el siguiente Texto
If (Tipo = "Importe Total Pagar S/.") Then
‘asignamos un color que diferencie a las demas celdas de la columna txtProducto
DataGridView1("txtCodigo", e.RowIndex).Style.BackColor = Color.PaleGreen
DataGridView1("txtProducto", e.RowIndex).Style.BackColor =Color.PaleGreen
DataGridView1("txtPrecioXunidad", e.RowIndex).Style.BackColor =Color.PaleGreen
Else
e.CellStyle.BackColor = Color.White
End If

ElseIf (DataGridView1.Columns(e.ColumnIndex).Name.Equals("txtImportePagar"))Then
Tipo = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If (DataGridView1.Rows.Count – 1 > e.RowIndex) Then
If (Tipo = "") Then
e.CellStyle.BackColor = Color.White
Else
e.CellStyle.BackColor = Color.Silver
End If
Else
e.CellStyle.BackColor = Color.MistyRose
End If
End If

Catch ex As Exception
MessageBox.Show(ex.Message, "vb.net", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Paso 4:
*******

Private Sub DataGridView1_CellEndEdit(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Try
‘verifico que la columna seleccionad sea la de txtcant
If (e.ColumnIndex = 3) Then
‘capturamos el precio y la cantidad ingresada de la fila actual
Dim PrecioUnitario As Double = DataGridView1("txtPrecioXunidad", e.RowIndex).Value
Dim Cantidad As Integer = DataGridView1("txtCant", e.RowIndex).Value
‘Calculamos el importe a pagar
Dim ImportePagar As Double = PrecioUnitario * Cantidad
‘Asignamos el importe a pagar a la fila actual
DataGridView1("txtImportePagar", e.RowIndex).Value = ImportePagar

‘ahora tendremos que calcular el total a apagar y las cantidades a vender
‘le descuento filas porque una de ellas es la fila que dice // Importe Total Pagar S/.
Dim CantVentas As Integer = 0
Dim ImporteTotal As Double = 0
For rows As Integer = 0 To DataGridView1.Rows.Count – 2
CantVentas += DataGridView1("txtCant", rows).Value
ImporteTotal += DataGridView1("txtImportePagar", rows).Value
Next
‘ahora asignare los valores a la fila // Importe Total Pagar S/.
DataGridView1("txtCant", DataGridView1.Rows.Count – 1).Value = CantVentas
DataGridView1("txtImportePagar", DataGridView1.Rows.Count – 1).Value = ImporteTotal

End If
Catch ex As Exception
MessageBox.Show(ex.Message, "vb.net", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub

Imagen final
***********
Como podemos apreciar se ha calculado el importe a pagar y a la vez estamos asignando a la fila "Importe Total Pagar S/." , la cantidad total vendida, y el importe total a pagar.
color+filas+dtg.png

Anuncios

Informe

Publicado: 27 de marzo de 2015 en Actualidad

Crear informe utilizando el informe cristalino con procedimiento almacenado y vb.net

Descargar kget_list.png

Este post es la continuación de mi tutorial sobre el informe cristalino y vb.net. En mi post anterior me mostró la manera más simple y más fácil de crear un informe utilizando el informe cristalino pero esta vez te voy a mostrar de forma más eficiente de crear un informe.En este tutorial vamos a utilizar procedimiento almacenado como fuente de datos de nuestro informe. La ventaja de utilizar el procedimiento almacenado es que podemos hacer la programación de bases de datos en el servidor que nos permiten hacer consulta más compleja para resolver los requerimientos del negocio.

Nosotros Visual Studio 2010 , SLQ Server 2008 R2 expreso y Crystal Report para VS 2010para este tutorial. También tienes que descargar AdventureWorks2008R2_database hacer este tutorial. Después de descargar el archivo de base de datos, extraerlo a la que desea guardarlo.

Base de Datos de Colocación

Abrir estudio de gestión de servidor SLQ y conectarse a la instancia de servidor. Después de que ha entrado en el botón derecho del ratón -> Bases de datos -> adjuntar, aparecerá el Asistente de base de datos adjunta. Haga clic en el botón Agregar y localice el archivo AdventureWorks_Data.mdf haga clic en Aceptar botón para adjuntar la base de datos.

adjuntar la base de datos
Ver tamaño completo

Creación de procedimientos almacenados

En SQL Server Management Studio, seleccione la base de datos AdventureWorks y haga clic en el nuevo menú de consulta para abrir un nuevo editor de consultas, como se muestra a continuación.

crear consulta
Ver tamaño completo

El procedimiento almacenado que vamos a crear va a recuperar la orden de venta de la base Adventureworks en los parámetros de fecha. En el editor de consultas, crear un procedimiento almacenado y nombrar AW_Sales_Report y haga clic en el botón ejecutar.Consulte la siguiente consulta.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<Font> </ font> <font> <font>
Crear PROCEDIMIENTO [dbo]. [AW_Sales_Report] </ font> </ font> <font> </ font> <font> <font>
(</ Font> </ font> <font> </ font> <font> <font>
datetimedate_from, </ font> </ font> <font> </ font> <font> <font>
datetimedate_to </ font> </ font> <font> </ font> <font> <font>
) </ Font> </ font> <font> </ font> <font> <font>
Como </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
SELECT [SalesOrderID] </ font> </ font> <font> </ font> <font> <font>
[OrderDate] </ font> </ font> <font> </ font> <font> <font>
[SalesOrderNumber] </ font> </ font> <font> </ font> <font> <font>
[PurchaseOrderNumber] </ font> </ font> <font> </ font> <font> <font>
[SubTotal] </ font> </ font> <font> </ font> <font> <font>
[TaxAmt] </ font> </ font> <font> </ font> <font> <font>
[Freight] </ font> </ font> <font> </ font> <font> <font>
[TotalDue] </ font> </ font> <font> </ font> <font> <font>
, B. Nombre </ font> </ font> <font> </ font> <font> <font>
, Caso </ font> </ font> <font> </ font> <font> <font>
CUANDO meses ([OrderDate]) Entre 1 y 3 a Continuación 1 </ font> </ font> <font> </ font> <font> <font>
CUANDO meses ([OrderDate]) Entre 4 y 6 un Continuación, 2 </ font> </ font> <font> </ font> <font> <font>
CUANDO meses ([OrderDate]) Entre el 7 y el 9 de then 3 </ font> </ font> <font> </ font> <font> <font>
CUANDO meses ([OrderDate]) Entre 10 y 12 LUEGO 4 </ font> </ font> <font> </ font> <font> <font>
Otro 0 definitivo Como month_no </ font> </ font> <font> </ font> <font> <font>
, DATENAME (MES, FechaPedido) Como MONTH_NAME </ font> </ font> <font> </ font> <font> <font>
DE Sales.SalesOrderHeader Como una </ font> </ font> <font> </ font> <font> <font>
izquierda uniRSE sales.SalesTerritory Como b </ font> </ font> <font> </ font> <font> <font>
en a.TerritoryID = b.TerritoryID </ font> </ font> <font> </ font> <font> <font>
Donde OrderDate entredate_from ydate_to </ font> </ font> <font> </ font>
<Font> </ font>

Tal vez usted se está preguntando acerca del propósito de "caso cuando" en la consulta. El propósito de esto es conseguir trimestre de mes, por ejemplo 1-3 está dentro del 1 ertrimestre de un año, desde abril hasta junio es de 2 nd trimestre y así sucesivamente.Vamos a utilizar eso para crear la agrupación por trimestre en nuestro informe.

Creación de aplicaciones de escritorio

Crear una aplicación de Windows Forms VB.Net y el nombre de lo que quieras. Arrastrar y soltar los controles (etiquetas, recogedor fecha y hora, y botones) acaba de salir el nombre predeterminado y diseñar la interfaz gráfica de usuario, como se muestra a continuación.

forma

Crear Informe de ventas

Ir al explorador de soluciones, haga clic derecho en el proyecto -> Add -> nuevo elemento, aparecerá el cuadro de diálogo artículo. Seleccione informe a continuación, seleccione el informe cristalino como se muestra en la imagen de abajo.

crear informe

Haga clic en el botón Agregar y seleccione informe en blanco, vea la imagen de abajo.

informe en blanco

Haga clic en el diseñador de informes y haga clic en Crystal Reports -> Base de datos -> Base de datos de expertos. Por favor refiérase a la imagen de abajo.

Seleccione Crear nueva conexión -> OLE DB (ADO) – Proveedor> Microsoft OLE DB para SQL Server -> haga clic en el botón siguiente.

crear conexión
Ver tamaño completo

Configuración de la conexión a la base de datos en el diálogo de información de conexión.En mi caso estoy utilizando la autenticación de Windows para conectarse a la instancia del servidor de modo que he comprobado la casilla de verificación Integrado de Seguridad y no hay necesidad de proporcionar el nombre de usuario y contraseña. Si utiliza la autenticación de SQL Server debe desmarcar la casilla de verificación de seguridad e introduzca su nombre de usuario de base de datos y la contraseña. Haga clic en el botón siguiente para continuar con el experto en la base de datos.

info coonection
Ver tamaño completo

Si no conoce su nombre de instancia de servidor, usted lo puede encontrar en SQL Server Management Studio como se muestra a continuación.

instancia de servidor
Ver tamaño completo

Si su conexión establecida es exitosa parecerá que los objetos de base de datos en la base de datos de expertos. Haga clic en la instancia del servidor -> AdventureWorks -> dbo -> Procedimientos almacenados -> AW_Sales_Report -> haga clic en el botón>, como se muestra a continuación.

objeto db
Ver tamaño completo

Desactive la casilla de verificación Establecer nulos y de entrada el intervalo de fechas en el diálogo de parámetro a. Ajuste el rango de fechas de 01 de enero 2004 y el 31 de diciembre de 2004. Haga clic en el botón Aceptar.

parámetros de entrada
Ver tamaño completo

Antes de diseñar el informe debemos establecer el valor del tamaño de cuadrícula a 0.010 del informe. Ajuste de tamaño de la cuadrícula le ayudará a alinear un campo fácilmente.Para ajustar el tamaño de la cuadrícula, haga clic en el menú Crystal Reports -> Diseño -> Configuración predeterminada. Por favor refiérase a la imagen de abajo.

tamaño de la cuadrícula conjunto
Ver tamaño completo

Arrastre los campos de campo de explorador que declaren los datos y el diseño de informe, como se muestra a continuación.

diseño del informe
Ver tamaño completo

Ahora puede obtener una vista previa del informe para ver la información de ventas. Se dará cuenta de que algunos campos no tienen el formato correcto como identificación de la orden, orden de fecha, y los campos de importe.

vista previa del informe
Ver tamaño completo

Cambiar el nombre de los campos de cabecera y añadir un título reportar arrastrando un texto de la caja de herramientas reportar encabezado de la página y escriba Adventure Informe de ventas. Haga clic derecho en el cuadro de texto del título -> Formato de objeto -> ficha fuente, establecer la fuente en negrita y el tamaño a 14.

añadir un título
Ver tamaño completo

Arrastre dos cuadros de texto y el tipo de "De" en el primer cuadro de texto y "A" en el segundo cuadro de texto. Date_from Arrastrar y campos date_to parámetros de Explorador de campos a la página de la sección de encabezado y ajustarla a la fecha subtítulos.Seleccione tanto date_from y campos de parámetros date_to -> clic derecho -> formato varios objetos, por favor refiérase a la imagen de abajo.

fecha de formato
Ver tamaño completo

Seleccionar todos los títulos de cabecera y click derecho -> objetos de formato -> ficha fuente, establecer la fuente en negrita y desactive la casilla de verificación subrayado haga clic en Aceptar. Añadir línea debajo de los subtítulos de cabecera.

cabecera de formato
Ver tamaño completo

Formatear todos los campos en la sección Detalles. En primer lugar, haga clic derecho en el campo SalesOrderID -> Formato de objeto -> pestaña Number -> botón Personalizar -> desactive la casilla de verificación cero líder separador de miles y. Puede configurar todos los campos restantes haciendo la misma técnica.

detalles de formato
Ver tamaño completo

Añadir resumen total importe adeudado, haga clic derecho TotalDue Field -> Formato de objeto -> insertar -> Resumen -> haga clic en el botón ok.

añadir totales
Ver tamaño completo

Hemos terminado de crear el informe; intenta obtener una vista previa debería ver el resultado como la imagen de abajo

informe final de previsualización
Ver tamaño completo

Crear Report Viewer

  • Añadir una nueva forma y el nombre de ReportViewer.
  • Establezca su propiedad WindowState en maximizado.
  • Arrastre un informe cristal espectador desde la caja de herramientas de forma ReportViewer. Establezca la propiedad Muelle del espectador a llenar.
  • Abra el editor de código del informe del observador y el Crystal Report espacios de nombres junto con los parámetros que vamos a utilizar.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<Font> <font> Importaciones System.Windows.Forms </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.CrystalReports </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.CrystalReports.Engine </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions. Compartida </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.ReportAppServer </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.ReportSource </ font> </ font> <font> </ font> <font> <font>
Público Clase ReportViewer </ font> </ font> <font> </ font> <font> <font>
CrtableLogoninfos Dim Como Nuevo TableLogOnInfos </ font> </ font> <font> </ font> <font> <font>
Dim crtableLogoninfo Como Nuevo TableLogOnInfo </ font> </ font> <font> </ font> <font> <font>
Dim crConnectionInfo Como Nuevo ConnectionInfo () </ font> </ font> <font> </ font> <font> <font>
Dim crParameterDiscreteValue Como ParameterDiscreteValue </ font> </ font> <font> </ font> <font> <font>
CrParameterFieldDefinitions diablo ParameterFieldDefinitions Como </ font> </ font> <font> </ font> <font> <font>
Dim crParameterFieldDefinition Como ParameterFieldDefinition </ font> </ font> <font> </ font> <font> <font>
Dim crParameterFieldLocation Como ParameterFieldDefinition </ font> </ font> <font> </ font> <font> <font>
CrTables Dévil Como Tablas </ font> </ font> <font> </ font> <font> <font>
Dim CrTable Como Tabla </ font> </ font> <font> </ font> <font> <font>
CrParameterValues ​​diablo ParameterValues ​​Como </ font> </ font> <font> </ font> <font> <font>
CrDoc Dim Como Nuevo ReportDocument </ font> </ font> <font> </ font> <font> <font>
Dim crSubreport Como CrystalDecisions.CrystalReports.Engine.SubreportObject </ font> </ font> <font> </ font> <font> <font>
Dim crSubreportDocument Como Nuevo CrystalDecisions.CrystalReports.Engine.ReportDocument </ font> </ font> <font> </ font> <font> <font>
SDateFrom Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
SDateTo Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
SRepotTitle Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Private Sub ReportViewer_Load (remitente Como . Sistema de objetos , e Como System.EventArgs) Maneja MyBase .load </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Sub </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Class </ font> </ font> <font> </ font>

Creación de funciones Get_Report_File

Crear una función que devolverá el nombre del archivo de informe, el objetivo principal de esto es conseguir el archivo de informe de paso nombre del informe. Esta función es útil si tiene muchos informes en el sistema. Añadir el siguiente código al evento de carga ReportViewr, se muestra a continuación el código.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<Font> <font> Importaciones System.Windows.Forms </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.CrystalReports </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.CrystalReports.Engine </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions. Compartida </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.ReportAppServer </ font> </ font> <font> </ font> <font> <font>
Importaciones CrystalDecisions.ReportSource </ font> </ font> <font> </ font> <font> <font>
Público Clase ReportViewer </ font> </ font> <font> </ font> <font> <font>
CrtableLogoninfos Dim Como Nuevo TableLogOnInfos </ font> </ font> <font> </ font> <font> <font>
Dim crtableLogoninfo Como Nuevo TableLogOnInfo </ font> </ font> <font> </ font> <font> <font>
Dim crConnectionInfo Como Nuevo ConnectionInfo () </ font> </ font> <font> </ font> <font> <font>
Dim crParameterDiscreteValue Como ParameterDiscreteValue </ font> </ font> <font> </ font> <font> <font>
CrParameterFieldDefinitions diablo ParameterFieldDefinitions Como </ font> </ font> <font> </ font> <font> <font>
Dim crParameterFieldDefinition Como ParameterFieldDefinition </ font> </ font> <font> </ font> <font> <font>
Dim crParameterFieldLocation Como ParameterFieldDefinition </ font> </ font> <font> </ font> <font> <font>
CrTables Dévil Como Tablas </ font> </ font> <font> </ font> <font> <font>
Dim CrTable Como Tabla </ font> </ font> <font> </ font> <font> <font>
CrParameterValues ​​diablo ParameterValues ​​Como </ font> </ font> <font> </ font> <font> <font>
CrDoc Dim Como Nuevo ReportDocument </ font> </ font> <font> </ font> <font> <font>
Dim crSubreport Como CrystalDecisions.CrystalReports.Engine.SubreportObject </ font> </ font> <font> </ font> <font> <font>
Dim crSubreportDocument Como Nuevo CrystalDecisions.CrystalReports.Engine.ReportDocument </ font> </ font> <font> </ font> <font> <font>
SDateFrom Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
SDateTo Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
SRepotTitle Pública Como Cadena = Cadena .empty </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Private Sub ReportViewer_Load (remitente Como . Sistema de objetos , e Como System.EventArgs) Maneja MyBase .load </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Sub </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Función Get_Report_File () Como Cadena </ font> </ font> <font> </ font> <font> <font>
SReportFileName Dim Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
Seleccione Caso sRepotTitle </ font> </ font> <font> </ font> <font> <font>
Caso "Informe Anual de Ventas" </ font> </ font> <font> </ font> <font> <font>
sReportFileName = "AW_Sales_Annual.rpt" </ font> </ font> <font> </ font> <font> <font>
Caso "Informe trimestral de las Ventas" </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Select </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Volver sReportFileName </ font> </ font> <font> </ font> <font> <font>
Fin Función </ font> </ font> <font> </ font> <font> <font>
End Class </ font> </ font> <font> </ font>

Creación procedimiento Set_Report_Parameter

Crear un nuevo procedimiento justo debajo de la función Get_Report_File. La finalidad del mismo es asignar valor para cada parámetro de informe. Se puede establecer el valor de parámetro de informe cristal utilizando el índice que se pasará en él.

?

1
2
3
4
5
6
7
8
9
10
11
12
<Font> <font> Private Sub Set_Report_Parameter ( ByVal sParam Como Cadena , ByVal iItem Como Entero ) </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
crParameterDiscreteValue = Nuevo CrystalDecisions. Shared .ParameterDiscreteValue </ font> </ font> <font> </ font> <font> <font>
crParameterDiscreteValue.Value = sParam </ font> </ font> <font> </ font> <font> <font>
crParameterFieldDefinition = crParameterFieldDefinitions.Item (iItem) </ font> </ font> <font> </ font> <font> <font>
crParameterValues ​​= crParameterFieldDefinition.CurrentValues ​​</ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
crParameterValues.Clear () </ font> </ font> <font> </ font> <font> <font>
crParameterValues.Add (crParameterDiscreteValue) </ font> </ font> <font> </ font> <font> <font>
crParameterFieldDefinition.ApplyCurrentValues ​​(crParameterValues) </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Sub </ font> </ font> <font> </ font>

Aplicar código de formulario ReportViewer Evento Load

Aplicar el código de abajo para Form Load Evento de ReportViewer que cargará el informe.Me puse IntegratedSecurity true porque estoy utilizando la autenticación de Windows cuando logicas a mi instancia de SQL Server. Si utiliza la autenticación de SQL Server se debe configurar el nombre de la base de datos de usuario y contraseña y IntegratedSecurity establece en false.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<Font> <font> Dim strReportPath Como Cadena = Application.StartupPath & "\" & Get_Report_File () </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
crDoc.Load (strReportPath) </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
crParameterFieldDefinitions = crDoc.DataDefinition.ParameterFields </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Con crConnectionInfo </ font> </ font> <font> </ font> <font> <font>
.ServerName = "CHRIS-PC \ TIDUS" </ font> </ font> <font> </ font> <font> <font>
.DatabaseName = "AdventureWorks" </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
" Me puse un estoy yo Porque verdad IntegratedSecurity Usando la autentificación de de Windows </ font> </ font> <font> </ font> <font> <font>
'Cuando LOGICAS a mi Instancia de SQL Server. </ Font> <font> Si està utilizando SQL Server </ font> </ font> <font> </ font> <font> <font>
'Autenticación Dębe establecer el nombre de usuario de la base de Datos y la Contraseña </ font> </ font> <font> </ font> <font> <font>
'Y AJUSTE IntegratedSecurity false </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
'.UserID = "" </ Font> </ font> <font> </ font> <font> <font>
'.Password = "" </ Font> </ font> <font> </ font> <font> <font>
.IntegratedSecurity = Verdadero </ font> </ font> <font> </ font> <font> <font>
Terminar con </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
'Asigne la tabla Utilizada Por Nuestro report a la CrTables variables </ font> </ font> <font> </ font> <font> <font>
"Para establecer La Conexión tabla Cada párrafo </ font> </ font> <font> </ font> <font> <font>
CrTables = crDoc.Database.Tables </ font> </ font> <font> </ font> <font> <font>
Para Cada Me .CrTable En CrTables </ font> </ font> <font> </ font> <font> <font>
crtableLogoninfo = CrTable.LogOnInfo </ font> </ font> <font> </ font> <font> <font>
crtableLogoninfo.ConnectionInfo = crConnectionInfo </ font> </ font> <font> </ font> <font> <font>
CrTable.ApplyLogOnInfo (crtableLogoninfo) </ font> </ font> <font> </ font> <font> <font>
Siguiente </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
'Loop throug Cada PARÁMETRO de report y establezca su valor Por </ font> </ font> <font> </ font> <font> <font>
«Procedure Set_Report_Parameter Llamar </ font> </ font> <font> </ font> <font> <font>
Para Cada Me .crParameterFieldDefinition En crParameterFieldDefinitions </ font> </ font> <font> </ font> <font> <font>
Seleccione Caso crParameterFieldDefinition.Name </ font> </ font> <font> </ font> <font> <font>
Caso "date_from" </ font> </ font> <font> </ font> <font> <font>
Set_Report_Parameter (sDateFrom, 0) </ font> </ font> <font> </ font> <font> <font>
Caso "date_to" </ font> </ font> <font> </ font> <font> <font>
Set_Report_Parameter (sDateTo, 1) </ font> </ font> <font> </ font> <font> <font>
End Select </ font> </ font> <font> </ font> <font> <font>
Siguiente </ font> </ font> <font> </ font> <font> <font>
CrystalReportViewer1.ReportSource = crDoc </ font> </ font> <font> </ font>

Codificación del Form1

Haga doble clic en el Button1 (vista previa) para abrir su editor de código y aplicar el código como se muestra a continuación.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Font> <font> Public Class Form1 </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Private Sub Form1_Load (remitente Como . Sistema de objetos , e Como System.EventArgs) Maneja MyBase .load </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Sub </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Private Sub Button1_Click (Remitente Como System. Object , e Como System.EventArgs) Maneja Button1.Click </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Frm Dim Como Nuevo ReportViewer </ font> </ font> <font> </ font> <font> <font>
frm.sRepotTitle = "Informe Anual de Ventas" </ font> </ font> <font> </ font> <font> <font>
frm.sDateFrom = DateTimePicker1.Text </ font> </ font> <font> </ font> <font> <font>
frm.sDateTo = DateTimePicker2.Text </ font> </ font> <font> </ font> <font> <font>
frm.ShowDialog () </ font> </ font> <font> </ font> <font> <font>
frm = Nada </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
End Sub </ font> </ font> <font> </ font> <font> <font>
End Class </ font> </ font> <font> </ font>

Establecer App.Config

Configure App.Config para hacer el informe de cristal trabajo en .net 4. Consulte la configuración a continuación.

?

1
2
3
4
5
6
7
8
9
10
11
12
13
< fuente > < fuente > <? xml version = "1.0" ?> </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
< Configuración > </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
< Inicio > </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
< SupportedRuntime versión = "v4.0" sku = ". NETFramework, versión v4.0 =" /> </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
</ Arranque > </ fuente > </ fuente > < fuente > </ fuente >
< fuente > </ fuente > < fuente > < fuente >
<! - De Esto es Necesario Para Hacer El Trabajo de Crystal Report -> </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
< UseLegacyV2RuntimeActivationPolicy inicio = "true" > </ fuente > </ fuente > < fuente > </ fuente >
< fuente > </ fuente > < fuente > < fuente >
< SupportedRuntime versión = "v4.0" /> </ fuente > </ fuente > < fuente > </ fuente > < fuente > < fuente >
</ Arranque > </ fuente > </ fuente > < fuente > </ fuente >
< fuente > </ fuente > < fuente > < fuente >
</ Configuración > </ fuente > </ fuente > < fuente > </ fuente >

Seleccione el informe en el Explorador de soluciones y establecer su propiedad "Copiar a Directorio Ouput" a "Copiar si es más reciente". Por favor vea la imagen de abajo.

establecer copia si es más nuevo
Ver tamaño completo

Ya hemos terminado! Trate de ejecutar la aplicación y establecer el rango de fechas a continuación, haga clic en el botón de vista previa; debería ver el resultado como la imagen de abajo.

vista previa del informe final,
Ver tamaño completo

Ahora que ya sabe cómo hacer informes con Crystal Report y el procedimiento almacenado, sugeriría probar mi próximo post sobre el informe cristalino mediante la agrupación, fórmula, y el resumen .

Espero que este tutorial es útil para usted. Buena suerte!

27 March, 2015 01:01

Publicado: 27 de marzo de 2015 en Actualidad

Crear Anual y el Informe Trimestral de ventas con el informe de cristal y vb.net

Descargar kget_list.png

Este post es continuación de mi anterior tutorial sobre el informe cristalino y el procedimiento almacenado . Si usted no ha leído mi anterior tutorial sin embargo, yo sugiero que lea primero antes de empezar a hacer este tutorial. En este post vamos a crear el informe de ventas anuales y trimestrales utilizando el informe cristalino. Bueno vamos a empezar por la modificación de la aplicación que se creó a partir de tutorial anterior.

El doble de la AW_Sales_Annual.rpt y crear una copia de la misma por el ahorro como AW_Sales_Quarterly. Ahora tenemos dos tipos de informe del informe anual y trimestral.Para el informe anual de nuestro requisito es agrupar por trimestre utilizando month_nocampo que se basa en OrderDate campo. Por informe trimestral haremos que el grupo de base de mes en OrderDate . Bueno vamos a modificar el informe anual (AW_Sales_Annual.rpt) primero.

Inserción de Grupo

Haga doble clic en el AW_Sales_Annual.rpt para abrir el diseñador de informes. Ir al menú de Crystal Reports -> Insertar -> Grupo; en el diálogo de grupo, seleccione el campo month_no campo y haga clic en el botón ok.

grupo por mes
Ver tamaño completo

Se puede ver que el grupo ya está insertado en nuestro informe. Trate de obtener una vista previa del informe que acaba de probarlo; puede observar que el grupo se muestra en formato entero que representa trimestre; para mostrarlos por descripción crearemos una fórmula que hará que la descripción trimestre (por ejemplo, 1 st Quarter, 2 nd Quarter, 3 ertrimestre, 4 º trimestre).

vista previa del informe
Ver tamaño completo

Creación de Fórmula

Ir al Explorador de campos y campos clic fórmula correcta -> Nuevo -> nombre de ella trimestre como se muestra a continuación.

crear fórmula trimestre

Crear una secuencia de comandos en el editor de fórmula como se muestra en la imagen de abajo. Haga clic en Guardar y cerrar menú para guardar la fórmula.

editor de fórmulas
Ver tamaño completo

Elimine el Grupo # 1 nombre en encabezado de grupo y arrastre la fórmula trimestre de campo explorador a la sección de encabezado de grupo y establezca su fuente en negrita.

fórmula arrastre
Ver tamaño completo

Inserción Resumen Cantidad

Inserte resumen de Sub campo Total; haga clic derecho campo Sub Total -> Insertar -> Resumen y establecer la ubicación Resumen seleccionando "Grupo # 1: AW_Sales_Report; 1.month_no – A", hacer esto para las cantidades de descanso.

Resumen subtotal
Ver tamaño completo

Elimine el campo del nombre y ajustar el ancho de cada cantidad de resumen. También agregue una línea por encima de los campos de resumen.

organizar el diseño del informe
Ver tamaño completo

Arrastre un texto de la caja de herramientas a pie de grupo y haga doble clic en él; arrastretrimestre fórmula de campo explorador y lo puso dentro de la caja de texto; golpear espacio y escriba "Total". Obtenga una vista previa del informe para ver el resultado.

añadir suma subtítulo
Ver tamaño completo

Ahora hemos terminado de agrupar el informe por trimestre, pero también agradable para agrupar por ubicación, así que podemos conocer fácilmente la cantidad de ventas por ubicación dentro de un trimestre. Ir al menú de Crystal Reports -> Insertar -> Grupo -> seleccione Nombre de la lista desplegable y haga clic en el botón ok. Copiar todos los campos de resumen de la sección Pie de grupo 1 y pegarlos en Grupo Sección pie de página 2 ; arrastrar un texto desde la caja de herramientas de la Sección 2 Pie de grupo y haga doble clic en él; arrastrar Nombre de campo de campo de explorador y lo puso dentro de la caja de texto; golpear espacio y escriba "Total".

añadir grp 2
Ver tamaño completo

Revisar el título del informe de Adventure Works Informe de ventas de Adventure Works Informe de ventas anual . Hemos terminado la creación de informe de ventas anuales.Obtenga una vista previa ahora para ver el resultado.

prev informe anual
Ver tamaño completo

Crear Informe Trimestral

Haga doble clic en AW_Sales_Quarterly.rpt de solución para abrir el informe. Como he dicho antes que agrupará por mes y el lugar; para insertar un grupo, haga clic en el menú Crystal Reports -> Insertar -> Grupo; seleccione MONTH_NAME de la lista desplegable.

grupo nombre mont
Ver tamaño completo

Inserte un nuevo grupo de nuevo; haga clic en el menú Crystal Reports -> Insertar -> Grupo y seleccione el nombre de la lista desplegable. Retire el campo del nombre del informe y añadir Resumen cantidad para cada grupo como lo hicimos en el Informe Anual de Ventas.Añadir una línea por encima de la cantidad de resumen o la cantidad total; el informe debe ser similar a la imagen de abajo.

distribución trimestral
Ver tamaño completo

Arrastre un cuadro de texto de la caja de herramientas de Grupo sección de pie # 2 ; doble clic y arrastrar Grupo # 2 Nombre de campo explorador y lo puso dentro de la caja de texto; golpear espacio y escriba "Total". Arrastre otra caja de texto de la caja de herramientas de Grupo sección de pie # 1 ; doble clic y arrastrar Grupo # 1 Nombre de campo explorador y lo puso dentro de la caja de texto; golpear espacio y escriba "Total". Por último editar el título del informe desde y cambiarlo a adveture Obras informe trimestral de ventas .

suma grupo trimestral
Ver tamaño completo

Modificación de Form1

Haga doble clic en Form1 del explorador del proyecto para abrir el diseñador; añadir una etiqueta y cuadro combinado; establecer la propiedad texto de la etiqueta de Nombre del informe y establezca la propiedad DropDownStyle combobox a DropDownList .Seleccione el cuadro combinado -> haga clic en la flecha -> Editar elementos; añadir dos elementos de informe de ventas anuales y el informe trimestral de ventas.

modificar la forma
Ver tamaño completo

Haga doble clic en el botón de vista previa y revisar su código como se muestra a continuación.

?

1
2
3
4
5
6
7
8
9
10
11
<Font> <font> Función Get_Report_File () Como Cadena </ font> </ font> <font> </ font> <font> <font>
SReportFileName Dim Como Cadena = Cadena .empty </ font> </ font> <font> </ font> <font> <font>
Seleccione Caso sRepotTitle </ font> </ font> <font> </ font> <font> <font>
Caso "Informe Anual de Ventas" </ font> </ font> <font> </ font> <font> <font>
sReportFileName = "AW_Sales_Annual.rpt" </ font> </ font> <font> </ font> <font> <font>
Caso "Informe trimestral de las Ventas" </ font> </ font> <font> </ font> <font> <font>
sReportFileName = "AW_Sales_Quarterly.rpt" </ font> </ font> <font> </ font> <font> <font>
End Select </ font> </ font> <font> </ font>
<Font> </ font> <font> <font>
Volver sReportFileName </ font> </ font> <font> </ font> <font> <font>
Fin Función </ font> </ font>

Ir al explorador de soluciones y seleccione AW_Sales_Quarterly.rpt; Vaya a las propiedades viudas y establecer su copia al directorio de salida propiedad copiar si es más nuevo . Esto significa que la aplicación copiará nuestros informes al directorio de salida que es la carpeta de depuración. Establecimos que la propiedad porque la aplicación cargará los informes de directorio de salida (carpeta de depuración), como se muestra a continuación.

?

1 <Font> <font> Dim strReportPath Como Cadena = Application.StartupPath & "\" & Get_Report_File () </ font> </ font>

Ya hemos terminado! Ejecutar la aplicación y probar los informes si se está ejecutando correctamente. Ajuste el rango de fechas de 01/01/2003 a 03/31/2003 para el informe trimestral de conseguir el primer trimestre; para el informe anual fijado su fecha de 01/01/2033 a 12/31/2003. Si desea ver el código fuente completo de este proyecto haz clic en el enlace del archivo de descarga en la parte superior de este post.

Como SATTSoft.com en Facebook y Twitter.

Eso es todo! Tener un día de programación agradable! Buena suerte! =)

Cómo importar datos a SQL Server desde distintos orígenes de datos

Por Enrique Martínez Montejo «SoftJaén»
[MS MVP – VB]
Última revisión: 09/09/2004

Mediante las funciones OPENDATASOURCE y OPENROWSET de Transact-SQL, puede importar datos a una base de SQL Server desde distintos orígenes de datos OLE DB, como bien podría ser una base de datos Microsoft Access, un libro de trabajo de Microsoft Excel, o un simple archivo de texto delimitado, entre otros orígenes de datos que dispongan de su correspondiente controlador ISAM instalable.

Importar datos desde una base de datos Access no protegida
Si nuestra base de datos Access no se encuentra protegida con cualquiera de los dos niveles de protección (a nivel compartido o a nivel de usuario), podemos utilizar la función OPENROWSET para importar datos a una base de SQL Server. En este supuesto, es sumamente necesario que el usuario genérico Admin tenga acceso a los datos que se desean importar desde la base de datos de Access, ya que será dicho usuario el que ejecutará la importación:

descargar

Dim cnn AS ADODB.Connection Dim lngRegAfectados AS Long Dim SQL AS String ' Configuramos una conexión con la base de ' datos de SQL Server, utilizando la seguridad ' integrado de Windows NT ' SET cnn = New ADODB.Connection WITH cnn .CursorLocation = adUseClient .Provider = "SQLOLEDB" .ConnectionString = "Data Source=NOMBRE_INSTANCIA_SQL_SERVER;" & _ "Initial Catalog=Northwind;" & _ "Integrated Security=SSPI;" .Open End WITH ' Si la tabla ya existe en la base de datos de ' SQL Server, la eliminamos ' cnn.Execute _ "IF EXISTS(" & _ "SELECT * FROM INFORMATION_SCHEMA.TABLES " & _ "WHERE TABLE_NAME = 'TablaDeAccess')" & _ "DROP TABLE TablaDeAccess", , adCmdText ' Construimos la consulta SQL de creación de tabla para ' importar la tabla Clientes de la base de datos Neptuno.mdb ' SQL = "SELECT * INTO TablaDeAccess " & _ "FROM OPENROWSET(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'C:\Mis documentos\Neptuno.mdb';" & _ "'admin';''," & _ "'SELECT * FROM Clientes')" ' Ejecutamos la consulta ' cnn.Execute SQL, lngRegAfectados, adCmdText ' Comprobamos los registros afectados ' MsgBox "Registros afectados: " & lngRegAfectados ' Cerramos la conexión ' cnn.Close 

Importar datos desde una base de datos Access protegida a nivel compartido
Si la base de datos de Access sólo se encuentra protegida a nivel compartido (tiene establecida una contraseña), utilizaríamos la siguiente sintaxis de la función OPENROWSET:

descargar

' Construimos la consulta SQL de creación de tabla para ' importar la tabla Clientes de la base de datos Neptuno.mdb ' SQL = "SELECT * INTO TablaDeAccess " & _ "FROM OPENROWSET(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'MS Access;" & _ "DATABASE=C:\Mis documentos\Neptuno.mdb;" & _ "UID=Admin;" & _ "PWD=contraseña'," & _ "'SELECT * FROM Clientes')" 

Tenga en cuenta que el parámetro PWD se refiere exclusívamente a la contraseña de la base de datos, no a la contraseña del usuario Admin, que en el supuesto de disponer de alguna e indicarla en el citado parámetro, la importación no se podrá llevar a cabo, debido a que obtendrá el error: No es una contraseña válida.

Importar datos desde una base de datos Access protegida a nivel compartido y a nivel de usuario
En el supuesto de que la base de datos de Access se encuentra protegida mediante una contraseña (seguridad a nivel compartido), y a la vez necesitamos que sea otro usuario distinto al usuario génerico Admin el que acceda a los datos (seguridad a nivel de usuario), en lugar de utilizar la función OPENROWSET necesitará utilizar la función OPENDATASOURCE, dado que la primera no permite indicar los parámetros de conexión para especificar la contraseña de la base de datos, así como la ruta del archivo de información de grupos de trabajo, dado que a la fecha de publicación de éste artículo, no he encontrado la manera de poder especificar dichos parámetros mediante la función OPENROWSET:

descargar

' Construimos la consulta SQL de creación de tabla para ' importar la tabla Clientes de la base de datos Neptuno.mdb ' SQL = "SELECT * INTO TablaDeAccess " & _ "FROM OPENDATASOURCE(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'DATA Source=C:\Mis documentos\Neptuno.mdb;" & _ "Jet OLEDB:DATABASE Password=contraseña_base_datos;" & _ "Jet OLEDB:System DATABASE=C:\Windows\System32\System.mdw;" & _ "User Id=cuenta_usuario;" & _ "Password=contraseña_usuario')" & _ "... Clientes" 

Importar datos desde un libro de trabajo de Excel
Si desea importar a SQL Server datos de una hoja de cálculo de Excel, puede utilizar tanto la función OPENROWSET como la función OPENDATASOURCE, debiendo tener en cuenta que si desea especificar una hoja de cálculo, deberá de encerrar su nombre entre corchetes y añadir el signo $, como por ejemplo, [Hoja1$]. Si desea especificar un rango de celdas con nombre, especifique solamente el nombre del rango sin el signo del dólar.

Una vez que tenga establecida una conexión con la base de datos de SQL Server, puede ejecutar cualquiera de las siguientes consultas SQL:

descargar

'Importar un rango de celdas con nombre SQL = "SELECT * INTO TablaDeExcel " & _ "FROM OPENDATASOURCE(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'DATA Source=C:\Mis documentos\Libro1.xls;" & _ "Extended Properties=""Excel 8.0;HDR=No""')" & _ "...Clientes" 

Si utiliza la función OPENDATASOURCE, observe que deberá de encerrar entre dos pares de comillas dobles los parámetros del ISAM de Excel que desee especificar, cuestión ésta que no es necesario indicar si utiliza la función OPENROWSET, tal y como se muestra a continuación.

descargar

'Importar una hoja de cálculo completa SQL = "SELECT * INTO TablaDeExcel " & _ "FROM OPENROWSET(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'Excel 8.0;Database=C:\Mis documentos\Libro1.xls;HDR=Yes'," & _ "'SELECT * FROM [Hoja1$]')" 

Importar datos desde un archivo de texto delimitado
Por último, mostraré la forma de importar los datos contenidos en un archivo de texto a nuestra base de datos de SQL Server, trabajo éste que podrá realizarlo mediante las dos funciones T-SQL comentadas. Indicar únicamente que sólo deberá de especificar la ruta de la carpeta donde se encuentre el archivo de texto, escribiendo el nombre del archivo y su extensión en la cláusula FROM de la consulta SQL

descargar

'Importar mediante la función OPENROWSET SQL = "SELECT * INTO TablaDeTexto " & _ "FROM OPENROWSET(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'TEXT;Database=C:\Mis documentos;HDR=No'," & _ "'SELECT * FROM Clientes#txt')" 'Importar mediante la función OPENDATASOURCE SQL = "SELECT * INTO TablaDeTexto " & _ "FROM OPENDATASOURCE(" & _ "'Microsoft.Jet.OLEDB.4.0'," & _ "'DATA Source=C:\Mis documentos;" & _ "Extended Properties=""TEXT;HDR=Yes""')" & _ "...Clientes#txt" 

Tlf: 0412 3759126