Deseo imprimir un reporte creado en cristal report v 4.6, la base de datos esta en access xp y esta protegida por contraseña. Me gustaría que me regalaran un código de ejemplo para imprimir un reporte cuando la base esta con contraseña.
3 Respuestas
Respuesta de netvaio
1
1
netvaio, Manejo de Visual Basic Con SQL SERVER y ACCES durante 4 años
Que tal puedes ocupar este código Set con = CreateObject("ADODB.Connection") Con.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "DbQ=C:\Bd\base.mdb;" & _ "Exclusive=1;" & _ "Uid=admin;" & _ "Pwd=net"
Pues con el texto que te di... es para entrar en modo exclusivo a algún reporte.. así debes de ingresar.. aunque el reporte.. lo tienes el crystal.. amm.. necesitarías chequear la conexión desde cristal para poder ingresar a la base de datos!
El Error esta al pasarle el parámetro pero te salta cuando lo mandas a ejecutar. Si la fórmula esta mal. Hola te paso esto que encontré suma para saber... Cuantas veces hemos querido introducir información complementaria en nuestros informes, información que no tiene la base de datos, pero no hemos sabido como. Aquí se encuentra la solución. En el diseñador podemos introducir cuantas fórmulas queramos y en la posición, tipo, tamaño y fuente que queramos. Pues bien, al añadir fórmula, introducimos un nombre y en el cuadro de diseño de la fórmula introducimos "" ( si, dobles comillas ). Una vez hecho esto colocamos la caja de texto que nos ha generado el diseñador, donde queramos. Cuando emitamos el informe, queremos introducir en esa caja la información. Por ejemplo en nombre completo del informe, algo así como "Listado de clientes desde el 1 de Enero al 31 de Diciembre", por ejemplo. ¿Veamos el ejemplo? Form1.CR1.Formulas(0) = "Titulo=' Listado de Clientes '" Form1.CR1.Formulas(1) = "Subtitulo='1 de Enero a 31 de Diciembre 1998 '" O bien? Dim Titulo1 as String Dim Titulo2 as String Titulo1 = "Listado de Clientes" Titulo2 = "1 de Enero a 31 de Diciembre 1998" Form1.CR1.Formulas(0) = "Titulo='" & Titulo1 & "'" Form1.CR1.Formulas(1) = "Subtitulo='" & Titulo2 & "'" Y acá por la selectionformula SelectionFormula Aquí vemos la madre de todas las propiedades. Con ella montamos los filtros que queremos usar para que nuestro informe muestra una u otra cosa. Su uso Form1.CR1. SelectionFormula ="{Ofertas.OferCliente} ='" & Cliente.Text & "'" Descargamos una variable de tipo String sobre una tabla o? Total_Final = Val(Total.Text) Form1.CR1. SelectionFormula ="{Ofertas.Total} =" & Total_Final & "" Descargamos una variable de tipo Numérico sobre una tabla ¿o? Form1.CR1. SelectionFormula ="{Ofertas.OferCliente} ='Yo Mismo'" Descargamos una cadena fija sobre una tabla ¿o? Form1.CR1. SelectionFormula ="{Ofertas.Total} =12" Descargamos un Número fijo sobre una tabla Bueno, esto está claro para este tipo de cosas. Recordemos que lo que va entre corchetes es: {Nombre_de_ la_ tabla . Campo} Pero ahora, las complicaciones. Esta propiedad admite encadenamientos de tipo AND, así como reordenamientos de ficheros con ORDER BY. Su sintaxis es de tipo SQL aunque no admite todos sus parámetros y tiene ciertas particularidades. Veamos como se comporta SelectionFormula en un selección sobre un rango de fechas, que es donde difiere de verdad del SQL tradicional. Observa esta proción de código: Dim Primera As Date Dim Ultima As Date Primera = CDate(Fecha1.Text)¿? Se supone que en Fecha1.text y Fecha2.Text tengo fechas validas Ultima = CDate(Fecha2.Text) Dia1 = Day(Primera) ? Ahora descompongo la fecha en trocitos para que CR no se Mes1 = Month(Primera) ? atragante Agno1 = Year(Primera) Dia2 = Day(Ultima) Mes2 = Month(Ultima) Agno2 = Year(Ultima) CR1.SelectionFormula="{Ofertas.OferFechaPropuesta} in Date(" & Agno1 & "," & Mes1 & "," _ & Dia1 & ") to Date(" & Agno2 & "," & Mes2 & "," & Dia2 & ")" CR1.Destination=1 CR1.Action=1 Me es muy difícil explicar este tramo
Excelente idea gracias por tu tiempo
Set Con = CreateObject("ADODB.Connection") Con.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "DbQ=C:\obsequios\bdobsequios.mdb;" & _ "Exclusive=1;" & _ "Uid=admin;" & _ "Pwd=froy20" RPTOBSEQUIOS.ReportFileName = (App.Path & "\obsequios.rpt") RPTOBSEQUIOS.SelectionFormula = "{CONTROL.CATEGORIAPREMIO}= '" & CMBCATEGORIA & "'" RPTOBSEQUIOS.Destination = 0 RPTOBSEQUIOS.Action = 1 AQUI ME MARCA UN ERROR
¿El programa donde se para cuando da el error? Set db = WrkJeT.OpenDatabase(App.Path & "\BDOBSEQUIOS.mdb", True, False, ";PWD=froy20") tu base tiene pas, ¿no te faltaria ponerle el usuario=admin???
Lo que pasa es que me esta saliendo este mensaje cada vez que voy a imprimir error en tiempo de ejecución 20536 unable to connect: incorrect long on parameters y no se como solucionarlo, aquí te paso el código que tengo para imprimir: Private Sub BTNIMPRIMIR_Click() Dim WrkJeT As Workspace Dim db As Database Set WrkJeT = CreateWorkspace("", "admin", "", dbUseJet) Set db = WrkJeT.OpenDatabase(App.Path & "\BDOBSEQUIOS.mdb", True, False, ";PWD=froy20") db.NewPassword "froy20", "" db.Close Set dbs = Nothing WrkJeT.Close Set WrkJeT = Nothing RPTOBSEQUIOS.ReportFileName = (App.Path & "\obsequios.rpt") RPTOBSEQUIOS.SelectionFormula = "{CONTROL.CATEGORIAPREMIO}= '" & CMBCATEGORIA & "' " RPTOBSEQUIOS.Destination = 1 RPTOBSEQUIOS.Action = True End Sub
No funciono sigue marcando el mismo error
Proba agregar esto antes del action CrystalReport1. RetrieveDataFiles CrystalReport1.Action = 1
Que la base de datos tenga contraseña no es un impedimento para imprimir en crystal report, porque vos solo le pasas el recordset o la consulta una vez realizada la conexión. Saludos leandro. Al menos que estés imprimiendo en el crystal directamente, pero es el mismo caso para acceder tienes que primero hacer la conexión, donde te pide datos de la contraseña, en access el usuario es admin y la contraseña la tuya.
- Anónimoahora mismo
Respuesta de denciso
1
1
denciso, Soy una persona multifacética, tanto manejo la informática,...
Genera una variable de conexión de la misma forma que la utilizas cuando te conectas a tu base de datos y se la pasas en el método connect. frmRegistroInformacion.Acuse.Connect = MsAux$
No entendí muy bien te agradecería con un código de ejemplo gracias
Este es el código que estoy utilizando lo raro es que tengo un reporte diferente con el mismo código y funciona Cuando llego .action = 1 me sale una pantallita pequeña donde me pide la clave de la base de datos y se la dígito y me sale el error 20534 error dectectado por dll o algo así Private Sub BTNIMPRIMIR_Click() Dim db As Database Dim RDSCONTROL As Recordset Dim AUX As Variant Dim WS As Workspace Set WS = DBEngine.Workspaces(0) Set db = WS.OpenDatabase(App.Path & "\BDOBSEQUIOS.mdb", True, False, ";PWD=froy20") Set RDSCONTROL = db.OpenRecordset("CONTROL", dbOpenTable) RDSCONTROL.Index = "NUMFACTURA" RDSCONTROL.Seek "=", Val(FRMMENU.TXTNUMFACTURA) If RDSCONTROL.NoMatch Then Else AUX = RDSCONTROL("NUMFACTURA") With ROBMENORES .ReportFileName = App.Path & "\REGALOS.rpt" .SelectionFormula = "{CONTROL.NUMFACTURA}= " & AUX & "" .Destination = crptToWindow .PrintFileType = crptCrystal .Action = 1 'aqui me da el error End With End If BTNIMPRIMIR.Enabled = False RDSCONTROL.Close Set RDSCONTROL = Nothing db.Close Set db = Nothing End Sub
En las siguientes ligas hablan de este problema: http://www.macoratti.net/cr_vb_1.htm http://support.businessobjects.com/library/kbase/articles/c2006736.asp http://support.businessobjects.com/library/kbase/articles/C2006737.asp
Excelente ayuda
La variable MsAux$ deberá de contener el método de conexión a tu base de datos con todo y tu usuario y contraseña. El ejemplo de conexión lo encuentras en la siguiente página: http://www.connectionstrings.com Y la siguiente instrucción: FrmRegistroInformacion. Acuse. Connect Es una forma en la que tengo un crystal report y se llama acuse.