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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2011
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Ayuda con error! expresion demasiado compleja en la expresion de consulta

Hola Amigos otraves con una inquietud

Ejecutanto este query he recibido un error el cual me dice
expresion demasiado compleja en la expresion de consulta

mi codigo es el siguiente

Código Delphi [-]
procedure TFregistroNumeros.Button2Click(Sender: TObject);
var campo11:string;
begin
    with qry_rep_numeros, sql do
  begin
    //Construye query con datos del reporte.
    Close;
    Clear;
    Add('SELECT =IIf([jugada]='+quotedstr(edit1.Text)+',"Primera",');
    Add('IIf([jugada]='+quotedstr(edit2.Text)+',"Segunda",');
    Add('IIf([jugada]='+quotedstr(edit3.Text)+',"Tercera",');
    Add('IIf([jugada]='+quotedstr(edit1.Text)+' + '+quotedstr(edit2.Text)+',"1ra Y 2da",');
    Add('IIf([jugada]='+quotedstr(edit2.Text)+' + '+quotedstr(edit1.Text)+',"2da Y 1ra",');
    Add('IIf([jugada]='+quotedstr(edit1.Text)+' + '+quotedstr(edit3.Text)+',"1ra Y 3ra",');
    Add('IIf([jugada]='+quotedstr(edit3.Text)+' + '+quotedstr(edit1.Text)+',"3ra Y 1ra",');
    Add('IIf([jugada]='+quotedstr(edit2.Text)+' + '+quotedstr(edit3.Text)+',"2da Y 3ra",');
    Add('IIf([jugada]='+quotedstr(edit3.Text)+' + '+quotedstr(edit2.Text)+',"3ra Y 2ra",');
    Add('IIf([jugada]='+quotedstr(edit1.Text)+' + '+quotedstr(edit2.Text)+' + '+quotedstr(edit3.Text)+',"Tripleta",');
    Add('IIf([jugada]='+quotedstr(edit2.Text)+' + '+quotedstr(edit3.Text)+' + '+quotedstr(edit1.Text)+',"Tripleta",');
    Add('IIf([jugada]='+quotedstr(edit3.Text)+' + '+quotedstr(edit2.Text)+' + '+quotedstr(edit1.Text)+',"Tripleta",');
    Add('IIf([jugada]='+quotedstr(edit3.Text)+' + '+quotedstr(edit1.Text)+' + '+quotedstr(edit2.Text)+',"Tripleta",');
    Add('IIf([jugada]='+quotedstr(edit2.Text)+' + '+quotedstr(edit1.Text)+' + '+quotedstr(edit3.Text)+',"Tripleta",');
    Add('IIf([jugada]='+quotedstr(edit1.Text)+' + '+quotedstr(edit3.Text)+' + '+quotedstr(edit2.Text)+',"Tripleta",');
    Add('" "))))))))))))))) AS campo11, *');
    Add('From ticket_detalle');
//    Add('where (fecha = ' +'#'+ FormatDateTime('yyyy-mm-dd', (DateTimePicker1.Date)) + '#)');
//    Add('and loteria = '+inttostr(combobox1.ItemIndex) + 'and (jugada = ' + quotedstr(edit1.text));
//    Add('or  jugada = ' + quotedstr(edit2.text) + 'or jugada = ' + quotedstr(edit3.text)+')');
//    Add('order by len(jugada),jugada');
    open;
    if eof then
    begin
      ShowMessage('No se encontraron registros. Por favor verífique los criterios indicados!.');
      exit;
      next;
    end;
    first;
  end;
  campo11 := qry_rep_numeros.FieldByName('campo11').AsString;
  rep_ganadores.Print;
end;
Responder Con Cita
  #2  
Antiguo 15-07-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Quizás tenga demasiados niveles de IF anidados.

¿Porqué no lees simplemente el campo jugada?. Luego con Delphi puedes traducir ese código al texto que quieras:
Código Delphi [-]
procedure TFregistroNumeros.Button2Click(Sender: TObject);
var campo11:string;
begin
    with qry_rep_numeros, sql do
  begin
    //Construye query con datos del reporte.
    Close;
    Clear;
    Add('SELECT jugada AS campo11, *');
    Add('From ticket_detalle');
//    Add('where (fecha = ' +'#'+ FormatDateTime('yyyy-mm-dd', (DateTimePicker1.Date)) + '#)');
//    Add('and loteria = '+inttostr(combobox1.ItemIndex) + 'and (jugada = ' + quotedstr(edit1.text));
//    Add('or  jugada = ' + quotedstr(edit2.text) + 'or jugada = ' + quotedstr(edit3.text)+')');
//    Add('order by len(jugada),jugada');
    open;
    if eof then
    begin
      ShowMessage('No se encontraron registros. Por favor verífique los criterios indicados!.');
      exit;
      next;
    end;
    first;
  end;
  if (qry_rep_numeros.FieldByName('campo11').AsString = edit1.Text) then campo11 := 'Primera' else
  if (qry_rep_numeros.FieldByName('campo11').AsString = edit2.Text) then campo11 := 'Segunda' else
  [...]
  else
     campo11 := 'Error';
  rep_ganadores.Print;
end;
Responder Con Cita
  #3  
Antiguo 15-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmmmm creo que tambien podrias usar un campo calculado
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 15-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mm me parece que lo que escorpionrojo43 quiere es ubicar las posibles combinaciones de una jugada de loteria o algo similar.

identificar de acuerdo a las bolillas emitidas (edits) cuantas jugadas hay que contengan alguna de las bolillas e identificar si tienen 1, 2 o 3 aciertos


o estoy equivocado?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 15-07-2011
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
mm me parece que lo que escorpionrojo43 quiere es ubicar las posibles combinaciones de una jugada de loteria o algo similar.

identificar de acuerdo a las bolillas emitidas (edits) cuantas jugadas hay que contengan alguna de las bolillas e identificar si tienen 1, 2 o 3 aciertos


o estoy equivocado?
oscarac tienes la razon esa la situacion
me podrian ayudar con eso?. queria utilizar "case" pero mi base de datos es access y no se como usar "case" ya que cuando lo intento me da error de sentencias. he buscado por muchas paginas y no he conseguido nada.
Responder Con Cita
  #6  
Antiguo 15-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
te cuento que no existe Case en Access y se Utiliza iif

mmm se me ocurre lo siguiente
me imagino que tu tienes un campo donde guardas la Jugada compuesta por 3 Numero

Ejemplo
01-06-24
09-24-03
03-07-70

Esa informacion Guardarla en otra tabla pero descompuesta por cada uno de las combinaciones

Ejemplo
Dato - Proviene
01 ----> 01-06-24
06 ----> 01-06-24
24 ----> 01-06-24
09 ----> 09-24-03
24 ----> 09-24-03
03 ----> 09-24-03
03 ----> 03-07-70
07 ----> 03-07-70
70 ----> 23-07-70
...
...

Entonces Solo "jalo" en el query las bolillas que se "salgan"
digamos que salen las bolillas 03-21-24

entonces las posibles combinaciones serian
por la Bolilla 03
09-24-03
por la Bolilla 24
09-24-03
01-06-24

Código SQL [-]
Select From tablaDescompuesta from Campo = :Edit1.text or Campo = :Edit2.Tex or Campo = :Edit3.text
entiendes la idea?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 15-07-2011
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
te cuento que no existe Case en Access y se Utiliza iif

mmm se me ocurre lo siguiente
me imagino que tu tienes un campo donde guardas la Jugada compuesta por 3 Numero

Ejemplo
01-06-24
09-24-03
03-07-70

Esa informacion Guardarla en otra tabla pero descompuesta por cada uno de las combinaciones

Ejemplo
Dato - Proviene
01 ----> 01-06-24
06 ----> 01-06-24
24 ----> 01-06-24
09 ----> 09-24-03
24 ----> 09-24-03
03 ----> 09-24-03
03 ----> 03-07-70
07 ----> 03-07-70
70 ----> 23-07-70
...
...

Entonces Solo "jalo" en el query las bolillas que se "salgan"
digamos que salen las bolillas 03-21-24

entonces las posibles combinaciones serian
por la Bolilla 03
09-24-03
por la Bolilla 24
09-24-03
01-06-24

Código SQL [-]
Select From tablaDescompuesta from Campo = :Edit1.text or Campo = :Edit2.Tex or Campo = :Edit3.text
entiendes la idea?

Lo siento oscar pero como que se me hace dificil de entender lo que me dices, podrias ser mas espesifico?
Responder Con Cita
  #8  
Antiguo 15-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
que en OTRA tabla grabes cada uno de los componentes de la Jugada con su respectiva jugada de origen
y que cuando consultes por cada uno de los edits ya tienes las jugadas ganadoras

Select From tablaDescompuesta from Campo = :Edit1.text or Campo = :Edit2.Tex or Campo = :Edit3.text
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 16-07-2011
escorpionrojo43 escorpionrojo43 is offline
Miembro
 
Registrado: abr 2010
Posts: 89
Poder: 15
escorpionrojo43 Va por buen camino
Smile Gracias a Todos. Ya esta solucionado

Muchas Gracias amigos. este club me ha ayudado mucho en esto.
Aquí pongo el código a disposición de quien lo necesite.

Código Delphi [-]
procedure TFregistroNumeros.Button2Click(Sender: TObject);
var campo11:string;
begin
    with qry_rep_numeros, sql do
  begin
    //Construye query con datos del reporte.
    Close;
    Clear;
    Add('SELECT IIf([jugada]= '+quotedstr(edit1.Text)+',"Primera", ');
    Add('IIf([jugada]= '+quotedstr(edit2.Text)+',"Segunda", ');
    Add('IIf([jugada]= '+quotedstr(edit3.Text)+',"Tercera", ');
//Determina el pale de 1ra y 2da, 1ra y 3ra, 2da y 1ra y 3ra y 1ra
    Add('IIf([jugada]= '+quotedstr(edit1.Text + edit2.Text)+' or [jugada] = '+ quotedstr(edit1.Text + edit3.Text)+' or [jugada]= '+quotedstr(edit3.Text + edit1.Text)+ 'or [jugada]= '+quotedstr(edit2.Text + edit1.Text)+',"P1",');
//Determinia el pale 2da y 3ra Y 3ra y 2da
    Add('IIf([jugada]= '+quotedstr(edit2.text) +'+'+ quotedstr(edit3.text)+' or [jugada] = '+ quotedstr(edit3.text) + '+' +quotedstr(edit2.text)+',"P2", ');
//Determina si es una tripleta
    Add('IIf([jugada]= '+quotedstr(edit1.text + edit2.text + edit3.text) + ' or [jugada]= ' + quotedstr(edit1.text +  edit3.text + edit2.text)+' or [jugada]=' + quotedstr(edit2.text + edit1.text + edit3.text)+  'or [jugada]= '+ quotedstr(edit2.text + edit3.text + edit1.text)+' or [jugada]= '+quotedstr(edit3.text + edit2.text + edit1.text)+ ' or [jugada]= '+quotedstr(edit3.text + edit1.text + edit2.text)+' ,"Tripleta",');
    Add('" ")))))) AS campo11, *');
    Add('From ticket_detalle');
    Add('where (  (Fecha = ' +'#'+ FormatDateTime('yyyy/mm/dd', datetimepicker1.Date)+'#'+')');
    Add('and   (loteria ='+ inttostr(Combobox1.ItemIndex)+')');
    Add('and   (  ([jugada] = ' + quotedstr(edit1.text)+ 'or  [jugada] = ' + quotedstr(edit2.text) + 'or [jugada] = ' + quotedstr(edit3.text)+')');
    Add('or    (  [jugada] =  ' + quotedstr(edit1.Text + edit2.Text)+' or [jugada] = '+ quotedstr(edit1.Text + edit3.Text)+' or [jugada]= '+quotedstr(edit3.Text + edit1.Text)+ 'or [jugada]= '+quotedstr(edit2.Text + edit1.Text)+')))');
    Add('order by len(jugada),jugada');
    open;
    if eof then
    begin
      ShowMessage('No se encontraron registros. Por favor verífique los criterios indicados!.');
      exit;
      next;
    end;
    first;
  end;
  campo11 := qry_rep_numeros.FieldByName('campo11').AsString;
  rep_ganadores.Print;
end;

Bueno solo me faltan algunos detalles de afinación y un par de condiciones mas. pero así es como me ha quedado. si creen que se puede mejorar me hacen saber.
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
Consulta demasiado compleja oscarac SQL 7 10-03-2011 14:46:16
Expresion regular Ivan_25 .NET 2 13-04-2009 09:58:47
La consulta es demasiado compleja mane Conexión con bases de datos 0 26-12-2007 10:00:07
Expresion Regular D-MO Varios 3 30-06-2007 18:51:59
expresion matematicas Irina Impresión 4 21-05-2003 00:49:51


La franja horaria es GMT +2. Ahora son las 15:24:07.


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