Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2024
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 71
Poder: 10
GINMARMENOR Va por buen camino
Operador IN en campos VARCHAR O STRING

Buenas tardes,

Tengo un problema con el operador IN, ya que si me funciona en campos INTEGER, pero no hace lo mismo en campos STRING Ó VARCHAR.

Digamos que poniendo un ejemplo sencillo, dispongo de una Tabla llamada INVENTARIO de libros con tres campos:

EXIST: integer
GENERO: varchar
TITULOS: varchar

Utilizo la siguiente consulta y me da bien el resultado sin problema, me devuelven Generos que tienen 5,3,8 en existencias.
Código SQL [-]
               var
                   NumExist:string;


                        Begin
                          NumExist:='(5,3,8)';  
                       
                          IBQueryInvent.SQL.Clear;
                          IBQueryInvent.SQL.Add('select * from INVENTARIO where EXIST IN '+ NumExist);  // EXIST ES TIPO INTEGER
                          IBQueryInvent.Open;
                        end;



En cambio si hago lo mismo con el campo GENERO que es tipo VARCHAR

Código SQL [-]
   var
                       TipoGen:string;


                        Begin
                          TipoGen:='(Comedia,Drama)';  
                       
                          IBQueryInvent.SQL.Clear;
                          IBQueryInvent.SQL.Add('select * from INVENTARIO where Genero IN '+ TipoGen);  // GENERO es tipo VARCHAR
                          IBQueryInvent.Open;
                        end;

'

En este caso me da el siguiente error: 'Attemp to execute an unprepared dynamic SQL statement.

En caso de que el formato lo cambiara por:


TipoGen:='(''Comedia,Drama'')'; el error sería 'Conversion error from string 'Comedia,Drama'



En cambio utilizando sólo uno si funciona, pero necesito que sean varios y aleatorios.

TipoGen:='(''Comedia'')'; si funciona

He intentado varias posibilidades, en internet, en este foro y no distinguen entre campo tipo varchar o tipo Integer.
Responder Con Cita
 


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
Dbgrid solo muestra campos tipo INT, campos varchar no los muestra pollo_c C++ Builder 2 10-09-2017 21:42:47
Sin campos Varchar en el TSQLQery Chandra_ Lazarus, FreePascal, Kylix, etc. 6 27-09-2012 23:42:20
sumar dos campos varchar richy08 MySQL 5 08-01-2008 13:17:39
trim en campos varchar galmacland SQL 3 12-03-2005 02:40:23
Concatenar campos varchar en triggers Iceman Firebird e Interbase 1 14-06-2004 21:24:26


La franja horaria es GMT +2. Ahora son las 16:53:20.


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