Problema al cambiar controlsource desde vba

Estoy tratando de cambiar el controlsource de un texbox mediante un control de grupo de opciones con vba, pero tengo problemas con la sintaxis, ¿me podrías ayudar?

If Me.OpIt = 1 Then Me.txtItJan.ControlSource = Nz(DSum("([Tabla1]![Amount]/1000)", "[ Tabla1]", "[ Tabla1]![DepName]='IT' AND [Tabla1]![Mes] = 'enero' And[Tabla1]![Año]='Act' And [Tabla1]![Linea]=& Me.Combo327 And [Tabla1]![Chan] = Me.Combo329"), 0)

Desde ya muy agradecido.

1 respuesta

Respuesta
1

Debes indicar el tipo de problema.

Estimado, mil disculpas, el problema es que en el textbox no muestra nada al cambiar el valor mediante programación, lo extraño es que si lo ingreso como una expresión , lo muestra sin problemas.

Debes agregar al código VBA Me. Requery

Hola estimado, lo intenté pero no resulta, lo que estoy tratando de hacer ahora es tratar de hacerlo con una expresión , en este caso con un IIF, pero solo me da valor para la opción verdadera, me puedes ayudar con la expresión, la adjunto.

=(IIf("[CmbMesN4]<=2 ",DSum("[Amount]","[QIntermedia3]","[Tabla] ='Act' and [Concepto] = 'Expenses' and [Mes] ='febrero' "),DSum("[Amount]","[QIntermedia3]","[Tabla] ='Forc' and [Concepto] = 'Expenses' and [Mes] ='febrero'"))/1000)

Lo único que cambio es el valor del criterio tabla y [CmbMesN4] es un combo box numérico.

Saludos.

No te recomiendo usar expresiones DSUM() etc, como control source, lo mejor es hacer una consulta mediante vba y SQL. Algo como:

Dim sql as string

IF Me.CmbMesN<=2

sql="SELECT Sum(Amount) AS Monto FROM QIntermedia3"

sql=sql & "WHERE Tabla='" & "Act" & '"" & "AND Mes='" & febrero & "'" AND ....."

Else

sql="SELECT ......"

Endif

me.texbox.RecordSource=sql

me.textbox.requery

NOTA: El código deb ir el evento Después de Actualizar del control de opciones

Espero te sirva. Un saludo desde Colombia



Gracias estimado , lo voy a probar y te comento.

Saludos.

Hola estimado,lo dejé así , que es como el editor no me reclama, pero no ma arroja resultado.

Dim sql As String
If Me.CmbMesN4 <= 2 Then
sql = "SELECT Sum(Amount) AS Monto FROM [QIntermedia3]"
sql = sql & "WHERE [Tabla]='Act' AND [Mes]='febrero' AND [OHead] ='Personal Expenses'"
Else
sql = "SELECT Sum(Amount) AS Monto FROM [QIntermedia3]"
sql = sql & "WHERE [Tabla]='Forc' AND [Mes]='febrero' AND [OHead] ='Personal Expenses'"
End If
Me.Text28.ControlSource = sql
Me.Text28.Requery

Primero que todo veo que tienes ControlSource y es RecordSource.

Si no arroja resultado es porque no se cumplen los criterios de la consulta. Trata de hacer la consulta en la cuadricula de Access y mira el código SQL que éste genera, comparalo con tu código haber que diferencias encuentras.

Si no puedes envíame tu base de datos a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas