CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Trabajando Con Datatable Y Datagridview

(1/1)

Cajami:
Hola que tal, les explico mi problema: he hecho 3 consultas a mi bd para poder obtener el resultado esperado, 2 de esas consultas he trabajado con INNER JOIN, cada consulta lo he puesto en un DataTable, en mi tercer DataTable he agregado ademas de la consulta (que me trae 3 columnas) otras columnas pero esas columnas las agredo de acuerdo a otro consulta (ia que utilizo 3), logicamente trabajo con bucles cada repetida que da agrega una columna a mi tercer DataTable, para ver si todo me salió correcto lo agregué a mi DataGridView:


--- Código: Text ---Me.DataGridView.DataSource = DataTable3 
pero ahora, lo que necesito y hasta la fecha no he podido no he encontrado una solucion es que necesito esa información que está en mi DataTAble3 o en mi DataGridView que es la misma info imprimirla, io para hacer mis reportes en CR (que es el único que se  :D), creo un DataSet tipado con determinados campos y los agrego a mi reporte y a través de código hago el mismo SELET que tiene el DataSet tipado para traer las mismas columnas, asi:


--- Código: Text ---Try            Dim Adaptador_Todos As New SqlDataAdapter(Cadena, My.Settings.Sistema_NotasConnectionString)            Dim Data As New DataSet            Adaptador_Todos.Fill(Data, "tablita")            Dim CR As New Registros            CR.SetDataSource(Data.Tables(0))            Reporte_Registros.CrystalReportViewer1.ReportSource = CR        Catch ex As Exception            MessageBox.Show(ex.Message, Titulo, MessageBoxButtons.OK, MessageBoxIcon.Error)        End Try 
claro está que el SELECT del DataSet tipado no contiene WHERE pero aqui en codigo si lo coloco, aunque no se ve la consulta la variable Cadena lleva toda la consulta, pero ahora con este DataTable que tengo como lo imprimo su info ia que todo eso lo hago mediante código???? espero que me haya explicado bien, nos vemos  :hola:

Cajami:
hola, buscando por el inter, me encotré con crear reportes pero en Excel aqui está el Link

y ia he podido mandar mis datos que tengo en mi DataTable a Excel pero ahora acomodar todo darle formato a casi todo, que la hora esté horizontal y no vertical que por defecto es asi, centrar los textos, si por ejemplo en una celdasu valor es = o mayor que 10.50 que su letra sea de color azul y si es menos que sea de color rojo, que sea de minimo 2 dijitos, quiere decir que si hay un 8 tiene que aparecer 08, y otros formatos que se ven en el archivo adjunto, le estoy buscando y no encuentro como puedo hacer eso, alguien sabe?????

alli les dejo dos arhivos de Excel uno como lo manda VB2005 a Excel y el otro es como deberia quedar, muchas gracias de antemano

Widark:
Que Tal Cajami!

Puedes crear un procedimiento publico, con estos valores para escribir en excel
--- Código: Text ---Sub EscribeExcel(ByVal tPosX As String, ByVal tPosY As String, ByVal tUnion As Boolean, ByVal tTamaño As Byte, ByVal tAlingHor As Integer, ByVal tAlingVer As Integer, _                     ByVal tNegrita As Boolean, ByVal tFormato As String, ByVal tTexto As Object, ByVal oLibro As Object)         With oLibro            .Range(tPosX, tPosY).Merge(tUnion)            .Range(tPosX, tPosY).Font.Size = tTamaño            .Range(tPosX, tPosY).HorizontalAlignment = tAlingHor            .Range(tPosX, tPosY).VerticalAlignment = tAlingVer            .Range(tPosX, tPosY).Font.Name = "Arial"            .Range(tPosX, tPosY).Font.Bold = tNegrita            .Range(tPosX, tPosY).Value = tTexto            .Range(tPosX, tPosY).NumberFormat = tFormato '"#,##0"        End With     End Sub y para llamar a excel, así:
--- Código: Text --- Dim oExcel As New Excel.Application        Dim oLibro As Workbook = oExcel.Workbooks.Add()        Dim oHoja As Worksheet               oHoja = oLibro.Sheets(1)        EscribeExcel("A1", "G1", True, 9, -4108, -4108, True, "", "Titulo", oHoja)  y para configurar la pagina, así:
--- Código: Text ---With oExcel.Worksheets(1).PageSetup                .PrintTitleRows = "$" & iCeldaExcel.ToString & ":$" & iCeldaExcel.ToString & ""                .Orientation = 2 ' Horizontal                .PaperSize = 5 ' Oficio                .LeftMargin = oExcel.InchesToPoints(0.196850393700787) '(0.31496062992126) '0.8 mil                .RightMargin = oExcel.InchesToPoints(0.196850393700787) ' 0.5 mil                .TopMargin = oExcel.InchesToPoints(0.393700787401575) '(0.47244094488189)  ' 1.2                .BottomMargin = oExcel.InchesToPoints(0.393700787401575) '1 cent                .HeaderMargin = oExcel.InchesToPoints(0)                .FooterMargin = oExcel.InchesToPoints(0)                .Zoom = 51            End With solo lo adaptas a lo que necesitas y listo. Espero te sea de utilidad.

Cajami:
gracias por responderme pensé que nunca me ivan a responder y toy desesperado  :P, lo probaré y te comento nos vemos

Navegación

[0] Índice de Mensajes

Ir a la versión completa