Sign in Join

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

Mailing lists / lazarus-es / 2012-10

Firebird zeos INSERT INTO no funciona

26 messages · 8 people · –

Reply by email Subscribe to this list Your subscription

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

Jose Daboin

Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro.

Ahora es que cuando hago un insert en la base de datos me da error.

Hago esto

C�digo:

ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")';
ZQuery1.ExecSQL;

y me tira error

tambien probe con

C�digo:

ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE")
VALUES("123456","ANA")
ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA)

y nada

Les dejo la imagen

http://www.subeimagenes.com/img/sin-titulo-424765.gif ------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121007/c4e8a7f3/attachment.html>

Reply by email

Paola Bruccoleri
to Jose Daboin

El 07/10/2012 04:01 p.m., Jose Daboin escribi�:

Show quoted text 5 lines
Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error.

Hola Jos�.. revisa los nombres de los campos de la tabla en cuesti�n. Adem�s, como buena costumbre, primero f�jate que la sentencia sql sea correcta ejecut�ndola desde afuera de la aplicaci�n, por ejemplo, desde la consola del ibexpert q creo que usas. All� descartas todos los problemas de sintaxis y dem�s yerbas. Por �ltimo la llevas al programa. byeeeeeee

Reply by email

Jose Daboin
to Paola Bruccoleri

En el ibexpert ingreso

insert into factura(codigo_fact,fecha,fk_cliente)
values(null,07/10/2012,123456)

y me tira el siguiente error

Overflow occurred during data type conversion.
conversion error from string "0".

El 7 de octubre de 2012 16:39, Paola Bruccoleri
<pbruccoleri en adinet.com.uy>escribi�:

Show quoted text 21 lines
El 07/10/2012 04:01 p.m., Jose Daboin escribi�: Bueno en esta transicion hacia firebir resuelvo un problema y me aparece > otro. > > Ahora es que cuando hago un insert en la base de datos me da error. > > Hola Jos�.. revisa los nombres de los campos de la tabla en cuesti�n. Adem�s, como buena costumbre, primero f�jate que la sentencia sql sea correcta ejecut�ndola desde afuera de la aplicaci�n, por ejemplo, desde la consola del ibexpert q creo que usas. All� descartas todos los problemas de sintaxis y dem�s yerbas. Por �ltimo la llevas al programa. byeeeeeee ______________________________**_________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.**freepascal.org<Lazarus-es en lists.lazarus.freepascal.org> http://lists.lazarus.**freepascal.org/mailman/**listinfo/lazarus-es<http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es>

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121007/27495349/attachment.html>

Reply by email

Maxi
to Jose Daboin: Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es…

U

El domingo, 7 de octubre de 2012, Jose Daboin <metalbox9000 en gmail.com> escribi�:

Bueno en esta transicion hacia firebir resuelvo un problema y me aparece

otro.

Show quoted text 8 lines
Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE)
VALUES("123456","ANA")';
Show quoted text 9 lines
ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE")

VALUES("123456","ANA")

Show quoted text 12 lines
ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif
Los numeros no llevan comillas y los textos en comillas simples. Usa la
funcion format para formatear la sentencia.
Const
Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)';
Sql.text:= format(cadsql,[123456,quotedstr('ana')]);

Quotedstr agrega las comillas al texto

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121007/7b0ae22a/attachment.html>

Reply by email

Oscar Benitez Carrillo
to Maxi

Los datos de char o varchar deben ir entre comillas silmples: 'esta es una cadena varchar', igualmente las fechas '07/10/2012' si los pones con comillas dobles, el motor lo toma como el nombre de un campo, por eso el mensaje de error dice que no lo encuentra y en la fecha el error overflow

Saludo
Oscar Benitez

El 07/10/2012 05:51 p.m., Maxi escribi�:

Show quoted text 60 lines
U El domingo, 7 de octubre de 2012, Jose Daboin <metalbox9000 en gmail.com <mailto:metalbox9000 en gmail.com>> escribi�: > Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. > > Ahora es que cuando hago un insert en la base de datos me da error. > > Hago esto > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; > ZQuery1.ExecSQL; > > y me tira error > > tambien probe con > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) > > y nada > > > Les dejo la imagen > > http://www.subeimagenes.com/img/sin-titulo-424765.gif > > > Los numeros no llevan comillas y los textos en comillas simples. Usa la funcion format para formatear la sentencia. Const Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)'; Sql.text:= format(cadsql,[123456,quotedstr('ana')]); Quotedstr agrega las comillas al texto -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121007/acd3382f/attachment-0001.html>

Reply by email

Jose Daboin
to Oscar Benitez Carrillo

ok, gracias voy a probar y escribo por aca

El 7 de octubre de 2012 18:58, Oscar Benitez Carrillo <obc5005 en yahoo.com.mx>escribi�:

Show quoted text 76 lines
Los datos de char o varchar deben ir entre comillas silmples: 'esta es una cadena varchar', igualmente las fechas '07/10/2012' si los pones con comillas dobles, el motor lo toma como el nombre de un campo, por eso el mensaje de error dice que no lo encuentra y en la fecha el error overflow Saludo Oscar Benitez El 07/10/2012 05:51 p.m., Maxi escribi�: U El domingo, 7 de octubre de 2012, Jose Daboin <metalbox9000 en gmail.com> escribi�: > Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. > > Ahora es que cuando hago un insert en la base de datos me da error. > > Hago esto > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; > ZQuery1.ExecSQL; > > y me tira error > > tambien probe con > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) > > y nada > > > Les dejo la imagen > > http://www.subeimagenes.com/img/sin-titulo-424765.gif > > > Los numeros no llevan comillas y los textos en comillas simples. Usa la funcion format para formatear la sentencia. Const Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)'; Sql.text:= format(cadsql,[123456,quotedstr('ana')]); Quotedstr agrega las comillas al texto -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog _______________________________________________ Lazarus-es mailing listLazarus-es en lists.lazarus.freepascal.orghttp://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121007/ca00910e/attachment.html>

Reply by email

Jose Antonio. Cuello Principal
to Jose Daboin: Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es…

Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas.

La sentencia ser�a:

ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')';
ZQuery1.ExecSQL;

Un saludo

Earlier message 33 lines
----- Mensaje original ----- De: "Jose Daboin" <metalbox9000 en gmail.com> Para: Lazarus-es en lists.lazarus.freepascal.org Enviados: Domingo, 7 de Octubre 2012 20:01:19 Asunto: [Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif

Reply by email

José Mejuto
to Maxi: U El domingo, 7 de octubre de 2012, Jose Daboin <metalbox9000 en gmail.com> escribi�:…

El 08/10/2012 0:51, Maxi escribi�:

Show quoted text 7 lines
Los numeros no llevan comillas y los textos en comillas simples. Usa la funcion format para formatear la sentencia. Const Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)'; Sql.text:= format(cadsql,[123456,quotedstr('ana')]); Quotedstr agrega las comillas al texto

Hola,

Por qu� no usais los par�metros, que est�n para eso:

sql.text:='insert into clientes(cedula,nombre) values (:cedula,:nombre)';
sql.parambyname('cedula').asInteger:=123456;
sql.parambyname('nombre').asString:='ana';

Reply by email

Jose Daboin
to Jose Antonio. Cuello Principal: Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan…

Gracias asi funciona correctamente. [?]

El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal < jcuello en artextrading.com> escribi�:

Show quoted text 62 lines
Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas. La sentencia ser�a: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; ZQuery1.ExecSQL; Un saludo ------------------------------ *De: *"Jose Daboin" <metalbox9000 en gmail.com> *Para: *Lazarus-es en lists.lazarus.freepascal.org *Enviados: *Domingo, 7 de Octubre 2012 20:01:19 *Asunto: *[Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121008/9dc86968/attachment.html> ------------ pr�xima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: image/gif
Size: 385 bytes
Desc: no disponible
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121008/9dc86968/attachment.gif>

Reply by email

Ismael L. Donis Garcia
to Jose Daboin

Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando par�metros.

Saludos a todos
=========
|| ISMAEL ||
=========

Earlier message 59 lines
----- Original Message ----- From: Jose Daboin To: Spanish version of Lazarus List Sent: Monday, October 08, 2012 10:20 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Gracias asi funciona correctamente. El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�: Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas. La sentencia ser�a: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; ZQuery1.ExecSQL; Un saludo ---------------------------------------------------------------------------- De: "Jose Daboin" <metalbox9000 en gmail.com> Para: Lazarus-es en lists.lazarus.freepascal.org Enviados: Domingo, 7 de Octubre 2012 20:01:19 Asunto: [Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL;y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA)y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif

Reply by email

Jose Daboin
to Ismael L. Donis Garcia

Correcto. asi lo har�

El 8 de octubre de 2012 10:44, Ismael L. Donis Garcia <ismael en citricos.co.cu

Show quoted text 98 lines
escribi�: ** Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando par�metros. Saludos a todos ========= || ISMAEL || ========= ----- Original Message ----- *From:* Jose Daboin <metalbox9000 en gmail.com> *To:* Spanish version of Lazarus List<lazarus-es en lists.lazarus.freepascal.org> *Sent:* Monday, October 08, 2012 10:20 AM *Subject:* Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Gracias asi funciona correctamente. [?] El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal < jcuello en artextrading.com> escribi�: > Hola, los nombres de campo no van entre comillas y los campos cadena o > fecha si llevan comillas simple (o comilla inglesa). Para poder poner la > comilla creando un string debes poner dos comillas simples juntas. > > La sentencia ser�a: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; > ZQuery1.ExecSQL; > > > Un saludo > > ------------------------------ > *De: *"Jose Daboin" <metalbox9000 en gmail.com> > *Para: *Lazarus-es en lists.lazarus.freepascal.org > *Enviados: *Domingo, 7 de Octubre 2012 20:01:19 > *Asunto: *[Lazarus-es] Firebird zeos INSERT INTO no funciona > > > Bueno en esta transicion hacia firebir resuelvo un problema y me aparece > otro. > > Ahora es que cuando hago un insert en la base de datos me da error. > > Hago esto > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; > ZQuery1.ExecSQL; > > y me tira error > > tambien probe con > > C�digo: > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") > > ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) > > y nada > > > Les dejo la imagen > > http://www.subeimagenes.com/img/sin-titulo-424765.gif > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > ------------------------------ _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121008/9d1f65d7/attachment-0001.html> ------------ pr�xima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: image/gif
Size: 385 bytes
Desc: no disponible
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121008/9d1f65d7/attachment-0001.gif>

Reply by email

Jose Antonio. Cuello Principal
to José Mejuto: El 08/10/2012 0:51, Maxi escribi�: Por qu� no usais los par�metros, que est�n…

Hace mucho hice un programa de traspaso de datos entre dos aplicaciones de contabilidad. Usando los par�metros el traspaso de una base de datos a otra eran unos 20 minutos, con cadenas en unos 5 minutos estaba.

Normalmente uso par�metros pero en ocasiones, por distintos motivos uso cadenas y ambas funcionan correctamente en todas las bases de datos que he manejado. Un saludo

Earlier message 27 lines
----- Mensaje original ----- De: "Jos� Mejuto" <joshyfun en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Lunes, 8 de Octubre 2012 10:19:53 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El 08/10/2012 0:51, Maxi escribi�: > Los numeros no llevan comillas y los textos en comillas simples. Usa la > funcion format para formatear la sentencia. > Const > Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)'; > Sql.text:= format(cadsql,[123456,quotedstr('ana')]); > > Quotedstr agrega las comillas al texto Hola, Por qu� no usais los par�metros, que est�n para eso: sql.text:='insert into clientes(cedula,nombre) values (:cedula,:nombre)'; sql.parambyname('cedula').asInteger:=123456; sql.parambyname('nombre').asString:='ana';

Reply by email

Jose Antonio. Cuello Principal
to Ismael L. Donis Garcia: Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando…

�D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se e jecuta al final es el contenido de SQL.TEXT por lo que si ya se lo das que problema hay. Creo que si uno tiene clara la sentencia y esta no es complicada no creo que sea peor indicarla directamente.

Adem�s en otros lenguajes en los que no existen los par�metros, por lo que se tiene que hacer mediante cadena. Realmente sigo sin ver por qu� es m�s correcto o m�s adecuado. Un saludo.

Earlier message 80 lines
----- Mensaje original ----- De: "Ismael L. Donis Garcia" <ismael en citricos.co.cu> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Lunes, 8 de Octubre 2012 17:14:06 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando par�metros. Saludos a todos ========= || ISMAEL || ========= ----- Original Message ----- From: Jose Daboin To: Spanish version of Lazarus List Sent: Monday, October 08, 2012 10:20 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Gracias asi funciona correctamente. El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal < jcuello en artextrading.com > escribi�: <blockquote> Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas. La sentencia ser�a: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; ZQuery1.ExecSQL; Un saludo De: "Jose Daboin" < metalbox9000 en gmail.com > Para: Lazarus-es en lists.lazarus.freepascal.org Enviados: Domingo, 7 de Octubre 2012 20:01:19 Asunto: [Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif

Reply by email

Maxi
to Jose Daboin: Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es…

U

El domingo, 7 de octubre de 2012, Jose Daboin <metalbox9000 en gmail.com> escribi�:

Bueno en esta transicion hacia firebir resuelvo un problema y me aparece

otro.

Show quoted text 8 lines
Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE)
VALUES("123456","ANA")';
Show quoted text 9 lines
ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE")

VALUES("123456","ANA")

Show quoted text 12 lines
ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif
Los numeros no llevan comillas y los textos en comillas simples. Usa la
funcion format para formatear la sentencia.
Const
Cadsql:='insert into clientes(cedula,nombre) values(%d,%s)';
Sql.text:= format(cadsql,[123456,quotedstr('ana')]);

Quotedstr agrega las comillas al texto

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121009/3268aa0f/attachment.html>

Reply by email

José Mejuto
to Jose Antonio. Cuello Principal: Hace mucho hice un programa de traspaso de datos entre dos aplicaciones de contabilidad.…

El 09/10/2012 8:08, Jose Antonio. Cuello Principal escribi�:

Hace mucho hice un programa de traspaso de datos entre dos aplicaciones de contabilidad. Usando los par�metros el traspaso de una base de datos a otra eran unos 20 minutos, con cadenas en unos 5 minutos estaba.

Hola,

No deber�a haber diferencia, bueno si en tal caso justo al rev�s, pero bueno todo es posible.

Normalmente uso par�metros pero en ocasiones, por distintos motivos uso cadenas y ambas funcionan correctamente en todas las bases de datos que he manejado.

Si funcionar, funcionan perfectamente ambas ;)

Reply by email

José Mejuto
to Jose Antonio. Cuello Principal: �D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se e jecuta al final…

El 09/10/2012 8:12, Jose Antonio. Cuello Principal escribi�:

�D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se ejecuta al final es el contenido de SQL.TEXT por lo que si ya se lo das que problema hay.

Hola,

Hmmm, no, lo que se ejecuta es TEXT si, pero de modo diferente. B�sicamente lo que sucede en el motor de base de datos (si los componentes funcionan bien claro) es algo como esto cuando insertamos tres registros:

Sin par�metros:

1.Creamos SQL
1.Preparamos SQL (BD)
1.Ejecutamos SQL (BD)
1."UnPrepare" SQL (BD)
2.Creamos SQL
2.Preparamos SQL (BD)
2.Ejecutamos SQL (BD)
2."UnPrepare" SQL (BD)
3.Creamos SQL
3.Preparamos SQL (BD)
3.Ejecutamos SQL (BD)
3."UnPrepare" SQL (BD)

Con par�metros:

1.Creamos SQL
1.Pasamos par�metros
1.Preparamos SQL (BD)
1.Ejecutamos SQL (DB)
2.Pasamos par�metros
2.Ejecutamos SQL (DB)
3.Pasamos par�metros
3.Ejecutamos SQL (DB)
3."UnPrepare" SQL (BD)

Contando que lo que m�s consume en la BD es el "Preparamos SQL" la diferencia de hacerlo con par�metros deber�a ser positiva (sobre el papel) especialmente cuanto m�s compleja sea la sentencia SQL.

Creo que si uno tiene clara la sentencia y esta no es complicada no creo que sea peor indicarla directamente.

Peor no, en teor�a m�s lenta si, en teor�a ya que tus resultados emp�ricos parecen demostrar lo contrario.

Adem�s en otros lenguajes en los que no existen los par�metros, por lo que se tiene que hacer mediante cadena. Realmente sigo sin ver por qu� es m�s correcto o m�s adecuado.

Uno y muy importante es la seguridad, imagina un programa que pide un nombre de usuario y hace un select con �l:

var
   UserName: string;
begin
   SQL.Text='Select * from TTabla where Nombre='''+UserName+''';
   SQL.Open;
end;

Si ejecutas eso con UserName='Jose' todo va bien... pero si lo ejecutas con:

UserName:='''; DELETE * from TTabla; Select * from TTable where Nombre=''';

La cosa no ser� muy recomendable de ejecutar ;)

Con par�metros no se te da esa situaci�n ya que la sintaxis la mantiene en order el sistema de par�metros.

Otra ventaja est� en los campos de fecha ya que el sistema de par�metros se encarga de dar la fecha en el sistema que espera la base de datos que no tiene que ser igual a nuestro "Locale".

Otra m�s es que por ejemplo entre distintas bases de datos las comillas simples y dobles pueden ser necesarias una para cada cosa, intercambiables, o con significados diferentes. Este problema lo evita el sistema de par�metros.

Espero haberme explicado bien.

Reply by email

Jose Antonio. Cuello Principal
to José Mejuto

ok, gracias. Ahora me queda m�s claro.
Un saludo

Earlier message 90 lines
----- Mensaje original ----- De: "Jos� Mejuto" <joshyfun en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Martes, 9 de Octubre 2012 10:24:39 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El 09/10/2012 8:12, Jose Antonio. Cuello Principal escribi�: > �D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se ejecuta > al final es el contenido de SQL.TEXT por lo que si ya se lo das que > problema hay. Hola, Hmmm, no, lo que se ejecuta es TEXT si, pero de modo diferente. B�sicamente lo que sucede en el motor de base de datos (si los componentes funcionan bien claro) es algo como esto cuando insertamos tres registros: Sin par�metros: 1.Creamos SQL 1.Preparamos SQL (BD) 1.Ejecutamos SQL (BD) 1."UnPrepare" SQL (BD) 2.Creamos SQL 2.Preparamos SQL (BD) 2.Ejecutamos SQL (BD) 2."UnPrepare" SQL (BD) 3.Creamos SQL 3.Preparamos SQL (BD) 3.Ejecutamos SQL (BD) 3."UnPrepare" SQL (BD) Con par�metros: 1.Creamos SQL 1.Pasamos par�metros 1.Preparamos SQL (BD) 1.Ejecutamos SQL (DB) 2.Pasamos par�metros 2.Ejecutamos SQL (DB) 3.Pasamos par�metros 3.Ejecutamos SQL (DB) 3."UnPrepare" SQL (BD) Contando que lo que m�s consume en la BD es el "Preparamos SQL" la diferencia de hacerlo con par�metros deber�a ser positiva (sobre el papel) especialmente cuanto m�s compleja sea la sentencia SQL. > Creo que si uno tiene clara la sentencia y esta no es complicada no creo > que sea peor indicarla directamente. Peor no, en teor�a m�s lenta si, en teor�a ya que tus resultados emp�ricos parecen demostrar lo contrario. > Adem�s en otros lenguajes en los que no existen los par�metros, por lo > que se tiene que hacer mediante cadena. Realmente sigo sin ver por qu� > es m�s correcto o m�s adecuado. Uno y muy importante es la seguridad, imagina un programa que pide un nombre de usuario y hace un select con �l: var UserName: string; begin SQL.Text='Select * from TTabla where Nombre='''+UserName+'''; SQL.Open; end; Si ejecutas eso con UserName='Jose' todo va bien... pero si lo ejecutas con: UserName:='''; DELETE * from TTabla; Select * from TTable where Nombre='''; La cosa no ser� muy recomendable de ejecutar ;) Con par�metros no se te da esa situaci�n ya que la sintaxis la mantiene en order el sistema de par�metros. Otra ventaja est� en los campos de fecha ya que el sistema de par�metros se encarga de dar la fecha en el sistema que espera la base de datos que no tiene que ser igual a nuestro "Locale". Otra m�s es que por ejemplo entre distintas bases de datos las comillas simples y dobles pueden ser necesarias una para cada cosa, intercambiables, o con significados diferentes. Este problema lo evita el sistema de par�metros. Espero haberme explicado bien.

Reply by email

Ismael L. Donis Garcia
to Jose Antonio. Cuello Principal: �D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se e jecuta al final…

Ya Jos� te respondi� por mi, Yo no estoy On Line y por tanto mis respuestas siempre tienden a llegar tarde.

Adem�s de lo de Jos� solo te dir� algo. Y no es para contradecirte ni nada por el estilo. Ya que la vida me ha ense�ado que la verdad no es absoluta.

Pues lo que te quer�a decir es que YO, y repito YO no conozco ning�n lenguaje que no te permita el uso de par�metros. Debo aclarar que no he usado muchos lenguajes (pero tampoco pocos), pero todos los que he usado lo permiten.

Pero adem�s de eso creo que estamos hablando de Lazarus. O a caso la duda no era sobre Lazarus?. As� que el decir que algunos sistemas no permiten par�metros no viene al caso.

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

Earlier message 88 lines
----- Original Message ----- From: Jose Antonio. Cuello Principal To: Spanish version of Lazarus List Sent: Tuesday, October 09, 2012 2:12 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona �D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se ejecuta al final es el contenido de SQL.TEXT por lo que si ya se lo das que problema hay. Creo que si uno tiene clara la sentencia y esta no es complicada no creo que sea peor indicarla directamente. Adem�s en otros lenguajes en los que no existen los par�metros, por lo que se tiene que hacer mediante cadena. Realmente sigo sin ver por qu� es m�s correcto o m�s adecuado. Un saludo. ------------------------------------------------------------------------------ De: "Ismael L. Donis Garcia" <ismael en citricos.co.cu> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Lunes, 8 de Octubre 2012 17:14:06 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando par�metros. Saludos a todos ========= || ISMAEL || ========= ----- Original Message ----- From: Jose Daboin To: Spanish version of Lazarus List Sent: Monday, October 08, 2012 10:20 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Gracias asi funciona correctamente. El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�: Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas. La sentencia ser�a: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; ZQuery1.ExecSQL; Un saludo -------------------------------------------------------------------------- De: "Jose Daboin" <metalbox9000 en gmail.com> Para: Lazarus-es en lists.lazarus.freepascal.org Enviados: Domingo, 7 de Octubre 2012 20:01:19 Asunto: [Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL;y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA)y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif

Reply by email

Jose Antonio. Cuello Principal
to Ismael L. Donis Garcia

ok, siento si te ha ofendido. Simplemente lo coment� como decir una manera m�s general o de uso com�n.

Earlier message 117 lines
----- Mensaje original ----- De: "Ismael L. Donis Garcia" <ismael en citricos.co.cu> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Martes, 9 de Octubre 2012 14:40:06 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Ya Jos� te respondi� por mi, Yo no estoy On Line y por tanto mis respuestas siempre tienden a llegar tarde. Adem�s de lo de Jos� solo te dir� algo. Y no es para contradecirte ni nada por el estilo. Ya que la vida me ha ense�ado que la verdad no es absoluta. Pues lo que te quer�a decir es que YO, y repito YO no conozco ning�n lenguaje que no te permita el uso de par�metros. Debo aclarar que no he usado muchos lenguajes (pero tampoco pocos), pero todos los que he usado lo permiten. Pero adem�s de eso creo que estamos hablando de Lazarus. O a caso la duda no era sobre Lazarus?. As� que el decir que algunos sistemas no permiten par�metros no viene al caso. Saludos Reiterados ========= || ISMAEL || ========= ----- Original Message ----- From: Jose Antonio. Cuello Principal To: Spanish version of Lazarus List Sent: Tuesday, October 09, 2012 2:12 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona �D�nde pone que sea m�s correcto o m�s adecuado? ... Lo que se e jecuta al final es el contenido de SQL.TEXT por lo que si ya se lo das que problema hay. Creo que si uno tiene clara la sentencia y esta no es complicada no creo que sea peor indicarla directamente. Adem�s en otros lenguajes en los que no existen los par�metros, por lo que se tiene que hacer mediante cadena. Realmente sigo sin ver por qu� es m�s correcto o m�s adecuado. Un saludo. ----- Mensaje original ----- De: "Ismael L. Donis Garcia" <ismael en citricos.co.cu> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Lunes, 8 de Octubre 2012 17:14:06 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Si funciona, pero lo correcto o m�s adecuado es como te dijo Jos�. �sea usando par�metros. Saludos a todos ========= || ISMAEL || ========= <blockquote> ----- Original Message ----- From: Jose Daboin To: Spanish version of Lazarus List Sent: Monday, October 08, 2012 10:20 AM Subject: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona Gracias asi funciona correctamente. El 8 de octubre de 2012 02:11, Jose Antonio. Cuello Principal < jcuello en artextrading.com > escribi�: <blockquote> Hola, los nombres de campo no van entre comillas y los campos cadena o fecha si llevan comillas simple (o comilla inglesa). Para poder poner la comilla creando un string debes poner dos comillas simples juntas. La sentencia ser�a: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(''123456'',''ANA'')'; ZQuery1.ExecSQL; Un saludo De: "Jose Daboin" < metalbox9000 en gmail.com > Para: Lazarus-es en lists.lazarus.freepascal.org Enviados: Domingo, 7 de Octubre 2012 20:01:19 Asunto: [Lazarus-es] Firebird zeos INSERT INTO no funciona Bueno en esta transicion hacia firebir resuelvo un problema y me aparece otro. Ahora es que cuando hago un insert en la base de datos me da error. Hago esto C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES("123456","ANA")'; ZQuery1.ExecSQL; y me tira error tambien probe con C�digo: ZQuery1.SQL.Text:='INSERT INTO CLIENTES("CEDULA","NOMBRE") VALUES("123456","ANA") ZQuery1.SQL.Text:='INSERT INTO CLIENTES(CEDULA,NOMBRE) VALUES(123456,ANA) y nada Les dejo la imagen http://www.subeimagenes.com/img/sin-titulo-424765.gif

Reply by email

Jose Antonio. Cuello Principal
to José Mejuto: El 09/10/2012 8:08, Jose Antonio. Cuello Principal escribi�: No deber�a haber…

Siguiendo con este tema, siempre sospeche que el problema eran los numerosos parambyname que se ejecutaban durante el proceso. Es decir, que no era un problema de base de datos sino del proceso a la hora de traspasar los datos. El caso es que mi supervisor de entonces no me dej� hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo el tema.

Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el proceso tardara m�s que si montabas un string con la sentencia.

Un saludo

Earlier message 25 lines
----- Mensaje original ----- De: "Jos� Mejuto" <joshyfun en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Martes, 9 de Octubre 2012 10:07:25 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El 09/10/2012 8:08, Jose Antonio. Cuello Principal escribi�: > Hace mucho hice un programa de traspaso de datos entre dos aplicaciones > de contabilidad. Usando los par�metros el traspaso de una base de datos > a otra eran unos 20 minutos, con cadenas en unos 5 minutos estaba. Hola, No deber�a haber diferencia, bueno si en tal caso justo al rev�s, pero bueno todo es posible. > > Normalmente uso par�metros pero en ocasiones, por distintos motivos uso > cadenas y ambas funcionan correctamente en todas las bases de datos que > he manejado. Si funcionar, funcionan perfectamente ambas ;)

Reply by email

José Mejuto
to Jose Antonio. Cuello Principal

El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribi�:

Show quoted text 10 lines
Siguiendo con este tema, siempre sospeche que el problema eran los numerosos parambyname que se ejecutaban durante el proceso. Es decir, que no era un problema de base de datos sino del proceso a la hora de traspasar los datos. El caso es que mi supervisor de entonces no me dej� hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo el tema. Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el proceso tardara m�s que si montabas un string con la sentencia.

Hola,

No lo creo, veo m�s posible alg�n tipo de bug en los componentes que el propio hecho de pasar par�metros "byName". Aunque los "byName" son costosos, son locales y lo m�s lento deber�a ser en envio/recepci�n de datos al hacer los prepare. Puede darse el hecho de que un bug realizara el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera modificado, por lo tanto tendr�amos la carga normal del prepare y a�adidos todos los "byName" aunque multiplicar por 4 el tiempo de proceso me parece excesivo.

Ser�a interesante hacer algunas pruebas... Si tengo un rato har� un test con una BD.

Reply by email

Jose Antonio. Cuello Principal
to José Mejuto

Hola, los componentes eran Zeos (no recuerdo la versi�n) con conexi�n a firebird y entorno Delphi (5 � 6)

La pantalla no ten�a mucha cosas, un progresbar era lo �nico que requer�a refresco.

y las tablas (entre 8 y 10) ten�an bastantes registros pq conten�an u historico de 3 � 4 a�os. Siento no ser m�s claro, pero hace ya unos a�itos del tema. Gracias, por tus respuestas.
Un saludo

Earlier message 36 lines
----- Mensaje original ----- De: "Jos� Mejuto" <joshyfun en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Mi�rcoles, 10 de Octubre 2012 9:40:46 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribi�: > Siguiendo con este tema, siempre sospeche que el problema eran los > numerosos parambyname que se ejecutaban durante el proceso. Es decir, > que no era un problema de base de datos sino del proceso a la hora de > traspasar los datos. El caso es que mi supervisor de entonces no me dej� > hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo > el tema. > Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 > o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el > proceso tardara m�s que si montabas un string con la sentencia. > Hola, No lo creo, veo m�s posible alg�n tipo de bug en los componentes que el propio hecho de pasar par�metros "byName". Aunque los "byName" son costosos, son locales y lo m�s lento deber�a ser en envio/recepci�n de datos al hacer los prepare. Puede darse el hecho de que un bug realizara el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera modificado, por lo tanto tendr�amos la carga normal del prepare y a�adidos todos los "byName" aunque multiplicar por 4 el tiempo de proceso me parece excesivo. Ser�a interesante hacer algunas pruebas... Si tengo un rato har� un test con una BD.

Reply by email

Maxi
to Jose Antonio. Cuello Principal

El d�a 10 de octubre de 2012 06:02, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�:

Show quoted text 60 lines
Hola, los componentes eran Zeos (no recuerdo la versi�n) con conexi�n a firebird y entorno Delphi (5 � 6) La pantalla no ten�a mucha cosas, un progresbar era lo �nico que requer�a refresco. y las tablas (entre 8 y 10) ten�an bastantes registros pq conten�an u historico de 3 � 4 a�os. Siento no ser m�s claro, pero hace ya unos a�itos del tema. Gracias, por tus respuestas. Un saludo ________________________________ De: "Jos� Mejuto" <joshyfun en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Mi�rcoles, 10 de Octubre 2012 9:40:46 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribi�: > Siguiendo con este tema, siempre sospeche que el problema eran los > numerosos parambyname que se ejecutaban durante el proceso. Es decir, > que no era un problema de base de datos sino del proceso a la hora de > traspasar los datos. El caso es que mi supervisor de entonces no me dej� > hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo > el tema. > Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 > o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el > proceso tardara m�s que si montabas un string con la sentencia. > Hola, No lo creo, veo m�s posible alg�n tipo de bug en los componentes que el propio hecho de pasar par�metros "byName". Aunque los "byName" son costosos, son locales y lo m�s lento deber�a ser en envio/recepci�n de datos al hacer los prepare. Puede darse el hecho de que un bug realizara el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera modificado, por lo tanto tendr�amos la carga normal del prepare y a�adidos todos los "byName" aunque multiplicar por 4 el tiempo de proceso me parece excesivo. Ser�a interesante hacer algunas pruebas... Si tengo un rato har� un test con una BD. _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Ahi esta el tema del tiempo, el objeto ttable para motores sql no estaba aconsejado, incluso hoy tampoco lo aconsejan, porque esta por compatibilidad.
el TTable trae a memoria casi toda la tabla y no es eficiente en las actualizaciones, siempre en un entorno cliente servidor es mejor usar Querys

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

Martin Gomez
to Maxi

Seg�n la documentaci�n de MySQL y de SQLite (perdon, no tengo a mano los enlaces, pero lo he leido infinidad de veces) para hacer muchos insert se recomienda utilizar el siguiente procedimiento:
1.- Abrir Transaccion
2.- Query.SQL con parametros
3.- Query.Prepare <= aqui corre la parte mas costosa, el optimizador de querys
4.- loop con asignaci�n de parametros (byname no debiese retrasar tanto la operacion) y Query.ExecSQL
5.- Commit de la Transaccion

Las veces que lo he utilizado, tanto con MySQL como con MS SQL Server 2005 (componentes AnyDAC en Delphi 7), la transacci�n y los par�metros marcaban la diferencia, armando el texto cada vez resultaba entre 3 y 5 veces mas lento en el proceso general.

Espero que te sirva,
Saludos,
Mart�n

2012/10/10 Maxi <maximiliano.duarte en gmail.com>

Show quoted text 86 lines
El d�a 10 de octubre de 2012 06:02, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�: > Hola, los componentes eran Zeos (no recuerdo la versi�n) con conexi�n a > firebird y entorno Delphi (5 � 6) > > La pantalla no ten�a mucha cosas, un progresbar era lo �nico que requer�a > refresco. > > y las tablas (entre 8 y 10) ten�an bastantes registros pq conten�an u > historico de 3 � 4 a�os. > Siento no ser m�s claro, pero hace ya unos a�itos del tema. > Gracias, por tus respuestas. > Un saludo > > ________________________________ > De: "Jos� Mejuto" <joshyfun en gmail.com> > Para: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Enviados: Mi�rcoles, 10 de Octubre 2012 9:40:46 > > Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona > > El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribi�: > >> Siguiendo con este tema, siempre sospeche que el problema eran los >> numerosos parambyname que se ejecutaban durante el proceso. Es decir, >> que no era un problema de base de datos sino del proceso a la hora de >> traspasar los datos. El caso es que mi supervisor de entonces no me dej� >> hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo >> el tema. >> Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 >> o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el >> proceso tardara m�s que si montabas un string con la sentencia. >> > > Hola, > > No lo creo, veo m�s posible alg�n tipo de bug en los componentes que el > propio hecho de pasar par�metros "byName". Aunque los "byName" son > costosos, son locales y lo m�s lento deber�a ser en envio/recepci�n de > datos al hacer los prepare. Puede darse el hecho de que un bug realizara > el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera > modificado, por lo tanto tendr�amos la carga normal del prepare y > a�adidos todos los "byName" aunque multiplicar por 4 el tiempo de > proceso me parece excesivo. > > Ser�a interesante hacer algunas pruebas... Si tengo un rato har� un test > con una BD. > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > Ahi esta el tema del tiempo, el objeto ttable para motores sql no estaba aconsejado, incluso hoy tampoco lo aconsejan, porque esta por compatibilidad. el TTable trae a memoria casi toda la tabla y no es eficiente en las actualizaciones, siempre en un entorno cliente servidor es mejor usar Querys -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121010/a96419c9/attachment.html>

Reply by email

Jose Antonio. Cuello Principal
to Maxi: El d�a 10 de octubre de 2012 06:02, Jose Antonio. Cuello Principal <jcuello en…

Hola, hace much�simo que no uso TTables. Solo uso TZQuery, a veces enlazado con un TZUpdateSQL. Y a transacci�n, una sola. Es decir no hac�a commit por tabla o por insert. Cuando digo tabla, me refer�a a la base de datos.

No creo que fuese eso, pero gracias por la sugerencia. Un saludo

Earlier message 87 lines
----- Mensaje original ----- De: "Maxi" <maximiliano.duarte en gmail.com> Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Mi�rcoles, 10 de Octubre 2012 22:39:49 Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona El d�a 10 de octubre de 2012 06:02, Jose Antonio. Cuello Principal <jcuello en artextrading.com> escribi�: > Hola, los componentes eran Zeos (no recuerdo la versi�n) con conexi�n a > firebird y entorno Delphi (5 � 6) > > La pantalla no ten�a mucha cosas, un progresbar era lo �nico que requer�a > refresco. > > y las tablas (entre 8 y 10) ten�an bastantes registros pq conten�an u > historico de 3 � 4 a�os. > Siento no ser m�s claro, pero hace ya unos a�itos del tema. > Gracias, por tus respuestas. > Un saludo > > ________________________________ > De: "Jos� Mejuto" <joshyfun en gmail.com> > Para: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Enviados: Mi�rcoles, 10 de Octubre 2012 9:40:46 > > Asunto: Re: [Lazarus-es] Firebird zeos INSERT INTO no funciona > > El 10/10/2012 9:13, Jose Antonio. Cuello Principal escribi�: > >> Siguiendo con este tema, siempre sospeche que el problema eran los >> numerosos parambyname que se ejecutaban durante el proceso. Es decir, >> que no era un problema de base de datos sino del proceso a la hora de >> traspasar los datos. El caso es que mi supervisor de entonces no me dej� >> hacer pruebas y me lo hizo cambiar, luego pase a otras cosas y ah� quedo >> el tema. >> Es posible que al tener que hacer ejecutar muchos ParambyName (entre 10 >> o 15 no recuerdo exactamente cuantos eran) por cada insert hac�an que el >> proceso tardara m�s que si montabas un string con la sentencia. >> > > Hola, > > No lo creo, veo m�s posible alg�n tipo de bug en los componentes que el > propio hecho de pasar par�metros "byName". Aunque los "byName" son > costosos, son locales y lo m�s lento deber�a ser en envio/recepci�n de > datos al hacer los prepare. Puede darse el hecho de que un bug realizara > el prepare cada vez que se ejecutaba el SQL aunque este no se hubiera > modificado, por lo tanto tendr�amos la carga normal del prepare y > a�adidos todos los "byName" aunque multiplicar por 4 el tiempo de > proceso me parece excesivo. > > Ser�a interesante hacer algunas pruebas... Si tengo un rato har� un test > con una BD. > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > Ahi esta el tema del tiempo, el objeto ttable para motores sql no estaba aconsejado, incluso hoy tampoco lo aconsejan, porque esta por compatibilidad. el TTable trae a memoria casi toda la tabla y no es eficiente en las actualizaciones, siempre en un entorno cliente servidor es mejor usar Querys -- El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

José Mejuto
to Martin Gomez: Seg�n la documentaci�n de MySQL y de SQLite (perdon, no tengo a mano los enlaces,…

El 11/10/2012 0:45, Martin Gomez escribi�:

Show quoted text 11 lines
Seg�n la documentaci�n de MySQL y de SQLite (perdon, no tengo a mano los enlaces, pero lo he leido infinidad de veces) para hacer muchos insert se recomienda utilizar el siguiente procedimiento: 1.- Abrir Transaccion 2.- Query.SQL con parametros 3.- Query.Prepare <= aqui corre la parte mas costosa, el optimizador de querys 4.- loop con asignaci�n de parametros (byname no debiese retrasar tanto la operacion) y Query.ExecSQL 5.- Commit de la Transaccion

Hola,

Con respecto al commit si los registros a grabar son muchos de golpe, y los datos lo permiten es recomendable hacer el commit cada 10000 registros aproximadamente (depende del tama�o de los registros, los �ndices y las FKs en uso). Por supuesto a veces nuestros datos no lo permiten ya que son o todo o nada.

Reply by email