Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Visual Basic 6 - Crystal XI... Novato !!!

Estas en el tema de Visual Basic 6 - Crystal XI... Novato !!! en el foro de Visual Basic clásico en Foros del Web. Buenas tardes estimados foristas : Mis conocimientos para la conexión entre visual basic 6 y crystal report es "NULA"... Tengo un sistema muy pequeño y ...
  #1 (permalink)  
Antiguo 29/01/2010, 12:17
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 15 años, 2 meses
Puntos: 1
Exclamación Visual Basic 6 - Crystal XI... Novato !!!

Buenas tardes estimados foristas :

Mis conocimientos para la conexión entre visual basic 6 y crystal report es "NULA"... Tengo un sistema muy pequeño y necesito hacer unos reportes pero con datos suministrados por el usuario.

Por ejemplo :

Quisiera obtener un reporte de cuantos obreros tengo por empresa. Entonces yo vengo, coloco el código 1234 en mi text box y eso lo debe pasar como parámetro al crystal report para hacer la búsqueda en la base de datos.

No se si me expliqué bien pero es que nunca he realizado un reporte.

Les repito : Desarrollo en visual basic 6 con base de datos en mysql y crystal reports como reporteador !

Saludos.

Carlos.
  #2 (permalink)  
Antiguo 01/02/2010, 11:47
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Hummm... en realidad NO desarrollas en VB+MySQL+CR, sino que QUIERES hacerlo.

1- Create tu origen ODBC. no olvides agrgarle la base de datos.
2- Abre tu CR, crea un informe standar, realiza la conexion mediante OLE DB (ADO), y elige "Microsoft OLE DB Provider for ODBC Drivers", luego coloca el cursor sobre el nombre del ODBC que creaste para MySQL y presiona "Finalizar"
3- Ahora ya te aparecera el arbol de la BD para que construyas tu reporte... construyelo
4- Antes de finalizar te saldra un mensaje "no se pudo encontrar la tabla xxx, desea eliminarla", coloca NO. Listo ya tienes tu reporte. Guardalo.
5- Abre tu proyecto VB. Activa el asistente de CR y elige "a partir de un reporte existente" y elige el reporte que construiste.
6- ahora en el modulo del formulario que contiene el reporte coloca algo asi:

Option Explicit
Private Report As Object

Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth

End Sub

Private Sub Form_Load()

Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String

Set cnn = New ADODB.Connection

Set cnn = New ADODB.Connection
cnn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=11.111.111.11;" _
& "DATABASE=NOMBREBASEDEDATOS;" _
& "UID=miusuario;PWD=miclave;PORT=3306;OPTION=16 837"

cnn.Open

WindowState = 0


Set Report = New CrystalReport1
Set rs = New ADODB.Recordset

strSQL = "SELECT * FROM Actividades WHERE Area='" & textbox1 & "'"

Set rs = New ADODB.Recordset

With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open strSQL, cnn, , , adCmdText
End With

strSQL = "SELECT * FROM Lugares"


With Report
.Database.SetDataSource rs
.PaperOrientation = 1
.PaperSize = 9
.DiscardSavedData
End With

With CRViewer1
.EnableDrilldown = False
.DisplayGroupTree = False
.DisplayTabs = False
.EnableRefreshButton = True
.ReportSource = Report
.ViewReport
.Zoom (2)
End With

WindowState = 2



End Sub
  #3 (permalink)  
Antiguo 04/02/2010, 12:47
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

amigo excelente post !!! pero ahora te pregunto... ¿Como estás pasandole el parámetro al crystal report ???

saludos.

carlos.
  #4 (permalink)  
Antiguo 04/02/2010, 14:02
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Ah cierto. ALgunos datos que quedaron en el aire. Voy a suponer que cuando armaste tu reporte en CR, usaste la tabla "Actividades", cuyos campos son: Actividad, Fecha, Area.

Entonces, suponiendo que yo quiero fitrar por area, en el formulario desde donde llamo al otro formulario que contiene el reporte coloco algo asi:

strarea$ = Textbox1

Suponiendo que en el Textbox1 colocaste el nombre del area (OJO, la variable debe estar declarada como publica en un modulo "normal")

Entonces como el formulario del reporte tiene todo en el evento Load, cambia estalinea:

strSQL = "SELECT * FROM Actividades WHERE Area='" & textbox1 & "'"

por esta:

strSQL = "SELECT * FROM Actividades WHERE Area='" & strarea$ & "'"

y listo, en el reporte solo se verian los registros correspondentes al area ingresada en el textbox del formulario anterior

Abraham
  #5 (permalink)  
Antiguo 05/02/2010, 09:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Estimado yo segui tus instrucciones y me manda un error, me dice que no encuentra la tabla, podrias explicar como crear el report, por que cree la conexion y me muestra los datos en el reporte cuando lo construyo:

Dim Consulta As ADODB.Recordset
Dim strSQL As String

Set Conexion = New ADODB.Connection

Set Conexion = New ADODB.Connection
Conexion.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=190.208.32.XXX;" _
& "DATABASE=asistencia;" _
& "UID=XXXp;PWD=XXXXX;PORT=3306;OPTION=16 837"

Conexion.Open

WindowState = 0


Set Report = New CrystalReport1
Set Consulta = New ADODB.Recordset

strSQL = "SELECT * from usuarios "

Set Consulta = New ADODB.Recordset

With Consulta
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open strSQL, Conexion, , , adCmdText
End With


With Report
.Database.SetDataSource Consulta
.PaperOrientation = 1
.PaperSize = 9
.DiscardSavedData
End With

With CRViewer1
.EnableDrillDown = False
.DisplayGroupTree = False
.DisplayTabs = False
.EnableRefreshButton = True
.ReportSource = Report
.ViewReport
.Zoom (2)
End With

WindowState = 2


End Sub
  #6 (permalink)  
Antiguo 05/02/2010, 11:46
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Es necesario que utilicen crystal Reports?

Porque pueden utilizar los data reports que vienen incluido con vb6, son fáciles de manejar y muy versátiles.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #7 (permalink)  
Antiguo 05/02/2010, 13:35
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

- Estas seguro que existe la tabla "usuario"??
- Ese codigo esta en el modulo del formulario que contiene el reporte (que se supone agregaste con el asistente)??
- Estas seguro que existe el objeto "crystalreport1" al que estas haciendo referecnia? Verifica el nombre en el arbol del proyecto
- Finalmente, entiendo que quieras usar CR?? Realmente toma en cuenta la sugerencia hecha por "fradve"

Abraham
  #8 (permalink)  
Antiguo 05/02/2010, 13:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Cita:
Iniciado por abrahamvj Ver Mensaje
- Estas seguro que existe la tabla "usuario"??
- Ese codigo esta en el modulo del formulario que contiene el reporte (que se supone agregaste con el asistente)??
- Estas seguro que existe el objeto "crystalreport1" al que estas haciendo referecnia? Verifica el nombre en el arbol del proyecto
- Finalmente, entiendo que quieras usar CR?? Realmente toma en cuenta la sugerencia hecha por "fradve"

Abraham
1.- Si exsite la tabla

2.- El objeto esta creado

3.- Interesante opcion, le preguntare al tio google xD

ahora lo q me pasa es que me muestra datos, pero NO los de la sentencia SQL :S
  #9 (permalink)  
Antiguo 06/02/2010, 07:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

uff luego del tira y floja funciono, pero me muestra toooooooooodos los datos, no pesca las query's sql :S
  #10 (permalink)  
Antiguo 06/02/2010, 08:58
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Que raro... envia el codigom usado

Abraham
  #11 (permalink)  
Antiguo 06/02/2010, 13:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Cita:
Iniciado por abrahamvj Ver Mensaje
Que raro... envia el codigom usado

Abraham
Estimado mas arriba esta el codifo...

bueno al final hice esto y genere el reporte en excel bajo una plantilla creada por mi, les dejo el codigo:


Cita:
Public Sub Pase_Excel(ByVal Str_Sql As String, ByVal Path_Archivo As String)

Dim Int_Columnas As Integer
Dim Int_Filas As Integer
Dim excelApp As Excel.Application
Dim excellibro As Excel.Workbook
Dim excelhoja As Excel.Worksheet

Set Consulta = New ADODB.Recordset 'CREANDO OBJETO DE DATOS

With Consulta
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
Set .ActiveConnection = mod_Conexion.Conexion
.Open Str_Sql
End With

Set excelApp = New Excel.Application
Set excellibro = excelApp.Workbooks.Open(App.Path & "\" & Path_Archivo & " ")
Set excelhoja = excellibro.ActiveSheet
Int_Columnas = Consulta.Fields.Count
Int_Columnas = Int_Columnas + 1

'For i = 2 To Int_Columnas
'excelhoja.Cells(6, i) = Consulta.Fields(i - 2).Name
'Next

If Consulta.RecordCount > 0 Then
Consulta.MoveFirst

For Int_Filas = 1 To Consulta.RecordCount

For j = 2 To Int_Columnas

If IsNull(Consulta(j - 2).Value) Then
excelhoja.Cells(Int_Filas + 8, j) = ""
Else
excelhoja.Cells(Int_Filas + 8, j) = CStr(Consulta(j - 2).Value)
End If
Next
Consulta.MoveNext
Next
End If


Set Consulta = Nothing
excelApp.Visible = True

End Sub
  #12 (permalink)  
Antiguo 07/02/2010, 07:59
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

1- En tu sentencia SQL tienes:

"strSQL = "SELECT * from usuarios "

Entonces, si estas usando todos los campos de la tabla "usuario" en tu sentencia, se supone que el reporte lo construiste a partir de todos los campos de dicha tabla, o cometiste el error de construirlo a partir de otra tabla y pensaste que despues mediante esa sentecnia lo podia llenar con valores de otra tabla?

2- Una vez hecho eso, en tu sentencia SQL podrias usar Where para definir que registro(s) enviar al reporte

"strSQL = "SELECT * from usuarios Where id=1345"

Abraham
  #13 (permalink)  
Antiguo 07/02/2010, 14:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Cita:
Iniciado por abrahamvj Ver Mensaje
1- En tu sentencia SQL tienes:

"strSQL = "SELECT * from usuarios "

Entonces, si estas usando todos los campos de la tabla "usuario" en tu sentencia, se supone que el reporte lo construiste a partir de todos los campos de dicha tabla, o cometiste el error de construirlo a partir de otra tabla y pensaste que despues mediante esa sentecnia lo podia llenar con valores de otra tabla?

2- Una vez hecho eso, en tu sentencia SQL podrias usar Where para definir que registro(s) enviar al reporte

"strSQL = "SELECT * from usuarios Where id=1345"

Abraham
Estimado, construi la misma estructura en excel y porte tal cual la sentencia,
Cita:
SELECT usuarios.empresa, asistencia.rut, usuarios.nombre,asistencia.fecha, asistencia.hora_inicio, asistencia.equipo from asistencia join usuarios on asistencia.rut = usuarios.rut where fecha >= "2010-01-01" and fecha <= "2010-01-31" order by empresa,rut
y me funciono a la primera, puede haber sido error de capa 8, talvez, pero ya logre generar los informes y los jefes estan contentos por que hice hasta graficos, luego los tiro a PDF con primoPDF y no molestan....

de igual forma estudiare este tema mas adelante, pienso que para haber estado 5 años sin programar y solo dedicado a los servidores linux, me saque varias telas de arañas de encima y desarrolle lo que me pidieron en menos tiempo de lo que pense...

muchas gracias por su ayuda, saludos
  #14 (permalink)  
Antiguo 07/02/2010, 20:33
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 18 años, 3 meses
Puntos: 18
Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Hola. Pues bueno, te entiendo, ya cuando tengas mas tiempo dale al CR, de verdad que es super bueno

Ah, no te olvides que una limitante cuando es con MySQL es que al construir el reporte, este debe tener la misma cantidad de campos que usaras en tus sentencias SQL

Saludos

Abraham
  #15 (permalink)  
Antiguo 22/12/2010, 11:29
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Muy estimados todos:

Tengo el mismo problema que se menciona en esta pregunta, cuando llamo un reporte de Crystal Report desde Visual 6.0 me manda el error '"No se ha podido encontrar la tabla ".'

Estoy trabajando con VB6, CR11, MySQL, y

Creo que es un error relacionado con este otro de Crystal Report cuando hago click en Comprobar base de datos, el mensaje es: 'No se puede encontrar la tabla de la base de datos xxx. Desea eliminar esta tabla del informe?
xxx es una tabla que SI está en mi base de datos.

De antemano les agradezco por su valiosa ayuda.
  #16 (permalink)  
Antiguo 23/12/2010, 08:15
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 2 meses
Puntos: 0
Información Respuesta: Visual Basic 6 - Crystal XI... Novato !!!

Estimados,

Mi problema parece que se resuelve usando la conexión ODBC (RDO) en lugar de OLEDB para ODBC y usando el driver de 5.1 de MySQL en lugar del 3.51, pero parece seguro que es una incompatibilidad entre crystal reports 11 y Mysql.

Visual 6.0 no tiene nada que ver con este problema.

Se los comento por si le sirve a alguien, pero si me pueden aclarar este problema, se los agradeceré mucho.

Saludos,

Etiquetas: basic, crystal, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:25.