Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2012
Avatar de naty_prog
naty_prog naty_prog is offline
Miembro
 
Registrado: sep 2010
Ubicación: los condores,calamuchita
Posts: 25
Poder: 0
naty_prog Va por buen camino
pregunta..

hola eficsa,queria consultarte por la sentencia que declaraste en la respuesta anterior:
Código Delphi [-]
function TForm_docente.MakeSQLString: string;
ya que no comprendo de la funcion MakeSQLstring.
gracias.
Responder Con Cita
  #2  
Antiguo 05-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
ya que no comprendo de la funcion MakeSQLstring
Hola naty_prog.

Voy a tratar de explicarla documentando el código de la función misma. (Que bién podría haberse llamado HacerCadenaSQL ).
Código Delphi [-]
function TForm_docente.MakeSQLString: string;
var
  TS: TStrings;
  i: Integer;
begin
  Result:= 'SELECT * FROM DOCENTE '; //Iniciar la sentencia SQL
  TS:= TStringList.Create;
  try
    (* Tipo documento *)
    if ComboBox1.ItemIndex > 0 then  // si es diferente a 'Ignorar'
      TS.Add('TIPODOC = :TIPO');     // se agregará parámetro ":TIPO" a WHERE
    (* Materia *)
    if Combobox2.ItemIndex > 0 then  // si es diferente a 'Ignorar'
      TS.Add('ID_DOCENTE = :MAT');   // se agregará parámetro ":MAT" a WHERE
    (* Localidad *)
    if ComboBox3.ItemIndex > 0 then  // si es diferente a 'Ignorar'
      TS.Add('ID_LOCALIDAD =:LOC');  // se agregará parámetro ":LOC" a WHERE
    (* Sexo *)
    if ComboBox4.ItemIndex > 0 then  // si es diferente a 'Ignorar'
      TS.Add('SEXO = :SEX');         // se agregará parámetro ":LOC" a WHERE
    (* Edad *)
    case ComboBox5.ItemIndex of      // ItemIndex = 0 => 'Ignorar'
      1: TS.Add('EDAD = :EDA'); // igual
      2: TS.Add('EDAD > :EDA'); // mayor
      3: TS.Add('EDAD < :EDA'); // menor
      4: TS.Add('EDAD BETWEEN :EDA AND :EDA2') // entre
    end;
    (* Comenzar armado de WHERE *)
    if TS.Count > 0 then         // Si hubo selección en algún ComboBox -> armar cadena
    begin
      Result:= Result + 'WHERE ';  // comienza con WHERE
      for i:= 0 to TS.Count-1 do
        if i < TS.Count-1 then   // ¿ Existen más comprobaciones delante ?
          Result:= Result + TS[i] + ' AND ' // si, agregar AND
        else
          Result:= Result + TS[i];          // no
    end;
    (* Orden  *)
    case ComboBox6.ItemIndex of   // ItemIndex = 0 => 'Ignorar'
      1: Result:= Result + ' ORDER BY NOMBRE_APELLIDO ASC';  // ascendente
      2: Result:= Result + ' ORDER BY NOMBRE_APELLIDO DESC' // descendente
    end
  finally
    TS.Free  // Liberar 
  end;
end;
Si no he sido suficientemente claro, hacemelo saber y gustoso trataré de explicarme de otro modo.

Un saludo.


Edito: Ya me olvidaba de ejemplificar el uso...
Código Delphi [-]
var
  CadenaSQL: string;
begin
   CadenaSQL:= MakeSQLString
end;
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-03-2012 a las 20:04:51.
Responder Con Cita
  #3  
Antiguo 05-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Me quedé pensando que quizá un ejemplo te pueda ayudar a entender el funcionamiento. Traté de hacerlo lo más simple posible, consta de seis TComboBox para la elección de los parámetros y un TButton para mostrar la consulta SQL generada.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-03-2012 a las 14:53:45.
Responder Con Cita
  #4  
Antiguo 06-03-2012
Avatar de naty_prog
naty_prog naty_prog is offline
Miembro
 
Registrado: sep 2010
Ubicación: los condores,calamuchita
Posts: 25
Poder: 0
naty_prog Va por buen camino
respuesta

hola ecfisa, gracias por tu explicacion,ahora lo comprendo mejor ya que me habia mareado un poco jaja tu ayuda y la de muchas otras personas en este foro me viene al pelo para poder avanzar con mi tesis que debo rendirla en agosto,asi que seguire recurriendo a sus aportes.gracias nuevamente...naty_prog
Responder Con Cita
  #5  
Antiguo 21-03-2012
Avatar de naty_prog
naty_prog naty_prog is offline
Miembro
 
Registrado: sep 2010
Ubicación: los condores,calamuchita
Posts: 25
Poder: 0
naty_prog Va por buen camino
respuesta

hola amigos,utilizando el codigo anterior,se me presento un problema con un combobox,el cual selecciona a los docentes de una tabla clasificandolos por los que se encuentran habilitados y por los que estan deshabilitados.el codigo que habia creado es el siguiente:

Código Delphi [-]
 case ComboBox_estado.ItemIndex of
    0:   //todas
      begin
      end;
    1:
      begin
        if(puse_where)then
          consulta:= consulta + ' and ESTADO=1'
        else
          begin
            consulta:= consulta + ' where ESTADO=1';
            puse_where:=true;
          end;
      end;
    2:
      begin
        if(puse_where)then
          consulta:= consulta + ' and ESTADO=0'
        else
          begin
            consulta:= consulta + ' where ESTADO=0';
            puse_where:=true;
          end;
      end;
  end;

este codigo quisiera tranformarlo para que me coordine con el resto del codigo anterior,es decir, utilizando el ejemplo de ecfisa.desde ya muchas gracias
Responder Con Cita
  #6  
Antiguo 21-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola naty_prog.

Si no entiendo mal es otro ComboBox mas, cuyos items serían:
  • Todos
  • Habilitados
  • Inhabilitados
Entonces creo que podrías agregar al codigo anterior algo como:
Código Delphi [-]
  ...
  (* Edad *)
  ...
  (* Docentes habilitados o no *)
    case ComboBoxEstado.ItemIndex of
      //0 = todos
      1: TS.Add('ESTADO = 1');
      2: TS.Add('ESTADO = 0');
    end;
  (* Comenzar armado de WHERE *)
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 21-03-2012
Avatar de naty_prog
naty_prog naty_prog is offline
Miembro
 
Registrado: sep 2010
Ubicación: los condores,calamuchita
Posts: 25
Poder: 0
naty_prog Va por buen camino
respuesta

hola ecfisa,eso era lo que precisamente necesitaba.muchisimas gracias.saludines
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
Nuevas unidades de medida. marcoszorrilla La Taberna 4 04-06-2008 19:56:29
Sumar montos a medida que se ingresa Analia29 Varios 6 27-10-2006 13:34:56
Botones a la Medida Vlady Varios 5 26-08-2005 20:54:27


La franja horaria es GMT +2. Ahora son las 12:00:59.


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