Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2006
Avatar de gusanita
gusanita gusanita is offline
Miembro
 
Registrado: dic 2005
Posts: 30
Poder: 0
gusanita Va por buen camino
Unhappy Error: Type mismatch in expression

Hola!!!

El siguiente es mi código:
Código Delphi [-]
DataModuleBD.Query.SQL.Clear;
DataModuleBD.Query.SQL.Add('Select ALU_NOM, ALU_SEM, ALU_ESP');
DataModuleBD.Query.SQL.Add('From ":BDBECAS_BAJDEF: DATPERAL"');
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = ' + validancontrol.Text);
DataModuleBD.Query.SQL.Add(';');
DataModuleBD.Query.Open;
Y cuando termina de leer la aultima linea me manda el error!!! (Type mismatch in expression).
El tipo de campo de ALU_CTRL es varchar.

Gracias por su atención!!!
__________________
No Decaigas que Vivir es Aprender...

Última edición por gusanita fecha: 27-01-2006 a las 20:15:51.
Responder Con Cita
  #2  
Antiguo 27-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si ALU_CTRL es de tipo texto, sustituye validancontrol.Text por QuotedStr(validancontrol.Text).

Por otra parte fíjate que el error es acerca de tipos de datos, por tanto sería recomendable que nos índicaras de qué tipos de datos son tus campos.

EDITO:

¡Ah!, veo que ya agregaste esa información

// Saludos
Responder Con Cita
  #3  
Antiguo 27-01-2006
Avatar de gusanita
gusanita gusanita is offline
Miembro
 
Registrado: dic 2005
Posts: 30
Poder: 0
gusanita Va por buen camino
Hola!!!

Para que es el QuotedStr(validancontrol.Text)???

Gracias por atender!!!!
__________________
No Decaigas que Vivir es Aprender...
Responder Con Cita
  #4  
Antiguo 27-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Suponte que validancontrol tiene el texto HU74832. Si examinas la sentencia SQL verás que queda así:

Código SQL [-]
Select ALU_NOM, ALU_SEM, ALU_ESP
From ":BDBECAS_BAJDEF: DATPERAL"
Where ALU_CTRL = HU74832

Lo cual es incorrecto por que faltan las comillas alrededor de HU74832. QuotedStr te pone esas comillas. Podrías hacerlo tú misma:

Código Delphi [-]
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = "' + validancontrol.Text + '"');

pero termina siendo bastante ilegible tantas comillas. De hecho, lo mejor siempre que uses consultas donde el valor de un campo varíe, es usar parámetros:

Código Delphi [-]
DataModuleBD.Query.SQL.Clear;
DataModuleBD.Query.SQL.Add('Select ALU_NOM, ALU_SEM, ALU_ESP');
DataModuleBD.Query.SQL.Add('From ":BDBECAS_BAJDEF: DATPERAL"');
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = :ctrl');
DataModuleBD.Query.SQL.Add(';');
DataModuleBD.Query.Open;

y sustituir el parámetro al momento de ejecutar la consulta:

Código Delphi [-]
DataModuleBD.Query.ParamByName('ctrl').AsString := validancontrol.Text;

Al usar AsString, ya le estás indicando que el parámetro es texto y se agregarán las comillas automáticamente. El uso de parámetros te deja un código mucho más prolijo y manejable.

// Saludos
Responder Con Cita
  #5  
Antiguo 27-01-2006
Avatar de gusanita
gusanita gusanita is offline
Miembro
 
Registrado: dic 2005
Posts: 30
Poder: 0
gusanita Va por buen camino
Hola!!!

y sustituir el parámetro al momento de ejecutar la consulta:

Código Delphi [-]
DataModuleBD.Query.ParamByName('ctrl').AsString := validancontrol.Text;

Disculpa pero, te refieres a colocar esta instruccion antes de la siguiente???

Código Delphi [-]
DataModuleBD.Query.Open;

Gracias nuevamente por tu pronta atención!!!!
__________________
No Decaigas que Vivir es Aprender...
Responder Con Cita
  #6  
Antiguo 27-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por gusanita
Disculpa pero, te refieres a colocar esta instruccion antes de la siguiente???


// Saludos
Responder Con Cita
  #7  
Antiguo 27-01-2006
Avatar de gusanita
gusanita gusanita is offline
Miembro
 
Registrado: dic 2005
Posts: 30
Poder: 0
gusanita Va por buen camino
Mi código quedó de la siguiente manera:

Código Delphi [-]
DataModuleBD.Query.SQL.Clear;
DataModuleBD.Query.SQL.Add('Select ALU_NOM, ALU_SEM, ALU_ESP');
DataModuleBD.Query.SQL.Add('From ":BDBECAS_BAJDEF: DATPERAL"');
DataModuleBD.Query.SQL.Add('Where ALU_CTRL = :ctrl');
DataModuleBD.Query.SQL.Add(';');
DataModuleBD.Query.ParamByName('ctrl').AsString := validancontrol.Text;
DataModuleBD.Query.Open;

Pero aun me sigue marcando el mismo error!!!

Nuevamente Muchas Gracias!!!
__________________
No Decaigas que Vivir es Aprender...
Responder Con Cita
  #8  
Antiguo 27-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Pues no veo nada extraño! Excepto dos cosas:

1. En 'From ":BDBECAS_BAJDEF: DATPERAL yo quitaría el espacio después de los segundos :

2. Supongo que es innecesario el ; al final de la consulta.

En Paradox, el punto 1 marca un error pero distinto al que mencionas. El punto 2 no genera problemas pero no sé qué base de datos uses y quizá sí afecte.

// Saludos
Responder Con Cita
  #9  
Antiguo 28-01-2006
Avatar de gusanita
gusanita gusanita is offline
Miembro
 
Registrado: dic 2005
Posts: 30
Poder: 0
gusanita Va por buen camino
Cita:
Empezado por roman
1. En 'From ":BDBECAS_BAJDEF: DATPERAL yo quitaría el espacio después de los segundos :
En efecto no debe de haber espacio, pero lo separe porque si no lo hago aparece una carita ":BDBECAS_BAJDEFATPERAL" y creí que seria más entendible si los separaba

Cita:
Empezado por roman
2. Supongo que es innecesario el ; al final de la consulta.
Utilizo otra línea para el ; porque normalmente se me olvida colocarlo.

Para la Base de Datos utilizo Access

Muchas gracias por tu Atención!!!
__________________
No Decaigas que Vivir es Aprender...
Responder Con Cita
  #10  
Antiguo 28-01-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por gusanita
En efecto no debe de haber espacio, pero lo separe porque si no lo hago aparece una carita ":BDBECAS_BAJDEFATPERAL" y creí que seria más entendible si los separaba
Usando las etiquetas ([delphi ],[sql ],....) no salen las caritas!

Si aun tienes problemas con la sentencias, pues yo te aconsejos que lo manejes en tiempo de dise~o, es decir, agregando la sentencias (con algun valor en "where") al dataset en su propiedad SQL, lo activas y chequea a ver si aun te da el error.

Yo, aveces, verifico la sentencias de esa forma en el dataset en tiempo de dise~o antes que en ejecucion.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #11  
Antiguo 28-01-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Disculpen mi ignorancia, nunca he trabajado en Paradox (si es este el caso) pero: ¿Esta bien que el nombre de la tabla vaya entre comillas dobles en esa consulta? Porque yo en otros manejadores siempre lo pongo sin comillas o entre corchetes: [:BDBECAS_BAJDEF: DATPERAL]. ¿Alguien que me oriente un poco?
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #12  
Antiguo 28-01-2006
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

A mí me parece raro los dos puntos luego de la clausula From

Hasta Luego -
__________________
No todo es como parece ser...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Excepciones Acker Tablas planas 6 06-08-2005 16:22:18
invalid expression in the select .... IVAND Firebird e Interbase 3 27-02-2005 02:52:12
type mismatch in expression noe SQL 1 12-02-2005 03:41:26
Database Desktop, Type Mismatch Expression en campo fecha fjolivares SQL 1 19-01-2005 14:45:53
Version Mismatch en Paradox Selene Tablas planas 1 11-08-2004 21:12:44


La franja horaria es GMT +2. Ahora son las 18:38:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi