Visual Basic - DATAREPORT SIN DUPLICADO VB6

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 13 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por JOSE (3 intervenciones) el 09/07/2020 22:00:40
hola a todos, prácticamente no se nada de programación pero viendo tutoriales he podido realizar una pequeña aplicación en vb6 muy básica. pero llegue a la parte del reporte y quisiera si me pueden ayudar en lo siguiente:

tengo un datagrid conectado con un adodc y este a la base de datos acces y a la vez un datareport(este ultimo no lo puedo imprimir en horizontal, pero este no es el problema)

al momento de dar en el botón imprimir el código hace lo siguiente:

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
41
42
43
''conecta la base de datos y carga el datagrid con una selección de rango de fecha
    Adodc1.CursorLocation = adUseClient
    Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & App.Path & "\Basedatoscontrol.mdb"
    Adodc1.RecordSource = ("select * from CONTROLRQ where FECHAEMI >= #" & Fd & "# and FECHAEMI <= #" & Fh & "#")
    Adodc1.Refresh
    Set DataGrid1.DataSource = Adodc1
    DataGrid1.Refresh
 
''aca hace un filtro por el contenido del combo1
If Check1.Value = 0 Then
    Adodc1.Recordset.Filter = "ESTADOGENERAL" & " LIKE '*" + Combo1.Text + "*'"
    Set DataGrid1.DataSource = Adodc1.Recordset
    DataGrid1.Refresh
Else
    Adodc1.Recordset.Filter = ""
    Set DataGrid1.DataSource = Adodc1.Recordset
    DataGrid1.Refresh
End If
 
' PASA DATOS A DATAREPORT
        ''Titulo del reporte
        With ReporteEstado.Sections("Sección4").Controls
        .Item("Etiqueta2").Caption = UCase(Me.Caption)
        .Item("Etiqueta8").Caption = TipoReMostrar
        .Item("Etiqueta10").Caption = DTPicker1.Value
        .Item("Etiqueta11").Caption = DTPicker2.Value
        .Item("Etiqueta12").Caption = "USUARIO"
        End With
 
        ''Detalle del Reporte
        Set ReporteEstado.DataSource = Adodc1.Recordset
        With ReporteEstado.Sections("Sección1").Controls
        .Item("texto1").DataField = "ESTADO"
        .Item("texto3").DataField = "ORDENC"
        .Item("texto4").DataField = "FECHAEMI"
        .Item("texto5").DataField = "MONTORQ"
        .Item("texto6").DataField = "PSINIGV"
        .Item("texto8").DataField = "AREA"
        .Item("texto9").DataField = "EQUIPO"
        .Item("texto10").DataField = "PROYECTO"
        .Item("texto11").DataField = "ACTIVIDAD"
        .Item("texto12").DataField = "DESCRIPCION"
        End With
hasta aca todo bien.
aca, lo que quiero que cuando pase estos datos, aparezcan en la parte de arriba del detalle del reporte, cuando el RQ tiene una sola fila esta bien, pero cuando tiene mas de una no quiero que se repita el numero del RQ y MONEDA la siguiente fila.(adjunto imagen de reporte)
1
2
3
4
ReporteEstado.Sections("Sección1").Controls.Item("texto2").DataField = "RQ"
ReporteEstado.Sections("Sección1").Controls.Item("texto7").DataField = "MONEDA"
 
ReporteEstado.Show

espero sea posible lo que quiero y me puedan ayudar. gracias de antemano
datarepor1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por Andres Leonardo (1798 intervenciones) el 10/07/2020 14:54:09
Bienvenido Jose

Y bueno algo sabes por que veo que ya tienes un programa funcional, bueno a lo que vinimos....

El tema mas parece de la instrucción sql que de VB, creo que podrías cambar ese select * por un select distinct campos

Prueba asi...

1
Adodc1.RecordSource = ("select distinct (RQ), campo2, campo3, campo4 from  CONTROLRQ where FECHAEMI >= #" & Fd & "# and FECHAEMI <= #" & Fh & "#")

Donde tu campo2 3 y 4 son los nombres de todos tus campos de la tabla te tocara ponerlos asi

Nos cuentas como te fue
**Pd nunca conecto con ese tipo yo utilizo odbc si deseas podríamos cambiarlo a esto pero seria algunos cambios en tu aplicación

Saludos
Andres

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 13 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por JOSE (3 intervenciones) el 10/07/2020 17:24:43
Andres, muchas gracias por tu tiempo, pues algo he aprendido con los tutorialesy me gustaría aprender mucho mas.
quiero agredecer nuevamente tu tiempo prestado, la respuesta que me diste no es exactamente lo que buscaba, pero me ayuda mucho para optimizar la carga de datos a los datagrid, ya que tengo base de datos con muchos campos, los cuales cargaba todos al datagrid y luego los ocultaba.
con respecto a lo que consulte antes, he decidido dejarlo tan cual me sale el reporte en la imagen anterior ya que no son muchas las veces que un RQ tiene mas de una fila(y al maximo de filas que llega un RQ son 3).

aprovechando quisiera consultarte 2 cosas mas:

1.- Hay forma de bloquear las columnas de los datagrid que no sea una por una, yo lo hago asi(DataGrid1.Columns("RUC").Locked = True), para que no se pueda escribir sobre ellas, pero es tedioso ya que son muchas columnas en algunos datagrid.

2.- Como hago para ajustar el tamaño de los formularios a la resolución de la pantalla, estuve programando y de casualidad aumente el tamaño de mi pantalla y el formulario era mucho mas grande, no se veía completo yo lo solucione. modificando el tamaño de los formulrios de tal manera que cuando cambie de resolución no exceda el tamaño del monitor.

si me puedes ayudar con las dos seria mejor, de lo contrario prioridad la primera.
De antemano agradezco la ayuda brindada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por Andres Leonardo (1798 intervenciones) el 11/07/2020 00:12:24
No he usado ese control... pero intenta ais ...

crea un procedimineot que llamaras despues de llenar el grid.

lo llamas asi

bloquearGrid(me.datagrid1)


1
2
3
4
5
bloquearGrid(grid as datagrid)
    for  i=0  to grid .Columns.count
            grid .Columns(i).Locked = True
    next i
end sub

esto depende de que versiond e vb estas usando

En vb 6.0 no es tan facil como instrucciones, poir ue no solo es el formulario si no todos los componentes aqui no te pdoria

espero este enlace te ayude

https://steakrecords.com/es/822361-how-can-i-resize-my-vb6-program-so-that-it-automatically-fits-in-any-screen-resolution-vb6.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 13 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por JOSE (3 intervenciones) el 11/07/2020 03:45:35
Andres muchas gracias por su valioso apoyo

Lo de bloquear las columnas del datagrid lo solucione asi:

1
2
3
For i = 0 To DataGrid1.Columns.Count - 1
    DataGrid1.Columns(i).Locked = True
Next i

gracias de nuevo por tu tiempo y tu disponibilidad para ayudar.
ahi vamos aprendiendo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

DATAREPORT SIN DUPLICADO VB6

Publicado por Andres Leonardo (1798 intervenciones) el 12/07/2020 15:30:05
correcto mi error, si comienza en 0 es al count-1

De nada me alegro que te haya funcionado

SAludos desde Ecuador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar