Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

consejo base de datos
Ir a página Anterior  1, 2, 3
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Responder citando

bosoft escribió:
Angel escribió:

Us un TMaskEdit.


Si te soy sincero, siempre le he tenido manía a ese componente, pero por esta vez te haré caso y lo probaré. Mira que si me llega a gustar y todo. Embarassed

De todas formas, debe de haber algún componente tipo datetimepicker y que funcione, sobre todo en lo referente a mostrar un calendario

Muchas gracias Angel

Saludos

A mi tampoco me hace mucha gracia. Otra alternativa que tienes es TMonthCalendar que sólo admite fechas.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Angel escribió:

A mi tampoco me hace mucha gracia. Otra alternativa que tienes es TMonthCalendar que sólo admite fechas.


uffff, es algo "grande". Yo quiero algo mas tipo datetimepicker, que pones la fecha y si necesitas un calendario lo sacas, pero poner 3 o 4 fechas en una ventana con el month....

Estoy probando el maskedit, y aunque no me gusta mucho, espero sacarle partido

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

bosoft escribió:
Estoy probando el maskedit, y aunque no me gusta mucho, espero sacarle partido

La ventaja que tiene es que el propio elemento te valida el dato que escribes y si pones una fecha absurda (31 de febrero) no te deja. Usa las máscaras que viene por defecto en la propiedad EditMask: pincha en el botón ... y cuando sale el cuadro de diálogo pulsa en Masks para elegir el país que mejor se adapte a tus necesidades. Cuidado con las fechas, que no valen los formatos dd/mm/yyyy; tienes que usar por ejemplo 00/00/9900;0;_. Investiga, que tiene cosas muy curiosas.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Gracias por tu consejo
Ya tenía en cuenta que tenía que hacer un validador de fecha y he revisado lo que usaba hace muchos años cuando el MSDos era el rey

De momento casi prefiero en este caso el editmask que el datetimepicker, puesto que no engaña, pero aún esta al 50%.
Y si, de momento el formato es !99/99/00;1;_ que es el que te da por defecto en spain->date. Poco a poco iré averiguando que le puedo añadir para mejorar la vista, la introducción y comodidad para el user

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¿Que problema hay con el TDateTimePicker?

En el caso de este código:
Código:
if (Valor.Length() > 10) Valor[11] = 0;

el problema te lo está dando que no estas teniendo en cuenta que estás trabajando con la clase AnsiString y no con una cadena C, y que poniendo a 0 alguno de sus caracteres no modifica su longitud, otra cosa es que al visualizarlo parezca que si, pero compruébalo con .Length() .. tendrías que hacer algo así:
Código:
if (Valor.Length() > 10) Valor.SetLength(10);


Aparte de que también puedes obtener la fecha como una cadena formateada como quieras:
Código:
DateTimePicker1->Date.FormatString("yyyymmdd");
DateTimePicker1->Date.FormatString("dd/mm/yyyy");
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias _Leo. Como siempre tienes razón.
El problema con datetimepicker es que cuando le pasa por las narices, en vez de hacer caso al formatstring=dd/mm/yyyy, da como respuesta dd/mm/yyyy hh:mm:ss. Si no se controla y se guarda en la base de datos (access date short), cuando se lo devuelves al datetimepicker da error de conversión.

Ese es el motivo de toda esta "discusión" entre Angel y yo para averiguar que componente sería mejor para introducir una fecha.

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No se, habría que ver la manera de reproducir el problema, me imagino que tiene alguna explicación y se podrá resolver..
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

yo me he dado cuenta cuando me ha saltado el primer error. Al revisar paso a paso, he encontrado que algunos registros de la BD (3 o 4 de unos 20) tenían la hora. Se trata de 2 datetimepicker seguidos (fecha alta y fecha nacimiento) y la hora unas veces la tenia el primero y otras el segundo

He hecho un seguimiento por si era culpa mía y no he podido averiguarlo, puesto que lo hace cuando quiere
Leyendo en el foro de embarcadero, se comenta, aunque de inglés yo poco, que es fallo de windows.

Y en eso estoy

Saludos

PD: uso B2007
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

bosoft escribió:
Y si, de momento el formato es !99/99/00;1;_ que es el que te da por defecto en spain->date. Poco a poco iré averiguando que le puedo añadir para mejorar la vista, la introducción y comodidad para el user

Con ese formato te saca el año con dos posiciones (13/05/13); si quieres cuatro, pon en la máscara !99/99/9900;1;_. Si dejas el 1 del final te guarda también los caracteres de máscara; pon un cero: !99/99/9900;0;_
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola
Años después, la gente de esta ong me pide que haga una pequeña ampliación al programa para lo cual tengo que poner a cero una tabla y que empiece a contar el auto desde 1
He probado con
Código:
filtrocon->SQL->Clear();
filtrocon->SQL->Add("TRUNCATE TABLE control");
filtrocon->Active=true;
filtrocon->Close();

Me da este error
Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project socios.exe raised exception class EOleException with message 'Instrucción SQL no válida; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE''.
---------------------------
Break Continue Help
---------------------------

No se que fallo puede ser pero ¿hay alguna sentencia para access que limpie la tabla y deje el autoincrement a 0? o ¿es mejor hacer un DROP y un CREATE?

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

bosoft escribió:
Código:
filtrocon->SQL->Clear();
filtrocon->SQL->Add("TRUNCATE TABLE control");
filtrocon->Active=true;
filtrocon->Close();

A ver. No sé al final que motor de BB.DD. estarás usando en la aplicación, pero lo más rápido y sencillo es usar
Código:
DELETE control

Ahora bien, si además estás usando generadores y demás tendrás que ponerlos a cero y eso ya dependerá de las tablas que estés usando. La otra alternativa (DROP y CREATE) te va a dar el mismo resultado que el DELETE.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Gracias Angel
Estoy usando access y por lo visto el DELETE borra uno a uno los registros pero no pone a cero el autoincrement

Después de discutirlo en delphiaccess.com, he llegado a la conclusión que la única manera es DROP y CREATE, algo que en teoría hace de un solo golpe el TRUNCATE pero que en access no existe

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.