PROBLEMA EN CONSULTA VB6.0 CONTRA BBDD ACCESS 2003

29/01/2011 - 02:42 por Ironpony | Informe spam
Uso VB 6.0 con Access 2003, y hago esta consulta

Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE='" & Trim(txtCategoriaPadre) &
"'")

Siendo CATEGORIA_PADRE un campo texto de 40 caracteres de la tabla
CATEGORIAS_PADRE y txtcategoriaspadre un texbox de tamaño máximo 40
caracteres

pues me da el error "13" de que no coinciden los tipos

¿como se puede solucionar?

si el campo a comparar es numérico en vez de texto ¿me pueden poner
algún ejemplo de como se haría?

muchas gracias.

Preguntas similare

Leer las respuestas

#1 Emilio
29/01/2011 - 07:58 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
Hola!

si el campo fuera numérico sobrarían las comillas simples

Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE=" & Trim(txtCategoriaPadre))

El problema de tipos puede ser debido a que estas utilizando DAO, pero
tienes referenciado ADO.

Saludos a todos
Emilio [MS-MVP Access 2006/11]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"Ironpony" escribió en el mensaje de
noticias:

Uso VB 6.0 con Access 2003, y hago esta consulta

Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE='" & Trim(txtCategoriaPadre) &
"'")

Siendo CATEGORIA_PADRE un campo texto de 40 caracteres de la tabla
CATEGORIAS_PADRE y txtcategoriaspadre un texbox de tamaño máximo 40
caracteres

pues me da el error "13" de que no coinciden los tipos

¿como se puede solucionar?

si el campo a comparar es numérico en vez de texto ¿me pueden poner
algún ejemplo de como se haría?

muchas gracias.
Respuesta Responder a este mensaje
#2 Ironpony
29/01/2011 - 16:08 | Informe spam
Perdona me has explicado perfectamente si el campo es numérico, pero
el caso del error ¿ si el campo fuera alfanumérico, como se haría?
Respuesta Responder a este mensaje
#3 Emilio
30/01/2011 - 08:27 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
Hola!
un campo alfanumérico es en realidad alfabético, por tanto se trata como
tal.

Saludos a todos
Emilio [MS-MVP Access 2006/11]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"Ironpony" escribió en el mensaje de
noticias:

Perdona me has explicado perfectamente si el campo es numérico, pero
el caso del error ¿ si el campo fuera alfanumérico, como se haría?
Respuesta Responder a este mensaje
#4 David D
30/01/2011 - 13:54 | Informe spam
Hola, llevo tiempo sin utilizar VB6, pero creo recordar que un objeto
no se puede concatenar a una cadena de caracteres, que es lo que tu
estas haciendo.

La consulta debería ser:
Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE='" &
Trim(txtCategoriaPadre.text) & "'")

Un saludo

On 29 ene, 02:42, Ironpony wrote:
Uso VB 6.0 con Access 2003, y hago esta consulta

Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE='" & Trim(txtCategoriaPadre) &
"'")

Siendo CATEGORIA_PADRE un campo texto de 40 caracteres de la tabla
CATEGORIAS_PADRE y txtcategoriaspadre un texbox de tamaño máximo 40
caracteres

pues me da el error "13" de que no coinciden los tipos

¿como se puede solucionar?

si el campo a comparar es numérico en vez de texto ¿me pueden poner
algún ejemplo de como se haría?

muchas gracias.
Respuesta Responder a este mensaje
#5 Leonardo Azpurua
31/01/2011 - 15:09 | Informe spam
"Ironpony" escribió:

Uso VB 6.0 con Access 2003, y hago esta consulta

Set rsCategoriaPadre = db.OpenRecordset("Select * from
CATEGORIAS_PADRE where CATEGORIA_PADRE='" & Trim(txtCategoriaPadre) &
"'")

Siendo CATEGORIA_PADRE un campo texto de 40 caracteres de la tabla
CATEGORIAS_PADRE y txtcategoriaspadre un texbox de tamaño máximo 40
caracteres

pues me da el error "13" de que no coinciden los tipos

¿como se puede solucionar?

si el campo a comparar es numérico en vez de texto ¿me pueden poner
algún ejemplo de como se haría?


Hola,

Si estás usando DAO, y si 'db' es un objeto de tipo DAO.Database y
'rsCategoriasPadre' es un objeto de tipo DAO.Recordset, la consulta
debería funcionar, a menos que el contenido de txtCategoriaPadre
pudiera estar causando algun tipo de problema.

Es conveneinte usar una función para formatear las variables de texto
antes de usarlas en una consulta, por ejemplo:

Public Function strSQL(arg As String) As String
strSQL = " ' " & Replace(arg, " ' ", " ' ' ") & " ' "
End Function
(los apóstrofes fueron delimitados con un espacio para facilitar la
lectura, estos espacios no van en el código real)

y luego:

query = "SELECT * " & _
"FROM Categorias_Padre " & _
"WHERE CategoriaPadre = " &
strDB(Trim(txtCategoriaPadre))
Set rs = db.OpenRecordset(query)

La asignación de la consulta a una variable antes de la ejecución de
la sentencia SQL te permite poner un punto de parada en la instrucción
OpenRecordset y consultar el contenido de la sentencia tal como va a
ser pasada al servidor.

Para incluir un número, es conveniente convertir el numero a cadena
utilizando la funcion Str:

Public Function numSQL(ByVal arg)
numSQL = Trim(Str(arg))
End Function

La "conversión implícita" de numeros a cadenas respeta la
configuracion regional.

Si tu separador decimal es la coma, escribir a# = 1.2: s$ = a#:
Debug.Print s$ hará aparecer en la ventana de ejecución inmediata 1,2.
Si escribes escribir a# = 1.2: s$ = Str(a#): Debug.Print s$, aparecerá
en cambio 1.2. En una sentencia SQL se espera que el separador
decimal sea SIEMPRE el punto, porque la coma es el separador de las
listas de argumentos.


Salud!
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida