Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
me hace falta un componente para trabajar con fechas y bases de datos

me hace falta un componente para trabajar con fechas en una base de datos, conocen alguno ??
desde ya gracias
Responder Con Cita
  #2  
Antiguo 13-07-2004
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
Y no te sirve el DateTimePicker que viene con Delphi?

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
  #3  
Antiguo 13-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
sip pero el error es otro

ya consegui un componente que se llama DBDateTimePicker y es igual que el que viene con delphi pero pa trabajar con bases de datos pero el problema es que cuando no hay ninguna fecha guardada en el campo me pone por defecto una fecha de 1889 y a mi esa fecha no me sirve pero si cada vez que el usuario tenga que introducir un registro tiene que hacer click constante para selecionar la fecha entonces no es etico, espero me ayuden
Responder Con Cita
  #4  
Antiguo 13-07-2004
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
Cita:
Empezado por fearlex
... el problema es que cuando no hay ninguna fecha guardada en el campo me pone por defecto una fecha de 1889 y a mi esa fecha no me sirve pero si cada vez que el usuario tenga que introducir un registro tiene que hacer click constante para selecionar la fecha entonces no es etico, espero me ayuden
me supongo que ese componente trabaja igual que el otro que te sugirieron, una forma simple de hacer lo que quieres (que cuando el usuario no haya introducido fecha no se registre fecha alguna en el campo) puedes poner en el beforepost de tu tabla una verificación de forma :
Código Delphi [-]
if Picker.Text = '' then tabla.campo.clear;
espero te sirva...

saludos...
Responder Con Cita
  #5  
Antiguo 13-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
Question gracias de todas formas

[quote=vic_ia](que cuando el usuario no haya introducido fecha no se registre fecha alguna en el campo) [quote]
no el problema es que en el campo de la tabla no se guarda nada pero miren paso por paso:
cuando agrego un registro nuevo me pone por defecto esa fecha en como decir el text del campo, por ke no tiene esa propiedad, la que tiene es date
si yo no le pongo nada cuando salvo el me guarda en blanco, no me guarda nada pero lo que quiero es que por defecto coja la fecha de la makina que la tengo almacenada en una variable globlal, entienden ?
de veras que no se que hacer ya llevo semanas en esto y no acabo de dar con la solucion ??
gracias de todas formas

Última edición por fearlex fecha: 13-07-2004 a las 23:29:31.
Responder Con Cita
  #6  
Antiguo 13-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por vic_ia
Código Delphi [-]
if Picker.Text = '' then tabla.campo.clear;
Sólo que el DateTimePicker, y supongo que el mencionado DBTimePicker tampoco, no tiene una propiedad Text.

Por otro lado, la fecha de 1899 muy posiblemente se deba a que el DBTimePicker traduce un valor null (como lo será en un nuevo registro) a cero, que- traducido a tipo TDateTime -corresponde a 30/12/1899.

El problema con el DateTimePicker es precisamente que no maneja de forma nativa el concepto de fechas nulas. Y, sinceramente, cualquier control db que maneje fechas debiera tener en cuenta esto.

// Saludos
Responder Con Cita
  #7  
Antiguo 13-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por fearlex
lo que quiero es que por defecto coja la fecha de la makina que la tengo almacenada en una variable globlal
¡Ah! Entonces puedes asignarla en el evento OnNewRecord del dataset asociado:

Código Delphi [-]
procedure Form1.Table1NewRecord(DataSet: TDataSet);
begin
  DataSet['fecha'] := Now();
end;

// Saludos
Responder Con Cita
  #8  
Antiguo 13-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
Cita:
Empezado por roman
Por otro lado, la fecha de 1899 muy posiblemente se deba a que el DBTimePicker traduce un valor null (como lo será en un nuevo registro) a cero, que- traducido a tipo TDateTime -corresponde a 30/12/1899.

El problema con el DateTimePicker es precisamente que no maneja de forma nativa el concepto de fechas nulas. Y, sinceramente, cualquier control db que maneje fechas debiera tener en cuenta esto.

// Saludos
Exacto esa es la fecha, sabes como podria controlar eso por ke de veras que me tiene loco el problema ??
Responder Con Cita
  #9  
Antiguo 13-07-2004
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
La solución que te propone Vic_ia es válida, simplemente tienes que controlar el evento BeforePost del Ttable, ahí compruebas si la fecha es nula ó no, y si es nula pues:

MiFecha.Clear;

De esta manera no se graba absolutamente nada.

Como veras tanto el DateTimePicker como el componente que dices has conseguido no tienen ningún problema, el problema es controlar cuando el usuario no introduce nada.

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
  #10  
Antiguo 13-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
gracias mil gracias amigo...

Cita:
Empezado por roman
¡Ah! Entonces puedes asignarla en el evento OnNewRecord del dataset asociado:

Código Delphi [-]
procedure Form1.Table1NewRecord(DataSet: TDataSet);
begin
  DataSet['fecha'] := Now();
end;

// Saludos
Ops no entendi dond ees que se pone eso, ni a que te refieres con el dataset ni con fecha, explicame si puede que significan cada uno por ke no entendi despues de tantas horas de agobio ya casi no razono pero tengo que seguir por ke debo terminarlo cuanto antes, gracias mil gracias amigo...
Responder Con Cita
  #11  
Antiguo 13-07-2004
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
Aquí tienes un ejemplo:
Código Delphi [-]
procedure TDmNes.RecibosBeforePost(DataSet: TDataSet);
begin
 if DmNes.RecibosFecha.Value = null then
 DmNes.RecibosFecha.Clear;
end;

DmNes es un DataModule en donde está alojada la tabla Recibos y como es lógico Fecha es el campo que queremos controlar que no contenga valores nulos.

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
  #12  
Antiguo 14-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por marcoszorrilla
Como veras tanto el DateTimePicker como el componente que dices has conseguido no tienen ningún problema, el problema es controlar cuando el usuario no introduce nada.
Lamento diferir en este punto. La cuestión es precisamente que con el DateTimePicker no es posible "no introducir nada" y por ende no hay forma directa de guardar una fecha nula en la base. A juzgar por la descripción de fearlex, el DBTimePicker al menos guarda fechas "cero" (léase 30/12/1899) como nulos, pero esto tampoco es solución en los casos en los que tal fecha sea un valor válido (p. ej. la fecha de nacimiento de mi abuelo). Pero por otro lado está la cuestión de que la mencionada componente, al igual que el DateTimePicker interpretarán fechas nulas como 30/12/1899. El problema en principio se resuelve en registros nuevos con la técnica del evento OnNewRecord pero ¿qué pasará cuando no se trate de registros nuevos sino de registros ya existentes con fechas nulas o si no se desea dar ningún valor por defecto al campo fecha?

// Saludos
Responder Con Cita
  #13  
Antiguo 14-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
Talking grcias

muchas grcias ya me funciona, de de veras que se los agradezco por ke estaba botado con el problemita ese, gracias mil gracias, y como dato les dire que la forma que dijo Roman fue la que me funciono, sale perfecto y la otra pues voy a probarla en estos instantes pero es que estaba tan emocionado que en cuanto me funciono quise agradecer.........gracias mil

Saludos desde cuba amigos
Responder Con Cita
  #14  
Antiguo 14-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por marcoszorrilla
Código Delphi [-]
procedure TDmNes.RecibosBeforePost(DataSet: TDataSet);
begin
 if DmNes.RecibosFecha.Value = null then
 DmNes.RecibosFecha.Clear;
end;
Disculpa Marcos pero en realidad este código no hace nada. El método Clear de TField lo que hace es precisamente poner en Null el valor del campo de manera que es como poner:

Código Delphi [-]
procedure TDmNes.RecibosBeforePost(DataSet: TDataSet);
begin
 if DmNes.RecibosFecha.Value = null then
   DmNes.RecibosFecha.Value := null;
end;
Responder Con Cita
  #15  
Antiguo 14-07-2004
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
Es que por ejemplo en Paradox, sino haces esto te coloca la fecha 1899 o algo así y de esta manera deja el campo vacio totalmente, no contiene ningún valor, como si el usuario no hubiera escrito absolutamente nada.

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
  #16  
Antiguo 14-07-2004
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 22
Delfino Va por buen camino
No es recomendable usar el DateTimePicker segun este articulo http://delphi.about.com/library/weekly/aa042004a.htm

te recomiendo el DBDateEdit q viene con la suite JVCL http://homepages.borland.com/jedi/jvcl/
Responder Con Cita
  #17  
Antiguo 14-07-2004
Avatar de fearlex
fearlex fearlex is offline
Miembro
 
Registrado: abr 2004
Ubicación: Miami
Posts: 29
Poder: 0
fearlex Va por buen camino
gracias

me funciona de la forma que dice roman por ke de la otra forma no por ke me hace falta utilizar eso cuando se agregue un nevo registro, corro el riesgo de ke cuando la tabla este vacia y se abra el form me tome esa fecha pero puse required en ese campo asi que no podra salvar hasta que no ponga la fecha, pero siempre y cuando agregue un nuevo registro me pondra la fecha de la maquina lista para guardar...
gracias de nuevo amigos, no se si crear un nuevo hilo pero me hace falta proteger una base una base de datos para que no accedan a ella por access que es lo que utilizo , o sea que solamente la puedan abrir con el programa que estoy creando, y que si alguien desea abrirla con el access no pueda, encriptarla o, algo, incluso en la propia base da datos guardo las contraseñas de administracion encrptadas pero si me las borren me fastidie, saben como hacerlo ??
Responder Con Cita
  #18  
Antiguo 14-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por fearlex
no se si crear un nuevo hilo
Crea un nuevo hilo.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 01:00:52.


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