Visual Basic - No coiciden los tipos de datos con la expresion de criterios

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

No coiciden los tipos de datos con la expresion de criterios

Publicado por Gabriel (5 intervenciones) el 04/09/2021 16:49:15
Hola a todos... espero puedan ayudarme... soy nuevo con las BD de access y me encuentro con este error... les comento que la idea es que al dar click en un boton se llenen los datos en cuadros de texto en un formulario... para ello estoy intentando hacerlo con recordset pero no entiendo donde esta el error... la busqueda se hace por la id de registro que en mi caso es "REF"... les paso el codigo para que me puedan facilitar la correccion pertinente... desde ya GRACIAS.

Private Sub Search_Click()

Dim rts As DAO.Recordset, sql As String

sql = "SELECT * from [base] where 'REF LIKE' * '" & Me.TXTSearching & "'"

Set rts = CurrentDb.OpenRecordset(sql, dbOpenDynaset) <<<< aqui me marca el error el depurador

With rts
Forms![Form_AiO]![REF01] = REF
Forms![Form_AiO]![JF_INT02] = JF_INT
Forms![Form_AiO]![AREA02] = AREA
Forms![Form_AiO]![N_CAUSA02] = N_CAUSA
Forms![Form_AiO]![F_IN02] = F_IN
Forms![Form_AiO]![ESTADO02] = ESTADO
Forms![Form_AiO]![MATERIAL02] = MATERIAL
Forms![Form_AiO]![CARATULA02] = CARATULA
Forms![Form_AiO]![F_OUT01] = F_OUT
Forms![Form_AiO]![TXT_OUT01] = TXT_OUT
Forms![Form_AiO]![DEP_INT01] = DEP_INT
Forms![Form_AiO]![INFO02] = INFO
End With


End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

No coiciden los tipos de datos con la expresion de criterios

Publicado por raul (160 intervenciones) el 06/09/2021 16:02:10
Esta linea esta mal
sql = "SELECT * from [base] where 'REF LIKE' * '" & Me.TXTSearching & "'"

se escribe
SQL = "Select * from DATABASE where NOMBREDECAMPO like '" & me.txtseraching & "'" 'Basicamente te sobran las comilla simples en 'REF LIKE'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No coiciden los tipos de datos con la expresion de criterios

Publicado por Gabriel (5 intervenciones) el 06/09/2021 19:25:13
Buenas...
Gracias Raul

Segui tu consejo y al menos no me tira errores...

Ahora mi problema es que no me completa los campos del formulario con los datos del registro encontrado...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No coiciden los tipos de datos con la expresion de criterios

Publicado por Gabriel (5 intervenciones) el 06/09/2021 21:49:50
La idea es que me busque un registro por "referencia" o "codigo" y me complete el resto de los campos para poder modificar los datos y actualizar los registros.
De ser posible realizar la busqueda en una consulta union o en 2 tablas con los mismos datos

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

No coiciden los tipos de datos con la expresion de criterios

Publicado por raul (160 intervenciones) el 07/09/2021 18:35:25
Vamos por parte
1- Tu querias buscar un valor en una tabla en un tipo de campo de texto.

SQL = "select * from TABLA where campo = '" & CRITERIO & "'"
'busqueda especifica porque LIKE se emplea para busquedas genericas donde el CRITERIO se acompaña de comodines (_ %)

2- Quieres reubicar los datos en cajas de texto expecificas para luego editarlas

Dim RS as recordset, CNN as dodb.conecction : set rs = new recordset: set CNN as ADODB.conecction
CNN.open ...'Ya debes saber como establecer la conexion por ende me la reservo
SQL = "select * from TABLA where campo = '" & CRITERIO & "'"
RS.open SQL, CNN, , adOpenDynamic, adLockOptimistic
if rs.recordcount > 0 then
rs.movefirst
text1(0).text = rs!CAMPO1
text1(1).text = rs!campo2
.... 'Resto de los Campos
end if

o sea compruebas que el RS tenga algo antes de iniciar la copia del contenido.

OBS:
Es muy dificil modificar datos en una consulta que tenga union de 2 o mas tablas por varias cuestiones, las tablas pueden tener diversas claves, ID etc; con lo cual la posibilidad de errores crece exponencialmente.

Puntualiza tus ideas es posible que lo que intentas obtener es la posición exacta dentro de una tabla especifica utilizando como base el resultado de una consulta de 2 o mas tablas. Lo cual es diferente... y se llama subconsultas anidadas ejemplo

SQL = "select * from tabla1 where CAMPO_COMUN in (select CAMPO_COMUN from tabla2 where CAMPO1 = '" & Criterio & "'")

dicho de otra forma, vas a modificar los resgistro de la tabla1 que coincidan el resultado de una consulta en la tabla2. O sea que te recomiendo des más trigo de lo que intentas hacer y de ser posible sube un ejemplo.

PD: me gusta mas ADO que DAO para trabajar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

No coiciden los tipos de datos con la expresion de criterios

Publicado por Gabriel (5 intervenciones) el 10/09/2021 20:32:28
hola Raul...

la base va bastante encaminada... gracias...

te comento que de vba recien empiezo a meter mano y todabia no le encuentro la vuelta a establecer la conexion cnn.open... estuve buscando pero la mayoria establece conexiones con otros archivos y no se si siendo la tabla del mismo archivo tambien es necesario poner toda la ruta...
por ahora creo que es lo unico que me da error...

Dim RS as recordset
Dim CNN as conecction
set rs = recordset
set CNN as conecction
CNN.open ..."esto no lo se aun"
SQL = "select * from TABLA where campo = '" & CRITERIO1 & "' or campo = '" & CRITERIO2 & "'"
RS.open SQL, CNN, , adOpenDynamic, adLockOptimistic
if rs.recordcount > 0 then
rs.movefirst
text1(0).text = rs!CAMPO1
text1(1).text = rs!campo2
.... 'Resto de los Campos
end if

asi es como va quedando y ya desisti de las dos tablas... solo me voy a enfocar en una...

te agradezco que te tomes el tiempo para ayudarme...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

solucion... espero le sirva a alguien mas

Publicado por Gabriel (5 intervenciones) el 20/09/2021 20:42:24
señores... despues de darle varias vultas logre lo que necesitaba... lo dejo por aca por si alguien lo necesita.


Dim RS As DAO.Recordset, sql As String, db As DAO.Database
Set RS = Recordset
Set db = CurrentDb()

SQL = "select * from TABLA where campo1 = '" & CRITERIO1 & "' or campo2 = '" & CRITERIO2 & "'"
Set RS = db.OpenRecordset(sql, dbOpenForwardOnly)

If RS.RecordCount > 0 Then

With RS

Me.txt01 = !CAMPO1
Me.txt02 = !CAMPO2
Me.txt03 = !CAMPO3

End With

End If

End Sub


Saludos... Gabriel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar