Cambiar origen de control en formulario por medio de fórmula Access

Estimados expertos sucede que tengo una consulta que varia sus campos y de acuerdo a ello lo debe mostrar en un informe o no, si la consulta me arroja el valor este debe aparecer, de lo contrario aparecer en vació, sin embargo en algunas ocasiones cuando el campo no existe el informe me genera error de inmediato.

En este momento estoy usando esta fórmula sin embargo, no funciona adecuadamente, lo que quiero hacer es que si el control EXÓGENA GRAN CONTRIBUYENTE es nulo entonces el origen de control sea vació de lo contrario quiero que el origen del control sea EXOG GRAN CONTRIBU campo de la consulta que tiene como origen del registro el informe en cuestión

=SiInm(EsNulo([Exogena Gran Contribuyente]),"",[Exogena Gran Contribuyente].[OrigenDelControl]="Exog Gran Contribu")

Espero me halla hecho entender les agradezco mucho su ayuda.

1 respuesta

Respuesta
1

Leonardo: La verdad es que hablas de Formulario, Informe etc, y si es para el control de un Formulario>> Prueba simplemente poniendo>>

=Nz([Exogena Gran Contribuyente];"Exog Gran Contribu"))

Mis saludos >> Jacinto

Hola Jacinto...

Muchas gracias por tu ayuda te comento...

[Exógena Gran Contribuyente] Es un nombre de control de un Informe

"Exog Gran Contribu" Campo de una consulta que puede que exista o no.

Lo quiero es que si el campo "Exog Gran Contribu" existe lo tome el control [Exógena Gran Contribuyente] de lo contrario que no ponga nada.

Gracias por tu ayuda

Leonardo: Si la consulta es el Origen de Datos del Informe, el Campo siempre estará, creo yo porque no sé tu estructura.

Otra cosa es que ese campo tenga Datos de un registro o se Nulo.

Si eso fuera así, entonces, en el Evento Al Dar Formato de la Sección donde tengas el Control [Exógena Gran Contribuyente], le puedes Poner

Me![Exógena Gran Contribuyente] = Nz([Exog Gran Contribu],"")

Saludos >> Jacinto

Jacinto Muchas gracias...

Disculpa mucho las molestias que posiblemente te estoy causando, lo que me falto decirte es que la consulta es de referencia cruzada donde hallo los impuestos de una empresa...

Sucede que según la empresa puede o no tener dicho impuesto, por lo cual puede ser que el campo exista o no.

Gracias de nuevo

Leonardo: Creo que entre otras soluciones, es tener dos Informes.

Sondea antes de abrir ningún informe si el Campo existe en el Origen de datos . Si existe abres el tipo que lo lleva incorporado y si no abres el Otro.

Otra solución sería poner el Control del Informe independiente y si el Campo existe le adjudicas el valor del campo en origen del control y si no le pones como valor una cadena vacia. Esto se me ocurre sobre la marcha.

En cualquier caso necesitarás una función auxiliar que te mire si ese campo existe, que puede ser algo parecido a ésto.

Function CampoEnOrigen(OrigenDatos As String, CampoBuscado As String) As Boolean
Dim Rst As DAO.Recordset
Dim I As Integer

On Error GoTo CampoEnOrigen_TratamientoErrores
CampoEnOrigen = False

Set Rst = CurrentDb.OpenRecordset(OrigenDatos)
For I = 0 To Rst.Fields.Count - 1
If Rst(I).Name = CampoBuscado Then
CampoEnOrigen = True
GoTo Termina
End If
Next I
Termina:

If Not Rst Is Nothing Then
Rst.Close
Set Rst = Nothing
End If

CampoEnOrigen_Salir:
On Error GoTo 0
Exit Sub
CampoEnOrigen_TratamientoErrores:
MsgBox "Error " & Err.Number & " en Funcion.: CampoEnOrigen de Documento VBA: TuObjetoFormModulo... (" & Err.Description & ")"
Resume CampoOrigen_Salir

End Function

Si con ésto aún no lo resuelves me comentas. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas