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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-01-2013
pjacob80 pjacob80 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 23
Poder: 0
pjacob80 Va por buen camino
como seria el ParamByName de una query pero del tipo fecha

hola amigos, estoy haciendo un insert en una base de datos firebird, y me tira error, a ver si alguien me puede ayudar, me dice que no existe el asdate, pero el campo es del tipo date, no se cual seria el indicador para eso...


el codigo:

Código Delphi [-]
   fprincipal.Query3.Active := false;
   fprincipal.Query3.SQL.Clear;
   fprincipal.Query3.SQL.Add('insert into temporaltrabajos (fecha, monto, vehiculo, detalle) values (:ffecha, :mmonto, :vvehiculo, :ddetalle)');
        fprincipal.query3.SQL.Add('where (codcliente=:codcliente)');
        fprincipal.Query3.sql.add('order by fecha');
        fprincipal.query3.ParamByName('ffecha').asdate:=fprincipal.query2.fieldByName('fecha').Asdate;
        fprincipal.query3.ParamByName('mmonto').Asfloat:=fprincipal.query2.fieldByName('monto').Asfloat;
        fprincipal.query3.ParamByName('vvehiculo').Asstring:=fprincipal.query2.fieldByName('vehiculo').Asstr  ing;
        fprincipal.query3.ParamByName('ddetalle').Asstring:=fprincipal.query2.fieldByName('detalle').Asstrin  g;
   fprincipal.Query3.Active := True;
   fprincipal.Query3.Open;

el el query2 tengo la consulta de la tabla trabajos, y quiero copiar 1 solo registro a la tabla temporaltrabajos (query3)

tal vez lo que hago es una burrada, y existe una forma mas facil.... no se...
Responder Con Cita
  #2  
Antiguo 05-01-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sin ver la estructura de la tabla, así a palos de ciego, seguramente es datetime
Responder Con Cita
  #3  
Antiguo 05-01-2013
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TfrAltas1Vendedor.BitBtn1Click(Sender: TObject);
begin
DmCli.IBDtsCli.Close;
DmCli.IBDtsCli.SelectSQL.Clear;
DmCli.IBDtsCli.SelectSQL.Add('Select * from Clientes ');
DmCli.IBDtsCli.SelectSQL.Add('Where Vendedor = :V ');
DmCli.IBDtsCli.SelectSQL.Add('And Alta Between :F1 And :F2 ');
DmCli.IBDtsCli.SelectSQL.Add('Order by Alta');
DmCli.IBDtsCli.ParamByName('V').AsString:=DmCli.IBDtsVendCODIGO.Value;
DmCli.IBDtsCli.ParamByName('F1').AsDate:=DtpkIni.Date;
DmCli.IBDtsCli.ParamByName('F2').AsDate:=DtpkFin.Date;
DmCli.IBDtsCli.Open;

DmCli.IBDtsCli.Last;
lbClientes.Caption:='Total Clientes: '+IntToStr(DmCli.IBDtsCli.RecordCount);
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 05-01-2013
pjacob80 pjacob80 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 23
Poder: 0
pjacob80 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sin ver la estructura de la tabla, así a palos de ciego, seguramente es datetime
el campo estaba definido como tipo date. ahora los cambie por timestamp para usar datetimepickers y que me guarde la hora tambien. el tema es que me guarda siempre la misma hora.... no se que pasa...

el codigo que uso es este:

Código Delphi [-]
        fprincipal.Query1.Active := false;
        fprincipal.query1.sql.clear;
        fprincipal.Query1.sql.Add('insert into pagos (fecha, cliente, monto, cobrador, codpago) values (:fecha, :cliente, :monto, :cobrador, :codpago)');
        fprincipal.Query1.ParamByName('fecha').AsDatetime:=datetimepicker1.Datetime;
        fprincipal.Query1.ParamByName('cliente').Asinteger:=spinedit1.value;
        fprincipal.Query1.ParamByName('monto').Asfloat:=strtofloat(edit3.text);
        fprincipal.Query1.ParamByName('cobrador').Asstring:=Fprincipal.Panelusuario.Caption;
        fprincipal.Query1.ParamByName('codpago').Asinteger:=codigodepago;
        fprincipal.Query1.Active := True;
Responder Con Cita
  #5  
Antiguo 05-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Thumbs up

Cita:
Empezado por pjacob80 Ver Mensaje
Código Delphi [-]
.
.
.

        fprincipal.Query1.ParamByName('fecha').AsDatetime:=datetimepicker1.Datetime;.
.
.
.
¿Y por qué no intentas

Código Delphi [-]
        ParamByName('fecha').AsDate := Trunc(datetimepicker1.Date);

A mí siempre me funciona y no se "atora" por cuestiones de "casteo", simplemente, continúa y guarda el valor correcto..., o de plano, irte por sustituir cada parámetro por su valor en una cadena al contruir tu sentencia SQL. De ésta forma, podrías utilizar el valor y evitarte dolores de cabeza. Suerte.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #6  
Antiguo 05-01-2013
pjacob80 pjacob80 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 23
Poder: 0
pjacob80 Va por buen camino
pero yo quiero guardarlo completo, fecha y hora, para con eso diferenciar registros que se fueron dando de alta, en distinto tiempo.
Responder Con Cita
  #7  
Antiguo 05-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por pjacob80 Ver Mensaje
pero yo quiero guardarlo completo, fecha y hora, para con eso diferenciar registros que se fueron dando de alta, en distinto tiempo.
No hay problema, no usas Trunc(), pero siempre puedes usar FormatDateTime() y componerlo directamente en el texto de la sentencia SQL que estás construyendo. O que el campo de tu tabla en donde estés guardando tome el timestamp automáticamente cada vez que se inserte un registro.

Digo, opciones hay, y cuando una estrategia falla, siempre se puede elegir otra.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #8  
Antiguo 05-01-2013
pjacob80 pjacob80 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 23
Poder: 0
pjacob80 Va por buen camino
claro, pero yo al meterlo directo, me lo guarda bien, ya no me da el error que me daba, el problema ahora es que me pone siempre la misma hora. no me la cambia al guardar.
Responder Con Cita
  #9  
Antiguo 05-01-2013
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 pjacob80 Ver Mensaje
hola amigos, estoy haciendo un insert en una base de datos firebird, y me tira error, a ver si alguien me puede ayudar, me dice que no existe el asdate, pero el campo es del tipo date, no se cual seria el indicador para eso...


el codigo:

Código Delphi [-]
   fprincipal.Query3.Active := false;
   fprincipal.Query3.SQL.Clear;
   fprincipal.Query3.SQL.Add('insert into temporaltrabajos (fecha, monto, vehiculo, detalle) values (:ffecha, :mmonto, :vvehiculo, :ddetalle)');
   fprincipal.query3.SQL.Add('where (codcliente=:codcliente)');
   fprincipal.Query3.sql.add('order by fecha');
   fprincipal.query3.ParamByName('ffecha').asdate:=fprincipal.query2.fieldByName('fecha').Asdate;
   fprincipal.query3.ParamByName('mmonto').Asfloat:=fprincipal.query2.fieldByName('monto').Asfloat;
   fprincipal.query3.ParamByName('vvehiculo').Asstring:=fprincipal.query2.fieldByName('vehiculo').Asstr  ing;
   fprincipal.query3.ParamByName('ddetalle').Asstring:=fprincipal.query2.fieldByName('detalle').Asstrin  g;
   fprincipal.Query3.Active := True;
   fprincipal.Query3.Open;

el el query2 tengo la consulta de la tabla trabajos, y quiero copiar 1 solo registro a la tabla temporaltrabajos (query3)

tal vez lo que hago es una burrada, y existe una forma mas facil.... no se...
Hola.

No entiendo el por qué de esta línea:
Código SQL [-]
fprincipal.query3.SQL.Add('where (codcliente=:codcliente)');
¿ Para que requerir la existencia si estas realizando un INSERT ? ¿ O deseabas modificar ?

Y de esta:
Código SQL [-]
fprincipal.Query3.sql.add('order by fecha');
¿ Usar ORDER BY en un ingreso ?

Probá creándote una tabla simple de prueba:
Código SQL [-]
CREATE TABLE HORARIOS (
    FECHA_DESDE      DATE,        
    FECHA_HASTA      TIMESTAMP
)

Luego, de este modo, no tendrías que tener ningún problema:
Código Delphi [-]
  with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO TABLA (FECHA_DESDE, FECHA_HASTA)');
    SQL.Add('VALUES (:PDESDE, :PHASTA)');
    ParamByName('PDESDE').AsDate     := DateTimePickerDesde.Date;   
    ParamByName('PHASTA').AsDateTime := DateTimePickerHasta.DateTime;
    ExecSQL;
  end;

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 05-01-2013 a las 21:39:12.
Responder Con Cita
  #10  
Antiguo 10-01-2013
pjacob80 pjacob80 is offline
Miembro
NULL
 
Registrado: ene 2013
Posts: 23
Poder: 0
pjacob80 Va por buen camino
Muchas gracias a todos por las respuestas!
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
no se si asi se diga; pero como hacer un lookup en un query jazmin OOP 3 31-05-2010 19:25:43
Como determinar si X Fecha esta en Hor. Verano pero en firebird???? AGAG4 Firebird e Interbase 1 05-04-2008 23:17:33
Como consulto un valor en MYSQL por un campo de tipo fecha? flystar MySQL 3 18-09-2007 02:01:33
¿Como convertir de texto a tipo fecha en firebird? Nelly SQL 5 22-02-2007 18:54:14
Como saber tipo de datos de query en builder c++ vivamotos C++ Builder 1 24-08-2006 11:35:17


La franja horaria es GMT +2. Ahora son las 07:09:34.


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