Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con el formatos de Fechas en SQL (https://www.clubdelphi.com/foros/showthread.php?t=29216)

zorrocarolini 16-01-2006 15:47:08

Problemas con el formatos de Fechas en SQL
 
HOLA

Soy nuevo en el Foro y estoy orgulloso de pertenecer ahora al mismo y espero como tantos de Ustedes poder ayudar y que me ayuden. Desde ya Muchisimas Gracias.

Tengo un problema y es que he hecho un programita con un DBGrid , un Botón , dos edits y un Query. Lo que hace este sistemita es listar todos los empleados y sus ventas totales (ya sumadas) en un periodo dado mediante una consulta SQL.

Pero el problema es que en los edits solo puedo ingresar las fechas en formato ‘mm/dd/yyyy’. O sea si escribo 12/20/1994 no hay
Problemas pero si escribo: 20/12/1994 me da un error y no encuentro la forma de ingresar un dato en formato ‘dd/mm/yyyy’ mediante un código.

El sistemita trabaja con dos tablas paradox una llamada employee y la otra orders.
Y aquí les mando el codigo:
Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
desde, hasta: string ;

begin
with Query1 do begin
Active := False;
with SQL do begin
Clear;
desde := txtdesde.text;
hasta := txthasta.text;
QUERY1.SQL.ADD('SELECT employee.EmpNo, LastName, FirstName,');
QUERY1.SQL.ADD('SUM(ItemsTotal) AS Ventas');
QUERY1.SQL.ADD('FROM employee LEFT JOIN orders');
QUERY1.SQL.ADD('ON employee.EmpNo = orders.EmpNo');
QUERY1.SQL.ADD('WHERE SaleDate BETWEEN "' + desde + '" AND "' +
hasta + '"');
QUERY1.SQL.ADD('GROUP BY employee.EmpNo, LastName, FirstName');
end;
Active := True;
end;
He mirado ya en el foro Sql y vi un problema parecido al mío pero no entiendo lo que debo escribir en el código, ni donde (si en el Query o en editor). Como ya ven SQL en Delphi no es mi fuerte ya que para eso necesitaría un tuto de SQL en delphi paso a paso y hasta ahora no lo he encontrado. Les agradecería desde ya sus valiosas respuestas. Gracias Saludos.

PD: para sacar la fecha la sentencia lo hace desde la tabla orders del campo SaleDate el cual es del tipo Date.

ContraVeneno 16-01-2006 17:56:28

  • En lugar Edits, utiliza TDateTimePickers
  • Consulta la función FormatDateTime en la ayuda de delphi
  • Lee la guía de estilo
  • Si ya tienes un "With Query1" y un "With SQL", no es necesario que pongas "Query1.SQL.Add"
  • Podrías no usar las variables desde y hasta y poner directamente los controles dentro de tu query


Bienvenido a los foros :D

jachguate 16-01-2006 20:40:37

Para evitar estos problemas con el formato de fechas, prefiero trabajar con parámetros:

Código SQL [-]
select *
  from tabla
 where fecha = :fecha;

Código Delphi [-]
  Query1.ParamByName('fecha').AsDateTime := dtpDesde.DateTime;
  Query1.Open;

Hasta luego.

;)

zorrocarolini 18-01-2006 21:37:15

Agradecimiento
 
Hola Chicos:

Desde ya les estoy agradecido por su atencion, voy a probar sus codigos y casi estoy seguro que funcionaran. Salu2!!!

AzidRain 26-01-2006 03:31:07

Funcion requerida
 
En delphi tienes esta función:
Código:

function FormatDateTime(const Format: string; DateTime: TDateTime):
string;

En donde const es una cadena que contiene el formato como quieres que te muestre la fecha y DateTime la fecha que quieres formatear. Para tu caso tendrias que usar como formato la cadena 'dd/mm/yyyy' o 'dd/mm/yy' según quieras.

Código Delphi [-]
MiFechaEnStr := FormatDateTime('dd/mm/yy',TDateTimePicker1.Date);

Ojala te sirva

jachguate 26-01-2006 20:48:21

Cita:

Empezado por AzidRain
En delphi tienes esta función:

claro... hay maneras de formatear la fecha, pero si no usas parámetros, dependerás siempre que el motor de base de datos soporte el formato que has decidido usar en tu aplicación. Usando parámetros, dejás que tu capa de acceso a datos se encargue de esos "pequeños detalles" por vos con lo que, a mi juicio, tenes aplicaciones mas portables y menos propensas a errores.

Hasta luego.

;)

cuburu 31-01-2006 03:12:33

hola.

También podrias utilizar funcion SQL char(tipo de formato, valor), lo que hace es formatear la fecha a un formato definido (ISO, US, EUR, etc).

jachguate 31-01-2006 20:26:42

Cita:

Empezado por cuburu
hola.

También podrias utilizar funcion SQL char(tipo de formato, valor), lo que hace es formatear la fecha a un formato definido (ISO, US, EUR, etc).

dicha función char no parece ser parte del estándar. Probablemente algún dialecto la soporte, tal como el to_char de oracle, pero eso ya es otra historia...


La franja horaria es GMT +2. Ahora son las 17:20:18.

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