Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Los moderadores, MVP y administradores podrán seguir editando, respondiendo o creando nuevos mensajes

Con idea de que puedan ayudar a responder e ir cerrando mensajes ;-)

  Foro: VB6.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 36195 - Problemas con un data report
IDAsuntoFechaNick 
36195 Problemas con un data report04/12/07 15:25Nadima   
Hola, quisiera que me ayudaran soy nueva en esto de generar reportes con visual. pero investigando puede lograr crear el datareport y conectarlo con la base de datos con un DataEnvironment. Este es mi codigo

Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\Sistema Correspondencia\bd_correspondencia.mdb;Persist Security Info=False"
Set rs = cn.Execute("Select n_deposito, fecha_deposito, id_banco, monto from correspondencias_entrada")
Set ReporteTimbresGobernacion.DataSource = rs
end sub

Private Sub Command1_Click()
Load ReporteTimbresGobernacion
ReporteTimbresGobernacion.Show vbModal
End Sub

Ya hice el reporte y los RptTexbox los enlacé con sus datafield (campos de la tabla), pero ahora cuando ejecuto el reporte me da un error "argumentos incorrectos,fuera del intervalo permitido o en conflictos con otros" y no se por qué... Por favor si esta en sus manos ayudarme se los agradecería.

Hice una conección con la base de datos de dos formas. En el resto de la aplicación fue con
recordset pero con lo de reporte utilizo es ADODB. no se si eso trae inconveniente. Gracias problema.....
IDAsuntoFechaNick 
36226 Re: Problemas con un data report (Resp: 36195)05/12/07 05:33evegalle   
Bueno, en primera, no tomes a mal algunas correcciones que pueda hacerte, ok? Bien, te aclaro que siempre estas utilizando recordset, es decir, rs es una instancia de la clase recordset y a la postre "contenedor" de los datos que recupera la sentencia SQL y que despues asignas al origen de datos del Datareport. El mensaje efectivamente, debe ser porque utilizas diferentes formas de conexion, aunque creo que no es necesario todo el codigo que veo, ya que el dataenvironment justamente fue implementado en VB6 (sin mucho éxito creo) con la finalidad de hacer todo de una forma visual, generando la sentencia SQL en el mismo procedimiento de configuracion del entorno de datos (osea DATAENVIRONMENT). No, no te estoy gritando rie
Pero veamos. Hice algo similar con la base de datos ejemplo NWind, veo en tu consulta que tu reporte es un listado, asi que no hay mucha complicacion. Veamos, ojo, hasta que no te indique lo contrario, todo el proceso siguiente se realiza en el dataenvironment:
1. Agregue un Dataenvironment al proyecto
2. Al lado derecho, se ve el "arbol" del dataenvironment1, hazle clic derecho, Propiedades
3. Selecciona el proveedor de base de datos, si es Access: MICROSOFT JET 4.0 OLEDB
4. Pulsa siguiente, ahora pulsa el boton de los ... puntitos. Selecciona tu base de datos
5. Puedes probar conexion si lo deseas. Satisfactorio? OK!!!
6. Nuevamente, clic derecho sobre Connection 1 para Aagregar comando
7. Sobre el objeto command1 clic derecho, propiedades.
8. En la ventana vamos a configurar el origen de datos para obtener el conjunto de registros que llenara el recordset a traves del comando de seleccion, o sea Command1, selecciona Instrucción SQL
9. Pulsa Generador SQL
10. En la pequeña ventana VISTADATOS, despliega Connection1, encontraras Tablas, y alli selecciona la tabla correspondiente. Por ejemplo, Clientes (de NWind.mdb), luego arrastra la miniatura hacia la parte gris de la ventana del generador de SQL
11. En la "miniatura" que ha aparecido, cada campo tiene un check, marca los campos que quieres en tu reporte. Luego cierra la ventana DEL GENERADOR, confirma.
12. Regresamos al Dataenvironment, si te fijas en el objeto Command1, ahora tiene un [+] a la izquierda, pulsa el [+], encontraras los campos que marcamos.
13. Hasta ahi, ya tenemos la cadena de conexion y el conjunto de registros (recordset)
14. Agrega un diseñador de reportes (DataReport), acomoda ambas ventanas como para poder hacer DRAG & DROP a cada campo en el objeto command1 del dataenvironment hacia la seccion detalle del datareport.
15. Ahora, selecciona CORRECTAMENTE el datareport (en su barra de titulo de preferencia), y busca la propiedad DataSource para configurar el nombre del objeto DATAENVIRONMENT1. Luego en la propiedad DATAMEMBER para configurar el nombre del objeto COMMAND1, que es el que proporciona finalmente los datos al reporte.
16. Agrega un boton a tu formulario, digita el cógido siguiente:
DataReport1.Show
17. LISTO, uff

Espero haberte ayudado, suerte en tus proyectos. Bye... ah! como hago siempre: saludos desde Arequipa, la ciudad blanca del Perú.

Alien .Net



11.
[Editado: evegalle, 05/12/2007 05:35:38]


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
36227 Re: Problemas con un data report (Resp: 36226)05/12/07 05:54evegalle   
Ah! pero me olvidaba, tambien se puede hacer mediante codigo, claro esta, si haces todo el proceso, tal como te lo explique y funciona, puedes hacerlo tal como intentas, pero con las siguientes modificaciones. Nota: el ejemplo sigue con la BD nwind, ahora con la tabla empleados. Primero, el codigo completo quedaria asi:

Option Explicit
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub Command1_Click()
DataReport2.Show
End Sub

Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Archivos de programa\Microsoft Visual Studio\VB98\nwind.mdb;Persist Security Info=False"
Set rs = cn.Execute("Select idempleado, apellidos, nombre from empleados")
Set DataReport2.DataSource = rs
End Sub

Como ves, esta muy parecido a tu codigo, pero veamos ahora los cambios en algunas propiedades en el DataReport, justamente la otra probable razon del "conflicto".
Selecciona el DataReport, que ya tiene los campos, etc. y verifica las siguientes propiedades:
DATAREPORT PROPIEDAD DATASOURCE y DATAMEMBER DEJALOS VACIOS
CADA CAMPO INCLUIDO: PROPIEDAD DATAFIELD debe tener el nombre exacto del campo.
(cada rptTextBox) PROPIEDAD DATAMEMBER de cada campo debe quedar en blanco.

Y listo. Ya debe funcionar.

Tanto rollo???? Bueno, creo que me emocioné, jajaja. Espero te sirva, saludos desde Arequipa, Peru. Bye

Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
36236 Re: Problemas con un data report (Resp: 36226)05/12/07 15:07Nadima   
Muchas Gracias por tu ayuda, ya logré hacer q me muestre el reporte. Ahora mi problema es que quiero mostrar en el reporte informacion de dos tablas y no se como hacerlo. Ya agregué en el DataEnvironment1 otro comando con la otra tabla y la configuré y cuando le doy al (+) del segundo comando me muestra los campos de esa tabla y despues le agrego es en el reporte en el rptTextbox que quiero el segundo comando con datafield en el campo que quiero y me da error. te muestro el codigo:

Private Sub Boton_Click()
On Error GoTo trap
If DataEnvironment1.rsCommand1.State = adStateOpen Then
DataEnvironment1.rsCommand1.Close
End If
If DataEnvironment1.rsCommand2.State = adStateOpen Then
DataEnvironment1.rsCommand2.Close
End If
Load ReporteTimbresGobernacion
ReporteTimbresGobernacion.Show
ReporteTimbresGobernacion.LeftMargin = 0
ReporteTimbresGobernacion.RightMargin = 0
trap:
Exit Sub
End Sub
Private Sub Form_Load()
modulo
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Archivos de programa\Microsoft Visual Studio\VB98\Sistema Correspondencia\bd_correspondencia.mdb;Persist Security Info=False"
End Sub

Private Sub Form_Activate()
query ("Select a.n_deposito, a.fecha_deposito, b.desc_banco,a.monto FROM correspondencias_entrada a, bancos b WHERE a.id_banco= b.id_banco")
End Sub

Private Sub query(sql1 As String)
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sql1, cn, adOpenForwardOnly, adLockReadOnly
End Sub

El error me da es aqui "rs.Open sql1, cn, adOpenForwardOnly, adLockReadOnly" y me dice que No se han especificado algunos parametros requeidos.

Gracias por tus consejos anteriores. Gracias de nuevo!!!


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
36255 Re: Problemas con un data report (Resp: 36226)06/12/07 01:21evegalle   
Hola nuevamente, quiza el problema este en tu procedimiento query, parece que la cadena de conexion esta bien, ademas es la misma que has usado para tu reporte anterior y ya funcionó ;D , aunque te pido que me indiques cuál de las dos formas has aplicado, yo supongo la segunda, o sea tu codigo.
Bueno, veamos...

Private Sub query(sql1 As String)
Set rs = New ADODB.Recordset
'Ahora, separemos un poco el codigo, "divide y reinarás dice el refrán"
'Indicamos el tipo de cursor
rs.CursorType = adOpenForwardOnly
'Indicamos el tipo de bloqueo
rs.LockType = adLockReadOnly
'La ubicacion del cursor por defecto es del lado de cliente, pero
rs.CursorLocation = adUseClient
'Es necesario indiques cual es la conexion activa (asi sea una)
rs.ActiveConnection = cn
'Asignamos al recordset el origen de datos
rs.Source = sql1
'Abrimos
rs.Open
'Para comprobar, le agregué a mi formulario un datagrid (nombre dg1)
Set dg1.DataSource = rs
'y... FUNCIONO!
End Sub

Bien, espero haberte sido útil. Me comentas como te fué? Gracias.
Ah! Y saludos desde la bella Ciudad Blanca, Arequipa.

Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 27/07/2026 10:08:22 GMT