Newsgroup: it.comp.lang.delphi
Titolo: Problema con ADO Query

Salve a tutti... Vi spiego spero in modo comprensibile il mio problema...
Lavoro in delphi5 e lavoro con un db interbase
Il mio problema e' questo...
Lavorando con piu' postazioni mi si presenta un problema quando interrogo 
delle query... ( succede anche sul mio pc se lancio piu' volte il 
programma )
Quando entro in una form ... sul oncreate apro una query select * from 
articoli where id_cliente = qy_clientiid.asstring.... e fino a qua tutto a 
posto...
Se il primo utente entra in questa form e comincia ad inserire n articoli 
funziona...
Il secondo utente quando entra nella stessa form... e l'oncreate fa la 
stessa query ( id_cliente puo' essere anche diverso ) sulla open il 
programma si blocca finche' il primo utente nn e' uscito completamente dalla 
form....
Ho provato a cambiare i settaggi delle query nel locktype da ltOptimistic a 
ltUnspecified o ltBatchOptimistic ma nulla e' cambiato...e anche il 
cursortype in ctKeyset , ctDynamic ecc... ma nn ho notato nessuna differenza 
e comunque il secondo che entra resta sempre bloccato...
Avete qualche suggerimento 



 Avete qualche suggerimento 
Prova a fare qualche esperimento per capire meglio dove avviene il 
problema: se chiudi la query senza uscire dalla form cosa succede? Se 
provi a scorrere tutti i record fino in fondo appena aperta la query?
Controlla che non sia la connessione al DB ad avere settaggi strani.
ciao
Giacomo

 ha scritto nel 
messaggio news:YpfMk.88754$Ca.2...@twister2.libero.it...


 :(
Ma il tuo programma quando la apre la transazione? Quando apri la form
di inserimento fatture? Non e' la modalita' corretta: devi aprire la
transazione solo un breve momento in cui spedisci i dati al DB non
mentre lavori sulla form...
ciao
Giacomo

 ha scritto nel 
messaggio news:8N4Ok.181680$FR.4...@twister1.libero.it...


 cosě?
No: č sbagliato: non servono a quello le transazioni.
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Non faresti così?
Non e' l'uso giusto delle transazioni..
Se cerchi con pazienza nei post passati, troverai decine e decine di 
thread dove si è parlato della numerazione dei documenti..
Potresti calcolare la numerazione DENTRO la transazione e non coincide 
mai con la primary key.. creati una tabella di contatori alla quale 
accedi prima dell'ultima scrittura, sotto transazione ovviamente, ti 
leggi l'ultimo contatore magari lockando il record, lo assegni al 
record padre e con la commit il gioco è fatto. I figli di questo record 
hanno il riferimento alla PK del padre non c'entra il numero documento.
Non so se mi sono spiegato bene, scrivo da casa e non ho tempo di 
approfondire.. (e poi se mi ci metto anche da casa impazzisco del 
tutto..) ciao
-- 
Morde

 Non faresti cosě?
Questo sistema va bene quando c'e' un solo utente che lavora.
Se vuoi lavorare bene in multiutenza questo non e' il modo giusto: devi 
tenere le tue informazioni sul client il piu' possibile e poi spedirle 
tutte assieme in una unica transazione al salvataggio/chiusura della form.
Per farlo devi impostare la query in modo da usare un cursore lato client.
Ogni volta che fai Post il record non viene spedito al server ma viene 
tenuto in memoria sul client.
Quando vuoi salvare apri la transazione, esegui query.Applyupdates e poi 
chiudi la transazione. ApplyUpdates esegue tutte le istruzioni 
corrispondenti alle modifiche effettuate sul dataset.
Va da se che lavorando cosi' le modifiche vanno fatte tutte cambiando 
record nel dataset e non esequendo direttamente query sul server.
ciao
Giacomo

> Non faresti così?


 Andrò a leggermi i vecchi post sulle transaction  :-(
Buona lettura!
ciao
Giacomo