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

Problema con Crystal 10 + VB6 + SQL Server2K

Estas en el tema de Problema con Crystal 10 + VB6 + SQL Server2K en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Soy nuevo en el foro, llegue aqui por google. Tengo un problemita con CR10 + VB6 sobre SQL Server 2000. Tengo un ...
  #1 (permalink)  
Antiguo 13/05/2005, 15:36
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Exclamación Problema con Crystal 10 + VB6 + SQL Server2K

Hola a todos. Soy nuevo en el foro, llegue aqui por google. Tengo un problemita con CR10 + VB6 sobre SQL Server 2000.

Tengo un reporte que usa 5 tablas y se navega perfecto en CR, pero al momento de cargarlo en el CRViewer me da este error:

"Logon Failed.
ADO Error Code: 0x80040e4d
Source: Microsoft OLE DB Provider for SQL Server
Desc: Error de Inicio de sesion para 'sa'
SQL State: 42000
Native Error: 18456"

Por el tipo de error me imagino que es el nombre usuario, servidor o clave que estan malos, mas no les consigo error. Cuando solo muestro el reporte con los datos guardados (sin hacer .DiscardSavedData) no me da el error y lo muestra perfecto. El problema es que necesito seleccionar un registro especifico dinamicamente, por lo que los datos guardados no me sirven. Este es el codigo.

'variables
Dim crxApp As New CRAXDRT.Application
Dim crxRpt As CRAXDRT.Report

'abrir reporte
Set crxRpt = crxApp.OpenReport("C:\reporte.rpt")
'login en el servidor. Se que el servidor esta bien, porque si lo quito o pongo uno falso, me da otro error distinto
crxRpt.Database.LogOnServer "p2ssql.dll", "VIRTUAL2003", "basedatos", "sa", "admin"
'si esta linea no esta, el error no ocurre mas abajo.
crxRpt.DiscardSavedData
crxRpt.RecordSelectionFormula = "{requisiciones.id_requisicion} = " & 68
crystal.ReportSource = crxRpt
'aqui ocurre el error si uso .DiscardSavedData
crystal.ViewReport

Por favor si pueden darme una ayudita se los agradezco. Apenas estoy comenzando a utilizar el CR, asi que probablemente se me pasa algo o estoy haciendo algo mal. En algun lado lei que habia que conectar a la BD cada tabla, pero no se como hacerlo.

Gracias de antemano...
  #2 (permalink)  
Antiguo 13/05/2005, 15:40
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Ya buscaste en el foro? yo utilizo los archicos TTX para no depender de la BD, todo que hago es mandarle un recordset con los datos de una consulta.
  #3 (permalink)  
Antiguo 13/05/2005, 15:47
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Eje!!! que tal compañero... primero mira cuantas formas de hacer un log on a SQL Server tienes... ya que talvez por algun lado accesas a la base por medio de autentificación de windows y por otro lado talvez trates de accesar con el usuario por default que es "sa" con password en blanco...
  #4 (permalink)  
Antiguo 16/05/2005, 07:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
jrp01: revise casi todas las paginas del subforo y no encontre algo similar, o encontre codigo para CR9 donde se hace logon en cada tabla, pero en CR10 ese metodo no existe. No conozco los archivos TTX, voy a investigar pero si puedes explicarme mejor te lo agradeceria...

Developer9: El SQL no tiene seguridad integrada por politicas del proyecto, la unica forma de hacer login es por username/password, y la cuenta 'sa' tiene su password correctamente configurado. El error ocurre con cualquier cuenta, bien sea sa u otra...

Tal vez les parezca fastidioso pero es importante para mi porque estoy contra reloj y no tengo mucho tiempo adicional para investigar. Cualquier ayuda es agradecida!

Saludos...
  #5 (permalink)  
Antiguo 16/05/2005, 08:10
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Ok, para crear los TTX solo cuando te pregunte lo de los datos, pon crear nueva conexion->Field definitions Only y pones crear archivo y ahi lo diseñas pones lo campos que vas a ocupar en el reporte y su tipo tienen que ser iguales a como los tienes en tu DB (nombre y tipo), y en base a ese archivo .TTX creas el reporte ahora para mandar los datos es asi (es con Access):
Código:
Dim crxreport As CRAXDRT.Report
Dim crxApplication As New CRAXDRT.Application
Dim rs1 As New ADODB.Recordset
Dim crpDatabase As CRAXDRT.Database
Dim crpTables As CRAXDRT.DatabaseTables
Dim crpTable As CRAXDRT.DatabaseTable
Dim cn As New ADODB.Connection

Private Sub Form_Load()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\vehiculos.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=hola"
sentencia = "select vale.idvale,vale.idvehiculo,vale.fecha,vale.kilometraje,combustible.nomcombustible,vale.cantidad,vale.precio*vale.cantidad,vale.status from vale inner join combustible on(vale.idcombustible=combustible.idcombustible) where vale.status<>'Cancelado'"
Set rs1 = cn.Execute(sentencia)
Screen.MousePointer = vbHourglass
Set crxreport = crxApplication.OpenReport(App.Path & "\Reporte vales.rpt")
crxreport.DiscardSavedData
Set crxDatabase = crxreport.Database
Set crxDatabaseTables = crxDatabase.Tables
crxreport.Database.SetDataSource rs1
CrystalActiveXReportViewer1.ReportSource = crxreport
CrystalActiveXReportViewer1.EnableExportButton = True
CrystalActiveXReportViewer1.DisplayGroupTree = False
CrystalActiveXReportViewer1.EnablePopupMenu = False
CrystalActiveXReportViewer1.EnableDrillDown = False
CrystalActiveXReportViewer1.EnableSelectExpertButton = False
CrystalActiveXReportViewer1.ViewReport
CrystalActiveXReportViewer1.Zoom 100
Screen.MousePointer = vbDefault
End Sub

Última edición por jrp01; 16/05/2005 a las 08:16
  #6 (permalink)  
Antiguo 16/05/2005, 08:17
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
En vale.ttx tengo:
Código:
; Field definition file for table: ADORecordset
idvale	long		1
idvehiculo	short		1
fecha	datetime		Jan 5, 1994 1:23:45 PM
kilometraje	number		1.00
nomcombustible	string	80	string sample value
cantidad	number		1.00
precio	number		1.00
Status	string	50	string sample value
  #7 (permalink)  
Antiguo 17/05/2005, 08:24
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
jrp01, gracias por el codigo. Hacia exactamente lo mismo que el mio (cambiandolo a SQL Server) y daba el mismo error, pero me hizo darme cuenta que el CR no estaba recibiendo bien la clave, asi que intente con una clave en blanco y me funciono perfectamente. Ahora puedo seguir avanzando mientras investigo mas a fondo por que demonios no recibe la clave correctamente.

Si alguien tiene alguna sugerencia es bienvenida...
  #8 (permalink)  
Antiguo 17/05/2005, 08:27
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Aqui la direriencia es que CR no se conecta a la BD, le mando un recordset que lleno con un Select, esto es util cuando migras de BD, de esta manera no cambias nada en el reporte solo la conecion.
  #9 (permalink)  
Antiguo 17/05/2005, 09:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Claro, Push vs. Pull... pero al final el resultado es el mismo...
  #10 (permalink)  
Antiguo 17/05/2005, 13:28
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Ok, resolvi definitivamente el problema. Investigando en el site de businessobjects encontre una excelente lista de objetos, propiedades y metodos del ActiveX de Crystal.

El problema era que cada tabla de la conexion usada por Crystal en el reporte obtenia todos los datos de conexion menos el password. Al añadir el password, el reporte se muestra perfectamente.

Les dejo el codigo por si le sirve a alguno. Gracias a los que se interesaron, hasta luego...


Dim crxApp As New CRAXDRT.Application
Dim crxRpt As CRAXDRT.Report
Set crxRpt = crxApp.OpenReport(App.Path & "\reporte.rpt")
crxRpt.Database.LogOnServer "p2ssql.dll", "VIRTUAL2003", "basededatos", "sa", "cualquiercosa"
crxRpt.RecordSelectionFormula = "{requisiciones.id_requisicion} = " & 68
crxRpt.DiscardSavedData
crystal.ReportSource = crxRpt
For i = 1 To crxRpt.Database.Tables.Count
crxRpt.Database.Tables(i).ConnectionProperties.Ite m("Password") = "cualquiercosa"
Next i
crystal.ViewReport
crystal.Zoom 1
Set crxRpt = Nothing
Set crxApp = Nothing
  #11 (permalink)  
Antiguo 17/05/2005, 16:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 1
Antigüedad: 19 años
Puntos: 0
Pregunta Problema con Crystal 10 + VB6

Hola como estan, estoy en problemas realice un programa en vb6, una base de datos en access97 y un reporte en crystal 10, la conexion a db es por DAO.

Al jalar el reporte lo presenta con los datos anteriores y no me actualiza el reporte, al darle un refresh me manda un error de contraseña no valida .

Si alguien me puede ayudar es muy urgente ya que me estan solicitando el proyecto. Y de igual manera soy un novaton.

Buenas tardes y suerte
  #12 (permalink)  
Antiguo 07/03/2007, 11:17
 
Fecha de Ingreso: abril-2005
Ubicación: Lima
Mensajes: 2
Antigüedad: 19 años
Puntos: 0
Re: Problema con Crystal 10 + VB6 + SQL Server2K

saludos...
yo tengo un peoblema similar..
pero en mi caso..
no me arroja ningun error
simplemten no me muestra los datos del reporte..
lo que etoy haciendo solo es llamar a un reporte el cual llama a un sp el cua ltiene unos parametros.

no se si me pudieran dar una manita..?
esta es una forma

Option Explicit
Dim CrApli As CRAXDRT.Application
Dim CrReport As CRAXDRT.Report
Dim CrParDef As CRAXDRT.ParameterFieldDefinition
Dim CrParDefs As CRAXDRT.ParameterFieldDefinitions
Public CrParametro As String 'Varuiable de Parametro (NomPar,Valor)
Dim arrNomPar() As String
Dim arrValPar() As String
Dim Arreglo() As Variant
Dim frmRep As New frmRepor10

Private Sub Form_Load()

'CrApli

End Sub

Private Sub Form_Resize()
With CrView
.Top = 0
.Left = 0
.Width = ScaleWidth
.Height = ScaleHeight
End With
End Sub

'Private Function BuscaParName(NomParFind As String) As Integer
''************************************************ ****************
''************************************************ ****************
'Dim I As Integer
' BuscaParName = -1
' For I = 0 To UBound(arrNomPar) - 1
' If UCase(Trim(arrNomPar)) = UCase(Trim(NomParFind)) Then
' BuscaParName = I
' Exit Function
' End If
' Next I
'
'
'End Function
Private Function BuscaParName(ByVal NomParFind As String) As Integer
'************************************************* ***************
'************************************************* ***************
Dim i As Integer
BuscaParName = -1
' NomParFind = Mid(NomParFind, 3, Len(NomParFind) - 3)
For i = 0 To UBound(Arreglo) - 1
If UCase(Trim(NomParFind)) = UCase(Trim(Arreglo(i))) Then
BuscaParName = i
Exit Function
End If
Next i


End Function
Public Sub ShowReport(RutaReport As String, Destino As Integer, CantPar As Integer, ParamArray Par() As Variant)
'************************************************* ***************
' Desarrollado por Jimmy Fecha(06-Mar-2007)
' Destino , lo Muestro o lo Imprimo '1=Formulario
' 2=impresora
' 3=PDF
'************************************************* ***************

Dim Pos As Integer
Dim Cont As Integer
Dim vStr As String
Dim vInt As Integer
Dim crDBTab As CRAXDRT.DatabaseTable
On Local Error GoTo ShowReportErr

Dim j As Integer
j = -1
ReDim Arreglo(0)

Do
j = j + 1
ReDim Preserve Arreglo(j)
Arreglo(j) = Par(j)
Debug.Print Arreglo(j)
Loop Until j = (CantPar * 2) - 1



Set CrApli = New CRAXDRT.Application
Set CrReport = New CRAXDRT.Report
Set CrReport = CrApli.OpenReport(RutaReport, 1)
Set CrParDefs = CrReport.ParameterFields

'CrReport.Database.LogOnServer "crdb_odbc.dll", "rptfacusa", "Facusa", "sa", ""
CrReport.Database.LogOnServer "p2ssql.dll", "Produccion", "Facusa", "sa", ""
CrReport.DiscardSavedData

' For Each crDBTab In CrReport.Database.Tables
' crDBTab.SetLogOnInfo "Produccion", "Facusa"
' Next
Debug.Print '-----------------------------'
Cont = 0

' If CrReport.ParameterFields.Count > 0 Then
' For j = 1 To CrReport.ParameterFields.Count
' Set CrParDef = CrParDefs.Item(j)
' Pos = BuscaParName(CrParDef.ParameterFieldName)
' Select Case CrParDef.ValueType
' Case 12
' CrParDef.AddCurrentValue (Str$(Par(Pos + 1)))
' Case Else
' CrParDef.AddCurrentValue (Par(Pos + 1))
' End Select
' Debug.Print CrParDef.Value
' Next j
' End If
'

On Local Error GoTo 0
For Each CrParDef In CrParDefs
Pos = BuscaParName(CrParDef.ParameterFieldName)
Debug.Print CrParDef.ParameterFieldName & " ---->> " & Par(Pos + 1)
If Pos < 0 Then MsgBox "Error": Exit Sub
' CrReport.ParameterFields(1).AddCurrentValue ()

vStr = Par(Pos + 1)
vInt = IIf(IsNumeric(Par(Pos + 1)), Par(Pos + 1), 0)
Select Case CrParDef.ValueType
Case 12, 0
CrParDef.AddCurrentValue (vStr)
Case Else
CrParDef.AddCurrentValue (vInt)
End Select

Cont = Cont + 2


' Select Case CrParDef.ParameterFieldName
' Case "Parametro1"
' CrParDef.Name
' CrParDef.AddCurrentValue (mstrParametro1)
' End Select
Next

'With CrView
'CrView.Zoom 1
CrView.ReportSource = CrReport

'CrView.DisplayGroupTree = False
CrView.ViewReport 'Destino
'End With

' Set CrParDefs = Nothing
' Set CrParDef = Nothing

Screen.MousePointer = vbDefault

frmRep.Show

Exit Sub
ShowReportErr:
MsgBox Err.Description




End Sub
  #13 (permalink)  
Antiguo 08/03/2007, 09:18
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Re: Problema con Crystal 10 + VB6 + SQL Server2K

y si verifican el reporte:

les comento esta opcion repara las conexiones a las bases de datos y les podría ayudar con su problema, busquen la opción verify en en la edición del reporte en crystal report designer y el raparará el problema.. creo yo..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #14 (permalink)  
Antiguo 12/01/2011, 12:53
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Problema con Crystal 10 + VB6 + SQL Server2K

Cita:
Iniciado por KalaNag Ver Mensaje
Ok, resolvi definitivamente el problema. Investigando en el site de businessobjects encontre una excelente [URL=http://support.businessobjects.com/global/interactive/xi/om/RDC/content.html]lista de objetos, propiedades y metodos[/URL] del ActiveX de Crystal.

El problema era que cada tabla de la conexion usada por Crystal en el reporte obtenia todos los datos de conexion menos el password. Al añadir el password, el reporte se muestra perfectamente.

Les dejo el codigo por si le sirve a alguno. Gracias a los que se interesaron, hasta luego...


Dim crxApp As New CRAXDRT.Application
Dim crxRpt As CRAXDRT.Report
Set crxRpt = crxApp.OpenReport(App.Path & "\reporte.rpt")
crxRpt.Database.LogOnServer "p2ssql.dll", "VIRTUAL2003", "basededatos", "sa", "cualquiercosa"
crxRpt.RecordSelectionFormula = "{requisiciones.id_requisicion} = " & 68
crxRpt.DiscardSavedData
crystal.ReportSource = crxRpt
For i = 1 To crxRpt.Database.Tables.Count
crxRpt.Database.Tables(i).ConnectionProperties.Ite m("Password") = "cualquiercosa"
Next i
crystal.ViewReport
crystal.Zoom 1
Set crxRpt = Nothing
Set crxApp = Nothing

Gracias por la respuesta, despues de una semana logre mi cometido gracias a esta respuesta. Excelente.
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 00:16.