Delphi - Problema de tipos con Query

   
Vista:

Problema de tipos con Query

Publicado por Santiago (1 intervención) el 06/10/2011 13:57:24
Soy bastante nuevo en Delphi, y de a poco me voy acomodando con las funciones que ofrece. Estoy desarrollando una pequeña aplicacion de control de inventarios, y para hacer una consulta, necesito de una Query. Como nunca hice una en Delphi, me parece que algo estoy haciendo mal.

Yo tengo una tabla general, que contiene elementos, cada uno identificado con un codigo de elemento.
En otra tabla, en memoria, tengo guardados unos Codigo de elemento, que son los que necesito que queden en la tabla general.

Es decir...TablaGeneral: Cod_Elemento...15; 21; 25; 26; 28 - MemoryTable: Cod_Elemento...21; 25

Lo que tengo que lograr es filtrar la tabla general de manera que solo queden el registro con cod 21 y 25; o hacer una consulta que devuelva solo esos registros. En tabla general, cada registro tiene varios campos, que obviamente tienen que acompañar al Cod_Elemento en la consulta.

Como les decía, pensé en una Query, y mi código es el siguiente...

En la Unit del Form:


//Con este ciclo pongo todos los ID de la tabla en mem. en un string. Ej1: 20, 24, 27

MemoryTable1.First;
cadena:=inttostr(MemoryTable1Cod_Elemento.value);
MemoryTable1.next;
while not MemoryTable1.eof do
Begin
cadena:=cadena + ', ' + inttostr(MemoryTable1Cod_Elemento.value);
MemoryTable1.Next
End;

//con lo que sigue, paso como parámetro cadena, que quedaría como el Ej1.
If camposllenos = 3 then
Begin
Query1.ParamByName('PARAMETRO').AsString:= cadena;
Query1.Open;
End;

En la query:


SELECT * FROM General
WHERE General.Cod_Elemento IN
(:PARAMETRO)

Y en las propiedades del parámetro, tengo que...


DataType: ftString
ParamType: ptUnknown
Value Type: String
Cuando ejecuto, al llegar al Open de la Query, me sale este error de tipos "Type Mismatch in expression".

Que estoy haciendo mal? Que solucion me pueden dar? GRACIAS!
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

Problema de tipos con Query

Publicado por E.T. (1108 intervenciones) el 06/10/2011 17:49:13
La solucion es en realidad sencilla, en lugar de usar parametros puedes usar la cadena que ya tienes con los codigos de elemento de esta forma:

1
2
3
Query1.sql.add('SELECT * FROM General');
Query1.sql.add('WHERE General.Cod_Elemento IN');
Query1.sql.add('('+cadena+')');
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