Reporte

El error que me sale es el siguiente logon faile
Details: dao error code:0xbe5
Source: dao. Workspace
Descripcion: no se puede usar c:\obsequios\bdobsequios.mdb el archivo ya esta en uso
este es el código que tengo para imprimir el reporte
Set reporte = crapp.OpenReport(App.Path & "\PREMIOS.rpt", 1)
reporte.Database.SetDataSource reporte
reporte.RecordSelectionFormula = "{CONTROL.NUMFACTURA}= " & FRMMENU.TXTNUMFACTURA
reporte.DiscardSavedData
Me.CRViewer91.EnableRefreshButton = True
Me.CRViewer91.Refresh
Screen.MousePointer = vbHourglass
Me.CRViewer91.ReportSource = reporte
Me. CRViewer91. ViewReport
Me. CRViewer91. Refresh
Screen.MousePointer = vbDefault
Como te conté antes la bd esta con clave si yo le quito la clave a la base de datos funciona perfecto. El reporte fue elaborado en crystal report 9 gracias por tu ayuda

2 Respuestas

Respuesta
1
Fíjate si podes cerrar esto
Set WS = DBEngine.Workspaces(0)
Junto con los recordset y las bases.
Me sigue saliendo el mismo error, otra cosa que he notada es que cuando abro el crystal report 9 para ver mi reporte me sale un pantalla donde pide el passwoed de la base y hasta que no lo diga y el usuario y la clave de sección en fin cosas que realmente no entiendo lo único que se es que si dígito la clave de la base hay si me muestra el reporte..
Me podrías pasar el código antes de que entre en el pedazo de código que me mandaste.
Necesito ver el manejo de la conexión y del recordset.
Te explico mi programa es un formulario donde hay una serie de imágenes y debajo de cada imagen hay un label con un premio por ejemplo una lavada gratis lo que yo quiero es que se imprima ese premio: aquí te mando el código de la parte de las imágenes y luego te mando el código de impresión:
Private Sub Image14_Click()
Dim db As Database
Dim RDSOBSMENORES As Recordset
Dim RDSCONTROL As Recordset
Dim WS As Workspace
Dim AUX As Integer
Set WS = DBEngine.Workspaces(0)
Set db = WS.OpenDatabase(App.Path & "\BDOBSEQUIOS.mdb", True, False, ";PWD=FROY20")
Set RDSOBSMENORES = db.OpenRecordset("MENORES", dbOpenTable)
Set RDSCONTROL = db.OpenRecordset("CONTROL", dbOpenTable)
Image14.Visible = False
Randomize
AUX = Int((10 * Rnd) + 1) ' Genera un valor aleatorio entre 1 y 10
RDSOBSMENORES.Index = "CODOBSEQUIO"
RDSOBSMENORES.Seek "=", AUX
If RDSOBSMENORES.NoMatch Then
Else
LIMAGEN14.Visible = True
LIMAGEN14.Caption = RDSOBSMENORES("NOMBRE")
RDSCONTROL.Index = "NUMFACTURA"
RDSCONTROL.Seek "=", Val(FRMMENU.TXTNUMFACTURA)
If RDSCONTROL.NoMatch Then
Else
RDSCONTROL.Edit
RDSCONTROL("DESCRIPCION") = LIMAGEN14.Caption
RDSCONTROL.Update
End If
End If
Image1.Enabled = False
Image2.Enabled = False
Image3.Enabled = False
Image4.Enabled = False
Image5.Enabled = False
Image6.Enabled = False
Image7.Enabled = False
Image8.Enabled = False
Image9.Enabled = False
Image10.Enabled = False
Image11.Enabled = False
Image12.Enabled = False
Image13.Enabled = False
Image14.Enabled = False
Image15.Enabled = False
Image16.Enabled = False
Image17.Enabled = False
Image18.Enabled = False
Image19.Enabled = False
Image20.Enabled = False
Image21.Enabled = False
Image22.Enabled = False
Image23.Enabled = False
Image24.Enabled = False
Image25.Enabled = False
Image26.Enabled = False
Image27.Enabled = False
Image28.Enabled = False
Image29.Enabled = False
Image30.Enabled = False
RDSOBSMENORES.Close
RDSCONTROL.Close
Set RDSOBSMENORES = Nothing
Set RDSCONTROL = Nothing
db.Close
Set db = Nothing
End Sub
ahora el boton de imprimir:
Private Sub BTNIMPRIMIR_Click()
FRMPREMIOS.Show 1
BTNIMPRIMIR.Enabled = False
End Sub
Tengo otro formulario donde aparece lo que quiero imprimir que es el código que pase al principio:
Dim reporte As New CRAXDRT.Report
Dim crapp As New CRAXDRT.Application
Private Sub Form_Load()
Set reporte = crapp.OpenReport(App.Path & "\PREMIOS.rpt", 1)
reporte.Database.SetDataSource reporte
reporte.RecordSelectionFormula = "{CONTROL.NUMFACTURA}= " & FRMMENU.TXTNUMFACTURA
reporte.DiscardSavedData
Me.CRViewer91.EnableRefreshButton = True
Me.CRViewer91.Refresh
Screen.MousePointer = vbHourglass
Me.CRViewer91.ReportSource = reporte
Me.CRViewer91.ViewReport
Me.CRViewer91.Refresh
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
Y como te comente antes si yo quito la clave de la base de datos funciona perfecto pero si la dejo me crea el error y sinceramente no he podido solucionarlo. Gracias por tu paciencia
Si es algo común en las bases pedir autenticación para cuando tienen contraseña.
Dejame que consulte porque esta con ese error porque capaz que tienes que configurar el crystal de otra manera.
Más allá de la contraseña, creo que el problema es el recordset cuando haces el database porque el reporte que estas llamando ya tiene su conexión y al mismo tiempo estas usando la base.
¿Usas un recordset antes de hacer la llamada al reporte?
Respuesta
1
¿Cuándo lo ejecutas tienes algún otro programa abierto? ¿Llámese crystal report? ¿O la misma base de datos?..
No todo esta cerrado tanto el crystal report como la base de datos
Nada más deja un refresh.. por que vuelves a hacer un llamado a un reporte en uso.. ahí anda tu problema!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas