Como uso el operador "or" en select from TABLA where camp1 = 'SI' and camp2 or camp3 =

Me gustaría que me ayudaras en una sentencia que no me funciona bien:

.CommandText = "select * from CANVIS WHERE aprovat = 'SI' And agent1 or agent2 = (" & usuari & ") " . Si uso :

.CommandText = "select * from CANVIS WHERE aprovat = 'SI' And agent1 = (" & usuari & ") "

Funciona correctamente pero necesito que se cumplan las tres condiciones. Se trata de cargar en un DataGrid los campos de una tabla donde la variable usuari puede ser un valor en el campo agent1 o en el campo agent2.

1 Respuesta

Respuesta
1

Podrías intentar esto.

.CommandText = "select * from CANVIS WHERE aprovat = 'SI' And agent1 = '" & usuari & "' or agent2 = '" & usuari & "' " . 

Gracias por tu pronta respuesta, he probado con tu indicación y me da el siguiente error

Dim cn3 As New ADODB.Connection
Dim rs3 As New ADODB.Recordset
Dim cmd3 As New ADODB.Command

cn3.CursorLocation = adUseClient
cn3.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\QUADRANT.mdb;Persist Security Info=False"
With cmd3
.ActiveConnection = cn3
.CommandText = "select * from CANVIS WHERE aprovat = 'SI' And agent1 = '" & usuari & "' or agent2 = '" & usuari & "' "
End With
With rs3
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open cmd3 AQUÍ DA EL ERROR " NO COINCIDEN LOS TIPOS DE DATOS EN LA EXPRESIÓN DE CRITERIOS
Set DataGrid3.DataSource = rs3

Qué te parece ? De nuevo muchas gracias por tu tiempo

En tu tabla, agent1 y agent2 son de tipo char o varchar, ¿cierto?

¿Y a su vez tu variable usuari es de tipo string?

Hola !!!

Te explico la idea que estoy trabajando. Huelga decir que soy un principiante.

Una organización tiene un número de empleados llamados "agent ". Estos tienen asignados unos turnos de trabajo durante todo el año, MA mañana TA tarde NO noche FE festivo . Estos pueden solicitar cambiar esos turnos entre ellos. La idea es automatizar la solicitud.

El agent1 solicita cambio com el agent2 para un día y mes concreto. El agent2 debe de confirmar su conformidad y el administrador aprobar el cambio.

Cuando un usuario abre su sesión en unos grids puede ver las solicitudes recibidas y dar el conforme. Puede realizar solicitudes en otro grid. Puede ver las solicitudes pendientes de confirmar en otro y (aquí viene el problema) debería de ver las tanto las enviadas y recibidas aprobadas por el administrador.

En la tabla agent1, agent2 y usuari son numero doble y la variable usuari es Variant.

Hay una primera tabla que contiene los usuari (numero doble) y contraseña (texto) al ejecutar la aplicación un form pide usuari y contraseña, va a la tabla y si es correcto guarda la variable publica usuari (variant) y abre otro form donde en Tabs tiene los grids que he reseñado antes. Si uso la sentencia

.CommandText = "select * from CANVIS WHERE aprovat = 'SI' And agent1 = (" & usuari & ") or agent2 = (" & usuari & ")"

funciona pero no respeta las tres condiciones, muestra registros que el aprobado is null porque aún está pendiente de aprobar.

En el resto de grids no tengo ningún problema:

.ActiveConnection = cn5
.CommandText = "select * from CANVIS WHERE agent2 = (" & usuari & ") and enviat = 'SI' and confirmat is null"

porque las sentencias siempre son "and".

Si quieres te envío todo el código.

Muchísimas gracias por atenderme y por tu tiempo

Podrías probar esto:

CommandText = "select * from CANVIS WHERE aprovat = 'SI' And (agent1 = " & val(usuari) & " or agent2 = " & val(usuari) & " ) "

podrías descartar llevando la sentencia a la misma bd, no se cual usaras en tu caso.

Si después de esto no te funciona.

Entonces i me mandas tu código completo. Me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas