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

Título: Access crear informe con VBA creación con código insertar variable publica Repor
Publicado 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
Título: Re:variable publica
Publicado por: Ogramar en 11 de Julio 2020, 18:30
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

Código: [Seleccionar]
Sub NewReport()   Dim rpt As Report   Set rpt = createReport   DoCmd.Close , , acSaveYes End Sub
Crear un informe pidiendo el nombre del informe

Código: [Seleccionar]
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

Código: [Seleccionar]
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)

Código: [Seleccionar]
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:

Código: [Seleccionar]
rpt.Section("Detail").Height = 350
Añadir columnas a la sección de detalle:

Código: [Seleccionar]
Set txtReportColumns = CreateReportControl(rpt.Name, acTextBox, _  , , "txtNumeroCliente")
Añadir una cabecera indicando alto y ancho porque si no será cero

Código: [Seleccionar]
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)

Código: [Seleccionar]
Set txtReportColumns = CreateReportControl(rpt.Name, acTextBox, _  , , "txtClienteApellidos", 3000)
Añadir la cabecera para la nueva columna

Código: [Seleccionar]
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:

Código: [Seleccionar]
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.
Título: Re:Access crear un informe con VBA creación con código insertar variable publica
Publicado por: Kublai en 11 de Julio 2020, 21:07
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.