Condicion where and no coinciden los datos

Me puedes ayudar con lo siguiente, en el formulario de frmActualizar me solicitaron realizar un nuevo filtro que tome los registros del campo Nemonico T2 y que de acuerdo a este filtro se pueda escoger unos registros del campo NAPC y que estos se actualicen de acuerdo con el estado que se elija en el cuadro combo.

Ya incluí el texbox para el nemonico y funciona el filtro, del resultado de este cree otro textbox para digitar el registro de NAPC hasta acá todo va bien (lo hice así porque no se como pueda elegir más de un registro a la vez luego del primer filtro), el problema esta en que cuando voy al combo para realizar la actualización de acuerdo al estado que se elija me genera el error de no coincidencia de datos

Private Sub CboIdEstadoNemonico_AfterUpdate()
Dim strSQL As String
Dim CriterioUno As String, CriterioDos As String, Criterios As String
Dim rst As DAO.Recordset
Dim Numregistros As Long
'Primero nos aseguramos que el COD_LOTE que hemos escrito devuelve Registros
strSQL = "SELECT * FROM Reportes WHERE [Nemonico T2] = " & Me.TxtNemonico And NAPC = Me.TxtCodNAPC1 & ""
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
If Not rst.EOF And Not rst.BOF Then
        rst.MoveLast
        rst.MoveFirst
        Numregistros = rst.RecordCount
        MsgBox "Se van a actualizar  " & Numregistros & " Registros", vbInformation, "Actualización de Registros"
                Do While Not rst.EOF
                        rst.Edit
                                rst!IDESTADO = Me.CboIdEstadoNemonico.Column(0)
                                rst!ESTADO = Me.CboIdEstadoNemonico.Column(1)
                                rst!SUB_ESTADO = Me.CboIdEstadoNemonico.Column(2)
                                rst!ESTADO_SUBESTADO2 = Me.CboIdEstadoNemonico.Column(3)
                        rst.Update
                        rst.MoveNext
                        DoEvents
                Loop
Else
        MsgBox "Debe de haber un error en el dato o la NAPC no existe", vbCritical, "REPASAR EL CODIGO INTRODUCIDO"
End If
rst.Close
Set rst = Nothing
Me.Lista0.Requery
End Sub

te adjunto el còdigo gracias de antemano y el grafico hasta donde he llegado siguiendo tus instrucciones

2 respuestas

Respuesta
2

La respuesta de Jacinto es correcta, pero estás colocando mal las comillas en esta línea:

Criterios = "CriterioUno & " And " CriterioDos "

pues tiene que ser así:

Criterios = CriterioUno & "And " & CriterioDos 

Vaya! Se me comió un espacio antes del AND!

Criterios = CriterioUno & " And " & CriterioDos 

Respuesta
1

Justo acabo de llegar hace una escasa media hora.

Creo que el Fallo está en la SQL:

Sustituye la Línea que hay abajo por éstas, suponiedo que [Nemonico T2] sea un Texto

CriterioUno = “[Nemonico T2] = ‘” & Me.TxtNemonico & “’”

CriterioDos = “NAPC = '" & Me.TxtCodNAPC & "'"

Criterios = CriterioUno & “ AND “ CriterioDos
strSQL = "SELECT * FROM Reportes WHERE “ Criterios

Si [Nemonico T2] fuera un número, el CiterioUno sería>>

CriterioUno = “[Nemonico T2] = ” & Me.TxtNemonico

strSQL = "SELECT * FROM Reportes WHERE [Nemonico T2] = " & Me.TxtNemonico And NAPC = Me.TxtCodNAPC1 & ""

Ypor supuesto asegura  que los datos del ComboBox, sean los adecuados.

Cuando decimos Column(0), 0 es el indice de la 1ª Columna del Combo y así sucesivamente.

Ya me contarás >> Saludos >> Jacito

Me genera error nuevamente que no coinciden los tipos de datos en esta línea

Criterios = "CriterioUno & " And " CriterioDos "Criterios = "CriterioUno & " And " CriterioDos "

Y los dos campos son de tipo texto.

De igual manera te envíe la base a tu correo para ver si me ayudas a corregir el error.

Saludos

Julio: Mejor miro la Bd y te la devuelvo corregida. Un saludo >> Jacinto

Julio: Sobre el error>>

Es una buena señal de que el código funciona:

La causa:

CriterioDos = "NAPC = '" & Me.TxtCodNAPC & "'"

Debe de ser:

CriterioDos = "NAPC = '" & Me.TxtCodNAPC1 & "'"

Que es el nombre del TextBox donde estás informando. Saludos >Jacinto

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas