Condiciones simultaneas en expresión Access VBA

Espero me puedan ayudar.

Necesito evaluar dos campos resultado de una consulta. Mi pregunta es si se pueden evaluar simultáneamente los dos campos de un registro de la consulta.

El código que llevo construido hasta ahora es el siguiente:

Option Compare Database
Option Explicit
Private Sub Comando0_Click()
Dim dbTemporal As DAO.Database
Dim consulta As DAO.Recordset 'Declaracion de variables
Dim strSQL As String
Dim nombreMacro As String
Dim nombreForm As String
Dim N_ACUERDO As Integer

N_ACUERDO = Me.NUMERO

Set dbTemporal = CurrentDb() 'activamos la BD

strSQL = "SELECT MOVIMIENTO_PRESUPUESTO.NUMERO_ACUERDO, MOVIMIENTO_PRESUPUESTO.TIPO_MOVIMIENTO, MOVIMIENTO_PRESUPUESTO.TIPO_RUBRO FROM MOVIMIENTO_PRESUPUESTO'"
Set consulta = dbTemporal.OpenRecordset(strSQL, dbOpenDynaset) ' Creamos el Recordset

If consulta.RecordCount > 0 Then 'Si la consulta tiene registros
Do while not consulta. Eof '(es decir: mientras no sea final de la tabla...)
If consulta!TIPO_MOVIMIENTO = 2 AND cconsulta!NUMERO_ACUERDO = N_ACUERDO then
MsgBox " YA EXISTE UNA ADICION CON ESE NÚMERO DE ACUERDO"
else
If consulta!NUMERO_ACUERDO = N_ACUERDO then
MsgBox " YA EXISTE ESE NÚMERO DE ACUERDO PERO NO ES UNA ADICION"
else
End If
End If
Rs. MoveNext ' Pasamos al siguiente registro:
Loop ' Cerramos el bucle

MsgBox " PUEDE CREAR UNA NUEVA ADICION CON ESE NUMERO DE ACUERDO"

Else
MsgBox " NO EXISTEN REGISTROS EN LA TABLA DE PRESUPUESTO"
End If

End Sub

Les agradezco su ayuda. Las correcciones y recomendaciones necesarias.

1 respuesta

Respuesta
1

Oscar: Lo que yo haría es >>
1.- Añadir un Campo “Calculado” a la Tabla y cuya fórmula de cálculo según los Nombres que yo veo sería
[TIPO_MOVIMIENTO] & [NUMERO_ACUERDO] y al campo le llamaremos por ejemplo “TextoSensible”
2.- El código de arriba lo convertiría en:
Dim CadBuscar As String
Dim Criterio As String
CadABuscar = 2 & Me.NUMERO
Criterio = “TextoSensible = ‘” & CadABuscar & “’”
If Nz(DCount(“TextoSensible”,”[MOVIMIENTO_PRESUPUESTO]”,Criterio),0) > 0 Then
‘Aquí el mensaje o lo que quieras hacer
End If
Ya me comentarás. Saludos >> Jacinto

¡Gracias! 

Muy amable por su colaboración Jacinto.

Hola Jacinto. De nuevo le agradezco su colaboración y su tiempo.

El código que adjunto a continuación está funcionando. Pero quisiera saber como puedo mejorarlo y cómo podría escribir la instrucción para abrir los formularios correspondientes.

GRACIAS POR SU TIEMPO Y COLABORACIÓN

option compare database

option explicit

private sub comando8_click()

dim dbtemporal as dao.database

dim consulta as dao.recordset 'declaracion de variables

dim strsql as string

dim nombremacro as string

dim nombreform as string

dim n_acuerdo as integer

n_acuerdo = me.texto5

set dbtemporal = currentdb() 'activamos la bd

strsql = "select movimiento_presupuesto.numero_acuerdo, movimiento_presupuesto.tipo_movimiento, movimiento_presupuesto.tipo_rubro from movimiento_presupuesto;" 'escribimos la consulta sql

set consulta = dbtemporal.openrecordset(strsql, dbopendynaset) ' creamos el recordset

if consulta.recordcount > 0 then 'si la consulta tiene registros

  do while not consulta.eof  '(es decir: mientras no sea final de la tabla...)

    if consulta!numero_acuerdo = n_acuerdo and consulta!tipo_movimiento = 2 then

        msgbox " ya existe una adicion con ese número de acuerdo. debe editar"

        ' aquí se debe abrir un formulario para editar los datos de ese número de acuerdo

        exit do

    else

        if consulta!numero_acuerdo = n_acuerdo then

            msgbox " ya existe ese número de acuerdo pero no es una adicion"

            msgbox " usted debe digitar otro número de acuerdo"

            exit do

        else

        end if

    end if

    consulta.movenext  ' pasamos al siguiente registro:

  loop ' cerramos el bucle

msgbox " puede crear una nueva adicion con ese número de acuerdo"

' aqui se debe abrir formulario registrar nueva adicion ingresos

else

msgbox " no existen registros en la tabla de presupuesto"

end if

end sub

Oscar: Dependerá de como quieras abrir el Formulario.

Para no repetir lo que ya está escrito >>

A.- En la ayuda de Access si miras Docmd. OpenForm, verás que lo explica con algún ejemplo y en ésta Página de Microsoft hace lo mismo.

https://msdn.microsoft.com/es-es/library/office/ff820845.aspx 

Pone Access 2013 pero es válido para todos. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas