[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