Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Kublai en 11 de Julio 2020, 08:58
-
Hola a todos. Soy nuevo en el foro y también muy novato con el VBA. Os ruego un poco de paciencia si mis consultas os parecen demasiado obvias o simples.
Tengo un problemilla al rular un módulo asociado a un botón de comando de un formulario de access: declaro pública una variable tipo cadena, le doy valor y luego quiero que me la reconozca un informe, para incluirla en él.
El problema es que no se cómo hacer esa segunda parte: incluir la cadena en el informe. No se qué tipo de objeto emplear ni cómo.
Os pego el código que llevo escrito en el módulo:
Option Compare Database
Public variablepublica As String
Private Sub Comando155_Click()
variablepublica = RTrim(Objeto) & " TEXTOTEXTOTXTO " & RTrim(Perceptor) & " HOLAHOLAHOLAHOLA " & RTrim(NIF)
'MsgBox variablepublica
DoCmd.OpenReport "Informe1"
End Sub
Muchas gracias por vuestra ayuda
-
Buenas, bienvenido y lo primero pedirte que leas este hilo: https://aprenderaprogramar.com/foros/index.php?topic=1460.0 y trates de seguir las indicaciones que ahí se dan en cuanto a título de los temas, forma de pegar código, etc. Es importante que indiques palabras clave como Access, VBA, etc. en los títulos pues si no se dificulta la localización. Es importante pegar el código usando las etiquetas code.
Creo que te puedo ayudar poco porque no suelo hacer este tipo de programación. A modo de idea, se me ocurre indicarte que si tienes creado el informe y dentro del informe tienes colocados los elementos que vas a usar, por ejemplo un label, tienes que saber cómo se llama ese Label para poder invocarlo.
Si no tienes creados los elementos, tendrás que crearlos bien en la vista de diseño, bien mediante código.
Algunos ejemplos que he rescatado por si ayudan.
Crear un informe vacío con un nombre por defecto
Sub NewReport() Dim rpt As Report Set rpt = createReport DoCmd.Close , , acSaveYes End Sub
Crear un informe pidiendo el nombre del informe
Sub NewReport() Dim rpt As Report Dim strReportName As String strReportName = InputBox("Introduce el nombre del informe", "Report Name") Set rpt = CreateReport DoCmd.Save , strReportName DoCmd.Close , , acSaveYes End Sub
Añadir controles al informe
Sub NewReport() Dim rpt As Report Dim strReportName As String Dim txtReportColumns As Access.TextBox Dim lblReportLabel As Access.Label Dim intWidth As Integer
Elegir un origen de datos (como una base de datos)
strReportName = InputBox("Introduce el nombre del informe", "Report Name") Set rpt = CreateReport rpt.RecordSource = "SELECT * FROM tblClientes"
Establecer una altura para la sección de detalle del informe:
rpt.Section("Detail").Height = 350
Añadir columnas a la sección de detalle:
Set txtReportColumns = CreateReportControl(rpt.Name, acTextBox, _ , , "txtNumeroCliente")
Añadir una cabecera indicando alto y ancho porque si no será cero
Set lblReportLabel = CreateReportControl(rpt.Name, acLabel, _ acPageHeader) lblReportLabel.Name = "lblNumeroCliente" lblReportLabel.Caption = "Numero Cliente" lblReportLabel.Width = 2000 lblReportLabel.Height = 300 lblReportLabel.FontBold = True
Añadir otra columna al informe (situada a la derecha)
Set txtReportColumns = CreateReportControl(rpt.Name, acTextBox, _ , , "txtClienteApellidos", 3000)
Añadir la cabecera para la nueva columna
Set lblReportLabel = CreateReportControl(rpt.Name, acLabel, _ acPageHeader, , ,3000) lblReportLabel.Name = "lblApellidos" lblReportLabel.Caption = "Apellidos" lblReportLabel.Width = 2000 lblReportLabel.Height = 300 lblReportLabel.FontBold = True
Suponiendo que el informe lleva 3 columnas, repetir el proceso para la nueva columna:
Set txtReportColumns = CreateReportControl(rpt.Name, acTextBox, _ , , "txtNombreCliente", 6000) Set lblReportLabel = CreateReportControl(rpt.Name, acLabel, _ acPageHeader, , , 6000) lblReportLabel.Name = "lblFirstName" lblReportLabel.Caption = "Nombre" lblReportLabel.Width = 2000 lblReportLabel.Height = 300 lblReportLabel.FontBold = True DoCmd.Save , strReportName DoCmd.Close , , acSaveYes DoCmd.OpenReport strReportName, acViewPreview End Sub
Al ejecutar esto lo que veríamos es un informe con 3 columnas y cada columna tiene un título o cabecera, y en sucesivas filas aparecerían los datos rescatados de la base de datos.
-
Muchas gracias. Voy a seguir investigando sobre ello.
Perdón por haber contravenido un poco las normas del foro... No las conocía. Realmente, tengo nula costumbre de manejarme en foros. Gracias por todo.