Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-09

Firebird, Zeos, charset UTF8 y campo tipo Tme

6 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Walter Mesón

Hola a todos/as...
Simple y conciso...tengo una tabla en Firebird 2.1 con charset UTF8 que tiene dos campos de tipo time, utilizo las zeos para la conexi�n y un ZTable para el acceso, cuando quiero postear un registro ingresado, me da el siguiente error y no me graba nada en la bd...el error es "SQL Error: conversion error from string *12:00:00 a.m.*. Error code -413.Overflow occurred during data type conversion.The SQL:INSERT INTO PRUEBAS (HORA_START,HORA_END) VALUES (?,?)". Tengo varias tablas en la bd, pero ninguna con campos tipo Time, los cuales los necesito porque tengo que hacer c�lculos con ellos �Alguna sugerencia...?

Desde ya, muchas gracias.

Saludos. * Walter *

Reply by email

José Mejuto
to Walter Mesón

Hello Walter,

Tuesday, September 21, 2010, 7:54:11 PM, you wrote:

WM> Simple y conciso...tengo una tabla en Firebird 2.1 con charset UTF8 que tiene WM> dos campos de tipo time, utilizo las zeos para la conexi�n y un ZTable para el WM> acceso, cuando quiero postear un registro ingresado, me da el siguiente error y WM> no me graba nada en la bd...el error es "SQL Error: conversion error from string WM> *12:00:00 a.m.*. Error code -413.Overflow occurred during data type WM> conversion.The SQL:INSERT INTO PRUEBAS (HORA_START,HORA_END) VALUES (?,?)". WM> Tengo varias tablas en la bd, pero ninguna con campos tipo Time, los cuales los WM> necesito porque tengo que hacer c�lculos con ellos WM> �Alguna sugerencia...?

Como no expliques como haces el posteo, a trav�s de un control, manualmente, etc, es un poco dif�cil ayudar. El DDL de la tabla en cuesti�n tampoco estar�a dem�s.

Viendo el error s�lo puedo suponer que haces:

table.fieldbyname('HORA_START'):=Now;

Es as� ? Por cierto, que si es "Time" no hay fecha, eres consciente de este hecho no ?

Best regards, Jos�

Reply by email

Walter Mesón
to José Mejuto

Hola Jos�...

Como no expliques como haces el posteo, a trav�s de un control,

Tal vez no fui claro, a lo que pido disculpas, mi apuro por obtener una pista me hace olvidar el detalle, pero como habia puesto en el mail que usaba de las Zeos un ZConnection y un ZTable, supuse que estaba claro ese punto.

manualmente, etc, es un poco dif�cil ayudar. El DDL de la tabla en cuesti�n tampoco estar�a dem�s.

Aqui va el DDL.

CREATE TABLE PRUEBA_HORAS (
HORA_END TIME DEFAULT 12:00:00 a.m. NOT NULL,

   HORA_START TIMESTAMP DEFAULT 12:00:00 a.m.);

Viendo el error s�lo puedo suponer que haces:

table.fieldbyname('HORA_START'):=Now;

Asi es...justamente, en la linea de c�digo hago :

table.Append ;
table.fieldbyname('HORA_START'):=Now;
Es as� ? Por cierto, que si es "Time" no hay fecha, eres consciente de este hecho no ?

Si...si...

Gracias. Saludos. * Walter *

Reply by email

Ismael L. Donis García
to José Mejuto: WM> Simple y conciso...tengo una tabla en Firebird 2.1 con charset UTF8 que tiene WM> dos…

La hora en un campo Time es un entero de 32bit en cual debe estar en un rango de 00:00 a 23:59:59.9999

Por lo que se debe pasar en formato HH:NN:SS.nnnn

Saludos
=========
|| ISMAEL ||
=========

Earlier message 44 lines
----- Original Message ----- From: "Jos� Mejuto" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Tuesday, September 21, 2010 3:04 PM Subject: Re: [Lazarus-es] Firebird, Zeos, charset UTF8 y campo tipo Tme Hello Walter, Tuesday, September 21, 2010, 7:54:11 PM, you wrote: WM> Simple y conciso...tengo una tabla en Firebird 2.1 con charset UTF8 que tiene WM> dos campos de tipo time, utilizo las zeos para la conexi�n y un ZTable para el WM> acceso, cuando quiero postear un registro ingresado, me da el siguiente error y WM> no me graba nada en la bd...el error es "SQL Error: conversion error from string WM> *12:00:00 a.m.*. Error code -413.Overflow occurred during data type WM> conversion.The SQL:INSERT INTO PRUEBAS (HORA_START,HORA_END) VALUES (?,?)". WM> Tengo varias tablas en la bd, pero ninguna con campos tipo Time, los cuales los WM> necesito porque tengo que hacer c�lculos con ellos WM> �Alguna sugerencia...? Como no expliques como haces el posteo, a trav�s de un control, manualmente, etc, es un poco dif�cil ayudar. El DDL de la tabla en cuesti�n tampoco estar�a dem�s. Viendo el error s�lo puedo suponer que haces: table.fieldbyname('HORA_START'):=Now; Es as� ? Por cierto, que si es "Time" no hay fecha, eres consciente de este hecho no ? -- Best regards, Jos�

Reply by email

José Mejuto
to Walter Mesón: Hola Jos�... Tal vez no fui claro, a lo que pido disculpas, mi apuro por obtener una…

Hello Walter,

Tuesday, September 21, 2010, 9:36:53 PM, you wrote:

WM> table.Append ;
WM> table.fieldbyname('HORA_START'):=Now;
> Es as� ? Por cierto, que si es "Time" no hay fecha, eres consciente de > este hecho no ?

WM> Si...si...

Lo primero, y sin intentar ofender, esto no es php ni visual basic ;) Pascal es un lenguaje "fuertemente tipado", y ah� est�s forzando el uso de "intercambiadores" variant, as� que ajusta el tipo:

table.fieldbyname('HORA_START').asTime:=Now;

Entiendo que as� deber�a de funcionar, pero s�lo para "HORA_END" que tiene formato "TIME", "HORA_START" tiene formato "TimeStamp", por lo tanto has de entregarle una fecha tambi�n:

table.fieldbyname('HORA_START').asDateTime:=Now;
table.fieldbyname('HORA_END').asTime:=Now;

En el DDL pones "default" del timestamp una hora, sin fecha, as� que la fecha ser� si no me equivoco 1/1/1753 lo cual te puede liar.

Lo de pasar una hora con formato AM/PM no es buena idea, mejor usa el formato de 24 horas (AM/PM en Firebird antes daba error, ahora no estoy seguro). De hecho se recomienda pasar una hora como:

HH:NN:SS.mmm con todos sus d�gitos: "01:02:03:456" sin omotir ninguno, y en la fecha:

CCYY-MM-DD osea, 2010-09-22 para hoy.

http://www.firebirdsql.org/doc/contrib/FirebirdDateLiterals.html

Best regards, Jos�

Reply by email

Walter Mesón
to José Mejuto

Hola Jos�...

Lo primero, y sin intentar ofender, esto no es php ni visual basic ;)

Jos�, no hay ofensa alguna en tus lineas, me has aclarado muy bien el punto de conflicto....

Pascal es un lenguaje "fuertemente tipado", y ah� est�s forzando el uso de "intercambiadores" variant, as� que ajusta el tipo: table.fieldbyname('HORA_START').asTime:=Now;

Fijate vos que cosa, hace al menos 5/6 a�os que programo en Delphi, y sin embargo, en este caso, caigo en un error de pricipiante...je...!!!

Show quoted text 22 lines
Entiendo que as� deber�a de funcionar, pero s�lo para "HORA_END" que tiene formato "TIME", "HORA_START" tiene formato "TimeStamp", por lo tanto has de entregarle una fecha tambi�n: table.fieldbyname('HORA_START').asDateTime:=Now; table.fieldbyname('HORA_END').asTime:=Now; En el DDL pones "default" del timestamp una hora, sin fecha, as� que la fecha ser� si no me equivoco 1/1/1753 lo cual te puede liar. Lo de pasar una hora con formato AM/PM no es buena idea, mejor usa el formato de 24 horas (AM/PM en Firebird antes daba error, ahora no estoy seguro). De hecho se recomienda pasar una hora como: HH:NN:SS.mmm con todos sus d�gitos: "01:02:03:456" sin omotir ninguno, y en la fecha: CCYY-MM-DD osea, 2010-09-22 para hoy. http://www.firebirdsql.org/doc/contrib/FirebirdDateLiterals.html

Segu� tus indicaciones al pi� de la letra y funcion� de maravillas...en el ddl les quit� lo que pon�a por default y funciona perfeco.

Mil gracias por aclararme este punto y gracias a todos lo que colaboraro...

Gracias.- Saludos. * Walter *

Reply by email