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!
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


0