La Web del Programador: Comunidad de Programadores
 
    Pregunta:  49799 - COMO ABRIR UN LA BD ACCESS CON CONTRASEñA CON CRYSTAL 9
Autor:  angel arevalo
Hola como están me gustaría saber si me puede ayudar con el problema que tengo con los reportes de crystal 9 por que no puedo abrir la base de datos Access con contraseña anterior mente no tenia contraseña y no tenia problemas ahora que le puse no puedo establecer bien las tablas de la vista visual Basic

El código de la vista es el siguiente

Public Report As New DiseOficial
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
With Report

.Database.Tables(1).Location = Ruta '.ParameterFields(1).AddCurrentValue (Val(QuitaSignos(AltaReciboOfi.TxtRecibo.Text)))

End With
Oficial.ReportSource = Report
Oficial.ViewReport
Screen.MousePointer = vbDefault

End Sub
Private Sub Form_Resize()

With Oficial
.Top = 0
.Left = 0
.Height = ScaleHeight
.Width = ScaleWidth
End With
End Sub

El código de la RUTA es la siguiente

Public Function ObtieneRuta() As String
Dim TmpNum As Integer
Dim Cadena As String

TmpNum = FreeFile

Open "SCN.INI" For Input As #TmpNum
Line Input #TmpNum, Cadena
Close #TmpNum

ObtieneRuta = Cadena
End Function
Ruta es una baria global
Ruta=ObtieneRuta

Es te el código para abrir la base con contraseña

Public Sub ConectaDB()

Set DBNotaria = OpenDatabase((Ruta), False, False, ";pwd=X")
DBNotaria.Recordsets.Refresh

End Sub

Gracias

  Respuesta:  jose manuel garcia lopez
Eso es por que tienes que especificarle la contraseña a cada tabla, a mi me pasó lo mismo espero q el codigo te ayude

Dim crapp As New CRAXDRT.Application
Dim crreport As New CRAXDRT.Report
Set crreport = crapp.OpenReport(establecerInforme, 1)
crreport.Database.LogOnServerEx "p2soledb.dll", App.Path & "\cursos.mdb", "", "", "", "OLE DB", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=K:\Cursos v.3.0\cursos.mdb;Persist Security Info=False;Jet OLEDB:Database Password=gestioncurso"

crreport.DiscardSavedData

'Para poder imprimir tenemos que recorrer previamente todas las tablas e introducir la pass de la BD

For cont = 1 To crreport.Database.Tables.Count
crreport.Database.Tables(cont).ConnectionProperties.Item("password") = "la pass que tenga la bd"
Next