Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 13
alexglez1255 Va por buen camino
Gracias JAFERA voy a intentar hacerlo asi, ... luego te digo como m fue..una pregunta los parametros de fechas inicio y final los defines como ftdate...? o como string.?

Última edición por alexglez1255 fecha: 13-08-2015 a las 01:35:55.
Responder Con Cita
  #2  
Antiguo 13-08-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Las fechas en los motores de datos son una lata, si lo pasas como string, intentará cotejarlo con la forma "yyyy-mm-dd", si no casa, pues normalmente lo intenta con el formato "mm-dd-yyyy" y si tampoco casa, normalmente da error. Si el formato lo pasas con formato "dd.mm.yyyy" (al usar puntos como separadores, lo interpreta como fecha española).

Pero lo más normal para dejarse de rollos es:
- BBDD en dialecto 3
- campo en formato date o timestamp
- Los sqls los hace como ha dicho salvo un detalle, las fechas que sean TDate o TDatetime y usando:
Código Delphi [-]
SQLL_Paga.Close;
SQLL_Paga.ParamByName('DESDEDATAI').AsDate := Trunc( DateTimePicker1.DateTime ); // trunc quita la parte horaria de una fecha
SQLL_Paga.ParamByName('FINSDATAF').AsDate := Trunc( DateTimePicker2.DateTime );
SQLL_Paga.ParamByName('ID_MECANIC').AsInteger := F_ModulDades.ActualitzaPID_Mecanic.Value;
SQLL_Paga.Open;

De esa forma es Delphi quien "se pelea con el motor de bases de datos" y le pasa la fecha en el formato correcto, sin tú saber cual es, ni tener que pelearte tú.

Ten mucho cuidado al usar DateToStr y StrTodate, porque lo codificará en el formato que delphi se le ocurra, (en realidad se basa en los formatos que tengas definidos en SysUtils y en la configuración regional de windows), para dejarte de rollos, usa FormatDatetime ('dd/mm/yyyy hh:nn', CampoFechaHora.AsDateTime).


Recuerda que en Delphi un TDateTime es un float donde la parte entera son los días transcurridos desde el día cero (30/12/1899) y la parte decimal es la hora, minutos, segundos y milisegundos.

También aconsejo usar esta otra variante en los sql:
Código SQL [-]
WHERE (DATA between :ESDEDATAI AND :FINSDATAF)
porque a la larga es más legible, aunque si quieres quitar la igualdad de fechas, acabas haciéndolo como antes con el ">" y el "<".


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 13-08-2015 a las 17:48:37.
Responder Con Cita
  #3  
Antiguo 13-08-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 13
alexglez1255 Va por buen camino
muchas gracias LEPE tus sugerencias me seran de mucha ayuda....sinceramente gracias
Responder Con Cita
  #4  
Antiguo 13-08-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 13
alexglez1255 Va por buen camino
cuando paso lo parametros como me lo suguieres...

Código Delphi [-]
procedure TFrmRepdeCobr.BtHacereporteClick(Sender: TObject);
 var
  fecfin,fecini:TDateTime;
  codcobstr:String;
begin
 With logicanegocio do
  begin
   codcobstr:=IntToStr(Coddecobr);
     CDSREpxCobYrango.Close;
      case Tpickrepcobr.ItemIndex of
      0:begin
        If Coddecobr=0 then
          begin
            ShowMessage('No ha escogido el cobrador ');
            EdCodCobr.SetFocus;
          end;
         CDSREpxCobYrango.Params.ParamByName('Fdesde').value:=trunc(TPFechini.Datetime);
         CDSREpxCobYrango.Params.ParamByName('Fhasta').value:=trunc(TPFechfinal.Datetime);
         CDSREpxCobYrango.Params.ParamByName('Cod_cobrador').value:=Coddecobr;
         end;
    end;
    CDSREpxCobYrango.open; //MARCA EL ERROR AL ABRIR EL CLIENDATASET
    CDSREpxCobYrango.DisableControls;
  end;
end;

TPFechini y TPFechfinal son de pickdates...
En la linea que indico da el siguiente error..

Invalid variant type conversion

tienes alguna idea por que..?
Responder Con Cita
  #5  
Antiguo 14-08-2015
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 alexglez1255
Cita:
Empezado por alexglez1255 Ver Mensaje
...
TPFechini y TPFechfinal son de pickdates...
En la linea que indico da el siguiente error..

Invalid variant type conversion

tienes alguna idea por que..?
Intenta de este modo:
Código Delphi [-]
...
var
  cds: TClientDataSet;
begin
  // (La línea siguiente es configurable desde el Object Inspector)
  DataSetProvider1.Options := DataSetProvider1.Options + [poAllowCommandText]; 

  cds := CDSREpxCobYrango;
  cds.Close;
  cds.CommandText:= 'SELECT * FROM ABONOS WHERE COD_COBRADOR = :CODCOB' + ' ' +
     'FECHA >= :FDESDE AND FECHA <= :FHASTA';
  cds.Params.ParamByName('CODCOB').Value := Coddecobr;
  cds.Params.ParamByName('FDESDE').Value := DateToStr(DateTimePickerDesde.Date);
  cds.Params.ParamByName('FHASTA').Value := DateToStr(DateTimePickerHasta.Date);
  cds.Open;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 14-08-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 13
alexglez1255 Va por buen camino
gracias ecfisa lo intentare
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
[Error] Missing operator or semicolon delphi wolfran_hack Varios 12 02-05-2013 15:23:28
Operacion Not applicable Yun-i Varios 5 25-04-2012 22:58:05
Operation Not Applicable koalko84 Conexión con bases de datos 2 29-03-2011 17:45:14
Could not convert variant of type (Null) into type (Integer) Alejo15x Varios 2 30-11-2010 17:35:50
Mensaje Operation no applicable zugazua2001 Varios 5 05-04-2006 10:01:30


La franja horaria es GMT +2. Ahora son las 18:34:54.


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