[Lazarus-es] Problema con Zeos e PostgreSQL en versión de Lazarus 2.00
Alfonso Arias Lemas
alfonsoariaslemas en gmail.com
Vie Abr 5 14:38:10 CEST 2019
Concuerdo con ambos, con José Mejuto y Pedro Pablo, estoy tratando de
mudar el Chip. Provengo de SQL Server y Visual Foxpro y allí si es muy
común este tipo de sentencia como el ejemplo de José de dos sentencias
SQL (select) que las considero normal ya que SQL Server lo permite
devolviendo los dos cursores, útil para disminuir los accesos al banco
de datos cuando las consultas son pequeñas pudiendo colocar tantas query
a devolver como se deseen.
En el caso de la respuesta de Pablo concuerdo también ya que los
procedimientos almacenados son mas rápidos y de echo ya comencé por esa
vía en algunos casos sin descartar el ejemplo que mandó José, muy
interesante y ya lo estoy implementando.
Una de las situaciones que tengo es la siguiente.
Mis sistemas generalmente hacen acceso a las bases de datos remotamente
en otro país, siempre fue así y trabajo sin problema con tiempos de
respuestas aceptables. El sistema tenia en determinadas circunstancias
que cargar tablas con mil o dos mil registros y en algunos momentos mas,
eso tenia que realizarse en el momento, no de noche ni en periodos de
poco movimiento. Yo lo que hacia era crear una query con todos los
INSERT juntos y se los pasaba a Postgresql, con la versión 1.8 de
Lazarus y Zeos 7.1.x se procesaba todo en un tiempo aceptable. Ahora que
hice el upgrade para lazarus 2.00 y Zeos 7.2.x me da ese error.
Entretanto ya me estoy apoyando en el ejemplo de José de forma a usar
transacciones, espero que esta vía también tenga mas o menos el mismo
efecto pues no tengo mucho tiempo, en esta semana la aplicación estuvo
parada debido a este problema casi todos los dias y lo que tengo es la
cabeza echando humo por la gente reclamando, se podrán imaginar.
Saludos
*Alfonso**Arias Lemas *
El 5/4/2019 a las 6:58 AM, José Mejuto via Lazarus-es escribió:
> El 04/04/2019 a las 23:46, Alfonso Arias Lemas via Lazarus-es escribió:
>
>> Resalto que esto no sucedía antes.
>> Haciendo un /debugger /(depurando el sistema) tomo las sentencias SQL
>> para PostgreSQL que da error desde el sistema y a modo de ejemplo:
>>
>> *UPDATE app.a_arbol SET cod='00096',descrip='MTCV' WHERE id=5200;
>> UPDATE app.a_pt SET
>> longitud=-23.491440000000,latitud=14.919906000000,control_ip=0,circuito_comando=True,comentario='',
>> potencianominal=20.0,tipofornecimento=1,estado=True WHERE idarbol=5200;
>> *
>> las coloco en el analizador de consultas del pgadmin e corren
>> perfectamente mas si ejecuto esta misma sentencia desde el programa
>> me da el error anterior.
>
> Hola,
>
> Múltiples sentencias en un único query no se deben de usar, porque si
> eso es válido, esto también debería serlo y verás que no tiene sentido:
>
> -------
> SELECT * from TABLENOMBRES;
> SELECT * from TABLECOCHES;
> -------
>
>> Busque en otros forum mas lo unico que sugieren es que realiza las
>> transacciones sentencia por sentencia pero yo necesito que sea
>> univoca y atómica, o sea, todo o nada.
>
> La transacción es eso, única y atómica. Todas las operaciones hasta
> que realices el Commit se harán en una sola operación, o el Commit
> fallará.
>
>>
>> Alguien sabe si para la versión esta de Lazarus 2.00 y Zeos 7.2.4
>> existe algún parámetro o propiedad nueva que permita hacer/definir
>> transacciones simples o complejas con mas de una sentencia.
>
> Supongo que estás trabajando en modo "AutoCommit", eso lo que hace es
> que cada vez que realices una operación se ejecuta un "Commit" oculto.
> En este ejemplo de stackoverflow te lo muestran con código de ejemplo:
>
> https://stackoverflow.com/questions/16759373/multiple-statements-delphi-tzquery-zeos-error
>
>
> Saludos.
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20190405/1e72ae91/attachment-0001.html>
Más información sobre la lista de distribución Lazarus-es