Sign in Join

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

Mailing lists / lazarus-es / 2015-12

¿Como conseguir hacer varias SQL juntas?

6 messages · 5 people · –

Reply by email Subscribe to this list Your subscription

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

SocGer

Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o update. Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos componentes. Por ejemplo un insert, despu�s un update y despues una select.

En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base de datos sin modificar los componentes.

Adem�s tambi�n necesito crear funciones o procedimientos en la base de datos en tiempo real desde estos componentes y no consigo tampoco hacerlo.

Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede alguien enviarme ejemplos o un link, que me aclare como conseguir hacer las dos cosas que no consigo?. La de hacer varias consultas dentro de una misma estructura SQL (Insert, update y select) y la de conseguir crear sobre la base de datos un procedimiento o una funci�n.

Muchas gracias por vuestra labor de formaci�n y gracias de antemano por vuestra ayuda.
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20151222/8bb05b06/attachment.html>

Reply by email

Maxi
to SocGer

Si entiendo bien a tu pregunta debes usar el SqlScript, donde en cada linea terminada con el ; o caracter que elijas termina la sentencia y comienza la otra.
Pero no creo sirva para hacer un select, porque esto justamente ejecuta un lote de sentencias hacia el servidor.
Cada query tiene 3 datos que corresponden a insert,update, delete, en el cual puedes poner la sentencia que desees que va a ser llamada dependiendo si llamaste a query.insert, query.delete o query.post

Para crear algo en la base lo haces con un query pero en vez de hacer open, usas excecsql.

El d�a 22 de diciembre de 2015, 6:03, SocGer <socger en gmail.com> escribi�:

Show quoted text 26 lines
Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o update. Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos componentes. Por ejemplo un insert, despu�s un update y despues una select. En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base de datos sin modificar los componentes. Adem�s tambi�n necesito crear funciones o procedimientos en la base de datos en tiempo real desde estos componentes y no consigo tampoco hacerlo. Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede alguien enviarme ejemplos o un link, que me aclare como conseguir hacer las dos cosas que no consigo?. La de hacer varias consultas dentro de una misma estructura SQL (Insert, update y select) y la de conseguir crear sobre la base de datos un procedimiento o una funci�n. Muchas gracias por vuestra labor de formaci�n y gracias de antemano por vuestra ayuda. _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

SocGer

El d�a 22 de diciembre de 2015, 6:03, SocGer <socger en gmail.com> escribi�:

Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o

update.

Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos componentes. Por ejemplo un insert, despu�s un update y despues una

select.

En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base

de

datos sin modificar los componentes. Adem�s tambi�n necesito crear funciones o procedimientos en la base de

datos

en tiempo real desde estos componentes y no consigo tampoco hacerlo. Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede alguien enviarme ejemplos o un link, que me aclare como conseguir hacer

las

dos cosas que no consigo?. La de hacer varias consultas dentro de una

misma

Show quoted text 5 lines
estructura SQL (Insert, update y select) y la de conseguir crear sobre la base de datos un procedimiento o una funci�n. Muchas gracias por vuestra labor de formaci�n y gracias de antemano por vuestra ayuda.

***************************************************************************************** *****************************************************************************************

Gracias a todos, pero creo que me expliqu� a medias.

Lo que nos comenta Maxi, es cierto

Para crear algo en la base lo haces con un query pero en vez de hacer open, usas excecsql.

Y as� lo hago.

Pero imaginar que tengo que hacer un Insert en una tabla y luego despu�s un Update. Ok?

Pues si los dos los intento hacer dentro de un solo query y usando execSQL, me genera un error.
Sin embargo si los hago por separado ... dos query, funciona perf�ctamente.

Pero no me interesa hacer dos query, porque otro usuario puede entrar al mismo tiempo (entre el Insert y el Update) y modificarme algo que no debe mientras estoy haciendo estos pasos. Es decir que tengo que entrar yo primero en el motor de base de datos hacer el Insert y el Update, y luego otro usuario si quiere despu�s de mi.

Por eso de hacerlo todo sobre una SQL y en un solo query.

Si alguien lo consigui�, me puede decir como. Por supuesto sin usar funciones sobre la Base de Datos ni procedimientos almacenados.

Saludos y gracias de antemano.
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20151223/abfb393a/attachment.html>

Reply by email

Carlos Enrique Rodriguez
to SocGer

Hola,
si no entend� mal, lo que quer�s hacer no se puede sin usar un trigger o un stored procedure.
Trato de explicarme un poco: Al hacer el insert, est�s bloqueando el registro hasta que se realiza el commit de la transacci�n. Ah� creo que est� el gran problema, porque al hacer commit perd�s el control sobre el registro y cualquiera lo puede modificar antes del update. Dos sentencias sobre el mismo registro en la misma transacci�n, hasta donde yo se no se pueden hacer (generalmente cuando se combinan sentencias que se afectan entre si el motor nos devuelve error por Deadlock).

No se qu� motor usas (si lo mencionaste antes, te pido disculpas por no recordarlo), pero si quer�s pod�s plantear el caso concreto y creo que entre todos podemos hallar una soluci�n puntual a tu problema

Saludos
Carlos

Gracias a todos, pero creo que me expliqu� a medias.

Show quoted text 35 lines
Lo que nos comenta Maxi, es cierto >Para crear algo en la base lo haces con un query pero en vez de hacer >open, usas excecsql. Y as� lo hago. Pero imaginar que tengo que hacer un Insert en una tabla y luego despu�s un Update. Ok? Pues si los dos los intento hacer dentro de un solo query y usando execSQL, me genera un error. Sin embargo si los hago por separado ... dos query, funciona perf�ctamente. Pero no me interesa hacer dos query, porque otro usuario puede entrar al mismo tiempo (entre el Insert y el Update) y modificarme algo que no debe mientras estoy haciendo estos pasos. Es decir que tengo que entrar yo primero en el motor de base de datos hacer el Insert y el Update, y luego otro usuario si quiere despu�s de mi. Por eso de hacerlo todo sobre una SQL y en un solo query. Si alguien lo consigui�, me puede decir como. Por supuesto sin usar funciones sobre la Base de Datos ni procedimientos almacenados. Saludos y gracias de antemano. _______________________________________________ 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/20151223/10041ad0/attachment.html>

Reply by email

Maximiliano Duarte
to SocGer: El d�a 22 de diciembre de 2015, 6:03, SocGer <socger en gmail.com> escribi�: update.…

Ya te expliqu�. Debes usar el sqlscript, sirve para eso. Pero primero debes reveer el acceso y bloqueo que quieres lograr. Ya los motores lo tienen resuelto de muchas maneras

Earlier message 69 lines
-----Mensaje original----- De: "SocGer" <socger en gmail.com> Enviado el: ?23/?12/?2015 19:31 Para: "lazarus-es en lists.lazarus.freepascal.org" <lazarus-es en lists.lazarus.freepascal.org> Asunto: Re: [Lazarus-es]�Como conseguir hacer varias SQL juntas? El d�a 22 de diciembre de 2015, 6:03, SocGer <socger en gmail.com> escribi�: > Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o update. > Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos > componentes. Por ejemplo un insert, despu�s un update y despues una select. > > En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo > hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base de > datos sin modificar los componentes. > > Adem�s tambi�n necesito crear funciones o procedimientos en la base de datos > en tiempo real desde estos componentes y no consigo tampoco hacerlo. > > Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede > alguien enviarme ejemplos o un link, que me aclare como conseguir hacer las > dos cosas que no consigo?. La de hacer varias consultas dentro de una misma > estructura SQL (Insert, update y select) y la de conseguir crear sobre la > base de datos un procedimiento o una funci�n. > > Muchas gracias por vuestra labor de formaci�n y gracias de antemano por > vuestra ayuda. ***************************************************************************************** ***************************************************************************************** Gracias a todos, pero creo que me expliqu� a medias. Lo que nos comenta Maxi, es cierto > Para crear algo en la base lo haces con un query pero en vez de hacer > open, usas excecsql. Y as� lo hago. Pero imaginar que tengo que hacer un Insert en una tabla y luego despu�s un Update. Ok? Pues si los dos los intento hacer dentro de un solo query y usando execSQL, me genera un error. Sin embargo si los hago por separado ... dos query, funciona perf�ctamente. Pero no me interesa hacer dos query, porque otro usuario puede entrar al mismo tiempo (entre el Insert y el Update) y modificarme algo que no debe mientras estoy haciendo estos pasos. Es decir que tengo que entrar yo primero en el motor de base de datos hacer el Insert y el Update, y luego otro usuario si quiere despu�s de mi. Por eso de hacerlo todo sobre una SQL y en un solo query. Si alguien lo consigui�, me puede decir como. Por supuesto sin usar funciones sobre la Base de Datos ni procedimientos almacenados. Saludos y gracias de antemano. ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20151224/95e0d148/attachment.html>

Reply by email

Jose Antonio Cuello
to SocGer: El d�a 22 de diciembre de 2015, 6:03, SocGer <socger en gmail.com> escribi�: update.…

Hola, lo que describes es justo una transacci�n. B�sicamente abre una transacci�n, luego ejecutas todas las sentencias de insert, update o delete que desees (ya sea con un SqlScript como te indica Maxi o en queries separadas enlazadas a la misma transacci�n) y cuando terminas cierras la transacci�n.

Todos los registros usados en la transacci�n no pueden ser usados (en la mayor�a de los casos, existen maneras seg�n el tipo de transacci�n) por otros usuarios, pero el due�o de la transacci�n puede modificar varias veces un mismo registro si as� lo desea.

Espero te sea de ayuda, un saludo y felices fiestas.

De: "SocGer" <socger en gmail.com>
Para: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Enviados: Mi�rcoles, 23 de Diciembre 2015 23:31:10 Asunto: Re: [Lazarus-es] �Como conseguir hacer varias SQL juntas?

El d�a 22 de diciembre de 2015, 6:03, SocGer < socger en gmail.com > escribi�:

Show quoted text 19 lines
Buenas, uso los componentes TSQLQUery para hacer consultas, Insert o update. Pero no consigo por ejemplo hacer varias cosas al mismo tiempo con estos componentes. Por ejemplo un insert, despu�s un update y despues una select. En Delphi 5 consegu�a hacerlo sin problemas mediante ODBC, pero deseo hacerlo con los componentes TSQLQUery por la facilidad de cambiar de base de datos sin modificar los componentes. Adem�s tambi�n necesito crear funciones o procedimientos en la base de datos en tiempo real desde estos componentes y no consigo tampoco hacerlo. Tiene que ser posible seguro, pero igual no lo estoy haciendo bien. �Puede alguien enviarme ejemplos o un link, que me aclare como conseguir hacer las dos cosas que no consigo?. La de hacer varias consultas dentro de una misma estructura SQL (Insert, update y select) y la de conseguir crear sobre la base de datos un procedimiento o una funci�n. Muchas gracias por vuestra labor de formaci�n y gracias de antemano por vuestra ayuda.

***************************************************************************************** *****************************************************************************************

Gracias a todos, pero creo que me expliqu� a medias. Lo que nos comenta Maxi, es cierto

Para crear algo en la base lo haces con un query pero en vez de hacer open, usas excecsql.

Y as� lo hago.

Pero imaginar que tengo que hacer un Insert en una tabla y luego despu�s un Update. Ok?

Pues si los dos los intento hacer dentro de un solo query y usando execSQL, me genera un error. Sin embargo si los hago por separado ... dos query, funciona perf�ctamente.

Pero no me interesa hacer dos query, porque otro usuario puede entrar al mismo tiempo (entre el Insert y el Update) y modificarme algo que no debe mientras estoy haciendo estos pasos. Es decir que tengo que entrar yo primero en el motor de base de datos hacer el Insert y el Update, y luego otro usuario si quiere despu�s de mi.

Por eso de hacerlo todo sobre una SQL y en un solo query.

Si alguien lo consigui�, me puede decir como. Por supuesto sin usar funciones sobre la Base de Datos ni procedimientos almacenados.

Saludos y gracias de antemano.

Reply by email