Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-06-2020
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 22
marcial Va por buen camino
Gracias por tu respuesta. Perdona, pero me puedes decir dónde defino f1, f2, v1 y v2?, puede ser el edit que utilizo para introducir la fecha?. Lo siento pero nunca he trabajado con parámetros. Hay alguna forma de evitar los parámetros?.
Muchas gracias
Responder Con Cita
  #2  
Antiguo 03-06-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 914
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por marcial Ver Mensaje
...dónde defino f1, f2, v1 y v2?
Los parámetros los defines en el sql y deben ser antecedidos por dos puntos ":Variable", es mas pueden ser llamados igual que el nombre de campo que quieres filtrar.

Por ejemplo, si utilizas TpFIBDataset o TpFIBQuery
Código Delphi [-]
       {Si usas TpFIBDataset} 
       SQL.Select.add('Select Nombre, apellido');
       SQL.Select.add('from clientes');
       SQL.Select.add('where apellido = :apellido and edad>= :edad');

       {Si usas TpFIBQuery}
       SQL.add('Select Nombre, apellido');
       SQL.add('from clientes');
       SQL.add('where apellido = :apellido and edad>= :edad');

        {Para asignar un valor al parametro debes hacerlo como sigue...}
        .ParamByName('Apellido').AsString:='Marcial'; 
        .ParamByName('Eda').AsInteger:= 45; 

        .ParamByName('Apellido').AsString:=editApellido.text; //Usando valor de TEdit...
        .ParamByName('Edad').AsInteger:= strtoint(editEdad.text); //Usando valor de TEdit...
Yo te recomiendo utilizar parámetros para aplicar filtros en las consultas, es mucho mas claro.

Ademas cuando los parámetros son de tipo string, solo se encarga de asignar las comillas y ya no te preocupas de ese tema...

Código SQL [-]
 'apellido=' + ''' +UpperCase(EditApellido.Text)+ ''') ' +

v/s

Código SQL [-]
apellido = :apellido


Espero haber aclarado en algo tus dudas...
Responder Con Cita
  #3  
Antiguo 03-06-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por marcial Ver Mensaje
Hay alguna forma de evitar los parámetros?
No lo evites, al contrario, es lo mejor.
Responder Con Cita
  #4  
Antiguo 03-06-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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:
Empezado por marcial Ver Mensaje
Hay alguna forma de evitar los parámetros?.
¿ Por qué motivo harias eso ?

Como te indican, siempre que se pueda, es la mejor opción.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 03-06-2020
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 22
marcial Va por buen camino
Desde luego que siempre estáis ahi para ayudar. Muchas gracias por vuestras recomendaciones y consejos. Lo probará como decís y ya que no tiene demasiada complicación seguro que solucionaré el problema.
Gracias de nuevo.
Responder Con Cita
  #6  
Antiguo 04-06-2020
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para que tengas claro la importancia de usar parametros:

https://es.wikipedia.org/wiki/Inyección_SQL
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 04-06-2020
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Saludos, el problema de manejar las fechas de esa manera es que el motor Firebird las maneja en formato mm/dd/aaaa y en mi país las fechas se deben representar dd/mm/yyy. Para manejar las fechas sin el uso de parámetros me toco elaborar (no me acuerdo si fue copiada de algún la lado) una función para que tome un TDate y lo devuelva una cadena.

Código Delphi [-]
function _fecha_delimitada (fecha: TDateTime; caracter_delimitador: string) : string;
var
  anno, mes, dia: word;
begin
  DecodeDate(fecha,anno,mes,dia);
  if mes < 10 then
    if dia < 10 then
      result:=caracter_delimitador+'0'+InttoStr(mes)+'/'+'0'+InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
    else
      result:=caracter_delimitador+'0'+InttoStr(mes)+'/'+    InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
  else
    if dia < 10 then
      result:=caracter_delimitador+    InttoStr(mes)+'/'+'0'+InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
    else
      result:=caracter_delimitador+    InttoStr(mes)+'/'+    InttoStr(dia)+'/'+InttoStr(anno)+caracter_delimitador
end;
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #8  
Antiguo 05-06-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No, firebird no guarda los campos fecha de esa manera, los campos fecha y los fechahora, son números, ejemplo: 34248,17238173917

La parte entera 34248 son los días transcurridos desde 31/12/1895 (creo recordar, no recuerda la fecha exacta) y la parte decimal es la hora, cuando llega a 34248.999999999999 pasa a 34249.00000000000 que es un día más.
Responder Con Cita
  #9  
Antiguo 05-06-2020
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Hola Casimiro, no me refiero a la representación interna sino a la forma en que Firebird muestra los campos Date al usuario
__________________
Luis Fernando Buelvas T.
Responder Con Cita
Respuesta



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
Ayuda BD Access? Ayuda al modificar!! DarkArias Conexión con bases de datos 4 24-08-2013 23:47:41
Instalar Ayuda (.HLP) en la Ayuda de Delphi? MasterXP Varios 6 12-04-2006 06:57:49
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 00:15:18
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59
Ayuda Con Instalacion De Archivos De Ayuda Legolas Varios 1 01-12-2003 14:48:03


La franja horaria es GMT +2. Ahora son las 17:30:04.


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