| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 10 May, 2013 7:11 am Asunto: |
|
|
| 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.
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Vie 10 May, 2013 8:02 pm Asunto: |
|
|
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Sab 11 May, 2013 4:47 pm Asunto: |
|
|
| 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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Dom 12 May, 2013 7:47 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 12 May, 2013 8:28 am Asunto: |
|
|
¿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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Dom 12 May, 2013 10:40 am Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 12 May, 2013 11:27 am Asunto: |
|
|
| 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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Dom 12 May, 2013 11:59 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 13 May, 2013 11:24 am Asunto: |
|
|
| 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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Sab 27 Ago, 2016 11:35 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 29 Ago, 2016 10:02 am Asunto: |
|
|
| 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
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Lun 29 Ago, 2016 12:52 pm Asunto: |
|
|
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 |
|
 |
|