Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ¿Búsqueda SQL por Fecha? (https://www.clubdelphi.com/foros/showthread.php?t=54784)

lKinGl 31-03-2008 00:16:48

¿Búsqueda SQL por Fecha?
 
Saludos amigos foristas....

el problema que tengo es que no se como ordenar una búsqueda sql por fecha

tengo un formulario con un radiogroup que tiene varias opciones para ordenar
en el mismo formulario tengo un dbgrid en el cual se muestra el resultado obtenido de el boton presionado del radiogroup y lo que escribi en el edit1.text

pero necesito hacer un boton en ese radiogroup que se llame FECHA y necesito que haga lo siguiente:

cuando yo seleccione la opcion FECHA y en el edit1.text coloque xx/xx/xxxx
en el dbgrid se muestren los registros que tengan esa fecha

mientras que toque ordenar por cadena de caracteres todo bien pero necesito saber como lo ordeno por la fecha escrita en el edit1.text!!

gracias Adelantadas!!

eduarcol 31-03-2008 00:40:38

Código Delphi [-]
MiQuery.Active := False;
Miquery.sql.Text := 'Select * from tablas where fecha = :fecha';
MiQuery.ParambyName('FECHA').ASDate := StrtoDate(Edit1.Text);
MiQuery.Active := True;

lKinGl 31-03-2008 01:04:53

el campo por el cual quiero ordenar los registros se llama fec_ini es de tipo DATE y da error el código que me acabas de facilitar

mi tabla se llama db

dice is not a valid date osea que no es una fecha valida

y el código adaptado a mi programa quedó así

Código Delphi [-]
if RadioGroup1.ItemIndex=0 then
begin
  Query1.Active := False;
  Query1.sql.Text := 'Select fec_ini from db.db where fec_ini :=Fecha';
  Query1.ParambyName('Fecha').ASDate := StrtoDate(Edit1.Text);
  Query1.Active := True;
end;


¿en que estoy fallando?

lKinGl 31-03-2008 02:20:35

Estoy intentando con este otro código y tambien da error:

Código Delphi [-]
if RadioGroup1.ItemIndex=0 then
begin
  Query1.Active := False;
  Query1.sql.Text:='select registro,cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon  _pol,sub_pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol from db Where fec_ini like "' + (Edit1.Text) + '%"';
  Query1.Active := True;
end;

:confused:

lKinGl 31-03-2008 02:27:41

intenté tambien con:
Código Delphi [-]
 
if RadioGroup1.ItemIndex=0 then
begin
  Query1.Active := False;
  query1.sql.Text := 'Select fec_ini from db.db where fec_ini = :fecha';
  Query1.ParambyName('fecha').ASDate := StrtoDate(Edit1.Text);
  Query1.Active := True;
end;

pero sigue sin funcionar :(

jacanche 31-03-2008 06:06:44

Quizas no lo entiendo, pero si quieres ordenar deberias agregar una instruccion "order by" en tu sentencia sql, para que te lo ordene por los campos que quieres, en tu caso por fecha. Lo que estas haciendo con el "where" es solo limitar los registros que seleccionas.

paladincubano 31-03-2008 12:30:55

Prueba este otro a ver si te vale:
Código Delphi [-]Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM db');
Query1.SQL.Add('WHERE fec_ini='+QuotedStr(Edit1.Text));
Query1.SQL.Add('ORDER by fec_ini');
Query1.Open;

espero te sirva.

gluglu 31-03-2008 13:05:42

No indicas que Base de Datos utilizas.

Hay algunas bases de datos que precisan que le pases el parámetro de la fecha en formato 'mm/dd/yyyy' y puede que por ahí venga el fallo que te indica que no es una fecha válida.

Por otro lado, deberías por supuesto realizar una comprobación previa de que lo que se inserta en el TEdit corresponde a una fecha válida y en los formatos aceptados por tu Base de datos.

eduarcol 31-03-2008 15:53:08

El error viene dado debido a que lo que ingresaron en el edit1 no es una fecha valida. deberias validar antes de ejecutar la sentencia, y el primer ejemplo que te di te ahorras comprobar el formato de la fecha tal cual lo dice Gluglu.

enecumene 31-03-2008 16:28:02

Bueno agregando a lo dicho por Eduarcol y GluGlu, yo recomendaría esta linea:

Código Delphi [-]
if RadioButton1.Checked = True Then
....

en vez de esta que tienes:

Código Delphi [-]
if RadioButton1.ItemIndex = 0 then
....

Saludos.

ContraVeneno 31-03-2008 17:12:42

sigo sin entender porque muchos quieren manejar fechas utilizar Tedit cuando pueden utilizar TDateTimePicker....

eduarcol 31-03-2008 17:43:43

Cita:

Empezado por ContraVeneno (Mensaje 276393)
sigo sin entender porque muchos quieren manejar fechas utilizar Tedit cuando pueden utilizar TDateTimePicker....

Iba a preguntar lo mismo, pero me di cuenta que la busqueda puede realizarse en campos de varios tipos dependiendo la opcion de un RadioGroup, aunque tambien se puede jugar con los valores de Visible...

lKinGl 01-04-2008 04:41:54

gracias paladincubano tu código porfin resuleve la mitad de mi problema por que si ordena por fecha los registros pero
cuando voy al edit para escribir la fecha xx/xx/xxxx da error solo con pulsar cualquier tecla pero me imagino que ya es
mas facil de resolver

vuelvo a facilitar el código que uso para que porfavor me ayuden a completarlo gracias adelantadas :D

Código Delphi [-]
Query1.SQL.Clear;
Query1.SQL.Add('SELECT fec_ini FROM db');
//Query1.SQL.Add('WHERE fec_ini='+QuotedStr(Edit1.Text));// si desactivo esta linea el programa ordena por fecha los 
//registros y si la dejo activa lanza error al pulsar el radio button 1
Query1.SQL.Add('ORDER by fec_ini=');
Query1.Open;


y para los amigos que sugieren el datetimepicker no lo uso por que ni siquiera sabia que existia y no tengo ni idea de
como se usa pero si tienen una solucion con el datetimepicker es bienvenida

gracias por su tiempo!!

egostar 01-04-2008 05:06:47

Cita:

Empezado por lKinGl (Mensaje 276605)
gracias paladincubano tu código.......

:D:D:D, bueno, eduarcol ya casi es cubano, los demas si que no se por donde sean cubanos....... :D:D:D

Salud OS

lKinGl 01-04-2008 05:07:52

porfa ayundeme :(!!

egostar 01-04-2008 05:14:20

Código Delphi [-]
Query1.SQL.Clear;
Query1.SQL.Add('SELECT fec_ini FROM db');
Query1.SQL.Add('WHERE fec_ini= :fecha');
Query1.SQL.Add('ORDER by fec_ini');
Query1.ParamByName('fecha').Value := DateTimePicker1.Date;
Query1.Open;

Te toca investigar el uso del DateTimePicker1, y para que veas que no soy malo, ese objeto está en la pestaña Win32 ;)

Salud OS

lKinGl 01-04-2008 05:21:12

sigue dando error :(

dice 'type mismatch in expression'

este es el código que tengo espero me ayuden a conseguir mi falla
Código Delphi [-]
procedure TForm14.RadioGroup1Click(Sender: TObject);
var
buscar:string;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
if RadioGroup1.ItemIndex=0 then
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT fec_ini FROM db');
Query1.SQL.Add('WHERE fec_ini= :fecha');
Query1.SQL.Add('ORDER by fec_ini');
Query1.ParamByName('fecha').Value := DateTimePicker1.Date;
Query1.Open;
(*Query1.SQL.Clear;
Query1.SQL.Add('SELECT fec_ini FROM db');
Query1.SQL.Add('WHERE fec_ini='+QuotedStr(Edit1.Text));
Query1.SQL.Add('ORDER by fec_ini=');
Query1.Open;*)
end;
if radiogroup1.ItemIndex=1 then
begin
  Query1.Close;
  DecodeDate(Now, Year, Month, Day);
  Query1.sql.clear;
  Query1.sql.add('select registro,cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon  _pol,sub_pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol from db where EXTRACT(month FROM registro) = :mes');
  Query1.ParamByName('mes').AsInteger := month;
  Query1.Open;
  form14.grilla;
end;
if RadioGroup1.ItemIndex=2 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique el Número de Póliza por el cual desea ordenar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=3 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique el Código de Póliza por el cual desea ordenar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=4 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique La compañia por el cual desea ordenar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=5 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique el Ramo por el cual desea ordenar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=6 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique La cédula del cliente para localizar la póliza deseada','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=7 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique el Nombre o Razón Social por el cual desea ordenar ó localizar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
if RadioGroup1.ItemIndex=8 then
begin
edit1.Enabled:=true;
edit1.Clear;
application.MessageBox('Indique el Número de Teléfono por el cual desea ordenar ó localizar las Pólizas','Información',MB_iconinformation);
edit1.SetFocus;
end;
case RadioGroup1.ItemIndex of
0:edit1.Enabled:=true;
1:edit1.enabled:=true;
end;
end;
procedure TForm14.Edit1Change(Sender: TObject);
var
buscar:string;
begin
case RadioGroup1.ItemIndex of
  2:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where num_pol like "' + (Edit1.Text) + '%"';
  3:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where cod_pol like "' + (Edit1.Text) + '%"';
  4:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where com_pol like "' + (Edit1.Text) + '%"';
  5:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where ram_pol like "' + (Edit1.Text) + '%"';
  6:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where ced_cli like "' + (Edit1.Text) + '%"';
  7:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where nom_cli like "' + (Edit1.Text) + '%"';
  8:buscar:='Select cod_pol,com_pol,ram_pol,bie_pol,can_pol,num_pol,cer_pol,fec_ini,fec_ven,pri_pol,cmn_pol,bon_pol,sub_  pol,ced_cli,nom_cli,dir_cli,tel_cli,pag_pol,pre_pol,deu_pol,registro From db.db Where Tel_cli like "' + (Edit1.Text) + '%"';
end;
  Query1.Close;
  DBGrid1.Enabled:=false;
  dbgrid1.Enabled:=true;
  Query1.SQL.Clear;
  Query1.SQL.Add(buscar);
  Query1.Active:=True;
  Query1.Open;
  dbgrid1.Columns.Items[0].Width:=60;
  dbgrid1.Columns.Items[1].Width:=200;
  dbgrid1.Columns.Items[2].Width:=200;
  dbgrid1.Columns.Items[3].Width:=90;
  dbgrid1.Columns.Items[4].Width:=90;
  dbgrid1.Columns.Items[5].Width:=90;
  dbgrid1.Columns.Items[6].Width:=90;
  dbgrid1.Columns.Items[7].Width:=90;
  dbgrid1.Columns.Items[8].Width:=90;
  dbgrid1.Columns.Items[9].Width:=90;
  dbgrid1.Columns.Items[10].Width:=90;
  dbgrid1.Columns.Items[11].Width:=90;
  dbgrid1.Columns.Items[12].Width:=90;
  dbgrid1.Columns.Items[13].Width:=90;
  dbgrid1.Columns.Items[14].Width:=150;
  dbgrid1.Columns.Items[15].Width:=150;
  dbgrid1.Columns.Items[16].Width:=90;
  dbgrid1.Columns.Items[17].Width:=90;
  dbgrid1.Columns.Items[18].Width:=90;
  dbgrid1.Columns.Items[19].Width:=90;
  dbgrid1.Columns[0].Title.caption:='Código';
  dbgrid1.Columns[1].Title.caption:='Compañia';
  dbgrid1.Columns[2].Title.caption:='Ramo';
  dbgrid1.Columns[3].Title.caption:='Bien Asegurado';
  dbgrid1.Columns[4].Title.Caption:='Cantidad';
  dbgrid1.Columns[5].Title.Caption:='Número de Póliza';
  dbgrid1.Columns[6].Title.Caption:='Número de Cert.';
  dbgrid1.Columns[7].Title.Caption:='Fecha Inicio';
  dbgrid1.Columns[8].Title.Caption:='Fecha Vence';
  dbgrid1.Columns[9].Title.Caption:='Prima';
  dbgrid1.Columns[10].Title.Caption:='Comisión';
  dbgrid1.Columns[11].Title.Caption:='Bono';
  dbgrid1.Columns[12].Title.Caption:='Sub-Comisión';
  dbgrid1.Columns[13].Title.Caption:='Cédula';
  dbgrid1.Columns[14].Title.Caption:='Nombre';
  dbgrid1.Columns[15].Title.Caption:='Domicilio Fiscal';
  dbgrid1.Columns[16].Title.Caption:='Teléfono';
  dbgrid1.Columns[17].Title.Caption:='Pago';
  dbgrid1.Columns[18].Title.Caption:='Precio';
  dbgrid1.Columns[19].Title.Caption:='Deuda';
end;

el radiobutton 0 es el que dice fecha el resto de opciones van a la perfeccion

Gracias adelantadas!!

egostar 01-04-2008 05:23:31

A ver, dime una cosa, que tipo de campo es fec_ini, Date o String;

Salud OS

lKinGl 01-04-2008 05:25:17

fec_ini es tipo Date

tabla paradox 7 y uso delphi 7

Gracias!

egostar 01-04-2008 05:30:42

Cita:

Empezado por lKinGl (Mensaje 276635)
fec_ini es tipo Date

tabla paradox 7 y uso delphi 7

Gracias!

Pues en apariencia deberia de funcionar, has este cambio:

Código Delphi [-]
Query1.ParamByName('fecha').asDate := DateTimePicker1.Date;

Si no funciona y te sigue mandando error tal vez es el formato de fecha corta que esta usando la db, pero eso lo podrias resolver poniendo esta linea:

Código Delphi [-]
ShortDateFormat := 'mm/dd/yyyy';
//ó 
ShortDateFormat := 'dd/mm/yyyy';

Prueba con ambas en caso de que no te funcione.

Salud OS

lKinGl 01-04-2008 05:37:42

Solucionado!!

Gracias egostar por el código proporcionado, para que funcionara como yo deseaba lo inserte en el evento onchange del datatimepicker y funcionó de lujo

Muchas Gracias de Verdad a todos los que intentaron ayudarme!!

paladincubano 01-04-2008 09:00:12

jeje, que pasa con los cubanos man??? aqui hay uno 100% de pura cepa... lo que pasa es que he tenido que emigrar para Espana.
saludos a todos los cubanos de por aqui.

egostar 01-04-2008 17:58:44

Cita:

Empezado por paladincubano (Mensaje 276652)
jeje, que pasa con los cubanos man??? aqui hay uno 100% de pura cepa... lo que pasa es que he tenido que emigrar para Espana.
saludos a todos los cubanos de por aqui.

Hola paladincubano, no me vas a creer pero no vi tu post en este hilo hasta ahora que he vuelto a revisarlos :D:D:D.

Salud OS

PD. por supuesto que no tengo nada en contra de ningún cubano, para mi todos somos amigos del mismo planeta :rolleyes::)

Loarik 25-04-2008 14:57:37

SQL con fechas y Access
 
Hola,
Yo también tengo un problema con una query que lleva fecha.

SQL.Add(' AND (Entrada_Fx = :fecha')

El componente que utilizo es un DateTimePicker y intento adaptar las soluciones que aqui se proponen a mi código pero me da el siguiente error:
EOLEException falta ), ] o elemento en la expresión de consulta ' AND Entrada_Fx= ?"
Entrada_Fx es un campo de tipo Fecha/corta (Access).
Estoy intentando pasar por parametro de la siguiente forma:

Parameters.ParamByName('fecha').value:=(RE_DTP_In.Date); antes de ejecutar la query ¿que hago mal?


Gracias

eduarcol 25-04-2008 15:54:45

tu tienes:
Código Delphi [-]
SQL.Add(' AND (Entrada_Fx = :fecha')

donde dos parentesis abren, uno solo cierra.

deberia ser:
Código Delphi [-]
SQL.Add(' AND (Entrada_Fx = :fecha)')

Loarik 28-04-2008 11:33:47

Gracias, se nota la poca experiencia que tengo.
Ya he arreglado lo del parentesis pero ahora me dice que "parameter fecha not found".
He revisado los foros sobre este tema pero no encuentro el error , he borrado el parametro y lo he vuelto a definir pero sigue igual
Despues de definir la query hago:

AQr_Entrada.Parameters.ParamByName('fecha').Value:= (DTP.Datetime);
Tengo definida en AQr_Entrada el parámetro fecha con las siguientes opciones

DataType:ftDateTime(si pongo ftDate cambia automáticamente a ftDatetime)
Direction:pdInput
Value:01/01/1900

Donde puedo tener el error?
Gracias

enecumene 28-04-2008 16:00:08

Hola, intenta con lo siguiente:

Código Delphi [-]
  AQr_Entrada.Parameters.ParamByName('fecha').AsDateTime :=  DTP.Datetime;

Saludos.

Loarik 28-04-2008 17:10:12

Antes de nada gracias por responder tan rapido,
he probado como me indicas

AQr_Entrada.Parameters.ParamByName('fecha').AsDateTime := DTP.Datetime;

Me da el siguiente error: Undeclarer identifier "AsDateTime"

si se os ocurre otra cosa o en donde puedo estar metiendo la gamba...

enecumene 28-04-2008 17:13:34

Cita:

Empezado por Loarik (Mensaje 282984)
Antes de nada gracias por responder tan rapido,
he probado como me indicas

AQr_Entrada.Parameters.ParamByName('fecha').AsDateTime := DTP.Datetime;

Me da el siguiente error: Undeclarer identifier "AsDateTime"

si se os ocurre otra cosa o en donde puedo estar metiendo la gamba...

Intenta con AsDate.

Saludos.

Loarik 28-04-2008 17:21:19

Me da el mismo error
Undeclarer identifier"AsDate"...

enecumene 28-04-2008 17:40:55

Hola, estas seguro que el campo es de tipo DateTime?. que viene siendo DTP un datetimepicker?

Saludos.

eduarcol 28-04-2008 17:47:35

solo para estar seguros, porque no colocas el codigo que estas utilizando en estos momentos...

Loarik 28-04-2008 17:57:51

Hola,

Exactamente DTP es datetimepicker, disculpa no especificar antes.
En la aplicación trabajo con ellos, leo datos, guardo el problema surge cuando quiero buscar por el campo fecha.
Lo primero que he intentado es algo que también he visto en foro

SQL.Add(' AND (Entrada_Fx >='+DateToStr(d6)+')');
siendo d6:Tdatetime; y asignandole con anterioridad
d6:=DTP.Asdatetime,
y realmente funciona, la query trae los registros con la fecha igual o mayor.
Pero yo quiero realmente solo los del dia.
Como con = no funciona pensé, a este lo pillo yo y empecé a probar con dos fechas y between o con >=hoy y <mañana, pero resulta que lo de < tampoco me funciona.
Vi en el foro la solucion del pasar por parametro y ahi es donde me encuentro, pero ahora que no me quiere el parámetro.
Como ya os dije en otros hilos soy muy novata en esto de programar y en delphi más asi que será cualquier tontería pero el caso es que no la veo...

Loarik 28-04-2008 19:33:41

¡¡Creo que lo solucioné!!
Antes de nada, perdon a eduardocol, no me dio tiempo a leer tu mensaje
y perdon por la tardanza, pero tardo tanto en escribir el mensaje que me caduco la sesion y volver a empezar

.....
d6:=DTP.asdate
RgEntrada.SQL.Text:='SELECT *'
+'FROM RgEntrada'
+' WHERE True';
for i:=1 to finarray do
begin
if cadenaBusqueda[i] then
begin
case i of
1:SQL.Add(' AND (Tipo LIKE"'+'%'+(s1)+'%")');
2:SQL.Add(' AND (Procedencia LIKE"'+'%'+(s2)+'%")');
3:SQL.Add(' AND (Remitente LIKE"'+'%' +(s3)+'%")');
4:SQL.Add(' AND (Contenido LIKE"'+'%'+(s4)+'%")');
5:SQL.Add(' AND (Archivo='+IntToStr(i5));
6: SQL.Add(' AND (Entrada_Fx = :fecha)') ;
.....
end;
end;
end;
RgEntrada.Parameters.ParamByName('fecha').Value:=DTP.asdate;
ExecSQL;
Open;
Hay dos errores
1:si no pongo nada en el campo entrada del FORM no entra en la opción6 y no encuentra el parametro fecha. "Parameter fecha not found". Solucion:poner esa línea solo si entra en la opcion 6.
2-si pones dato no encuentra nada, porque las propiedades de los componentes del form no estan accesibles. Solucion: guardarlas anteriormente en variables y pasarle estas a la query
Quedaría

6:begin SQL.Add(' AND (Entrada_Fx = :fecha)') ;
RgEntrada.Parameters.ParamByName('fecha').Value:=d6

end;

Me he explicado o me he liado...
Bueno ahora a pelearme con Access y Multiusuario, pero eso ya es otro hilo, mejor dicho eso es la madeja entera.

Gracias y hasta pronto


La franja horaria es GMT +2. Ahora son las 07:39:43.

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