Newsgroup: it.comp.lang.delphi
Titolo: Errore dll, qualche idea?

Salve a tutti del'NG
Mi capita un errore strano quando vado ad aggiornare una tabella in rete. In
pratica aggiorno esclusivamente un contatore e mi esce un errore veramente
particolare. Oltretutto questra dll (GDS32.DLL) non sapevo nemmeno che
esistesse fno ad oggi e mi sono trovato che invece mi da un ACCESS
VIOLATION. L'aggiornamento lo eseguo tramite Store Procedure ma presumo
esuli da questo l'errore che mi viene ritornato.
Qualche anima buona mi sa indicare dove sbaglio?
Grazie infinite in anticipo...(Uso Delphi 5 Pro e Interbase 5)
------------------------------------------------------------------------
Access violation at address 40561CDC in modulo 'GDS32.DLL'
------------------------------------------------------------------------
Demetrio Battaglia

non trovi sia un po poco x capire di cosa si tratta?
Dici solo che facendo un aggiornamento su ib5 vai in AV.
Bye
A.

<modalita SALVATI = ON>
  sistema operativo?
<modalita SALVATI = OFF>
hai provato a reinstallare interbase?
bye
Leo :)

E' vero, scusami sono stato piuttosto vago.... Cercherò di essere un po' più
preciso.
Allora:
La store procedure che esegue l'aggiornamento sulla tabella del server è
questa.
---------------------------------------------
ALTER PROCEDURE "PROGRESSIVO_BOLLA"
(
  "CODDIT" VARCHAR(1)
)
RETURNS
(
  "PROGRES" INTEGER
)
AS
BEGIN
  UPDATE DITTA SET PROBOL=(PROBOL+1) WHERE COD_DIT = :CODDIT;
  SELECT PROBOL FROM DITTA WHERE COD_DIT = :CODDIT
  INTO :PROGRES;
END
 ^
------------------------------------------------
il campo che viene aggiornato, come vedi è il numero bolla. Da programma non
faccio altro che chiamare questa StoreProc per aggiornare a +1 il contatore
del nr. bolla e questa mi restuisce l'errore che ho scritto nel post
precedente.
Fatto ancora più strano è che questo applicativo gira in una rete di una
decina di pc, mentre provando nella mia piccola rete di 3 soli pc con però
le stesse caratteristiche (Server NT - Client 98/2000) non solleva mai
questa eccezione, nemmeno eseguendo le stesse procedure che hanno scatenato
l'errore nell'altra rete. I file GDS32.DLL sono identici e quindi anche le
installazioni sia degli Interb. client e server.
La sequenza di azioni che solleva l'errore è questa:
1) Inserimento di una nuova bolla
2) Annullamento delle operazioni eseguite per errore dell'utente
3) Re-inserimento della stessa bolla con altri dati.
4) Salvataggio dati bolla. In quel momento (all'atto del salvataggio) si
solleva l'error.
La chiamata alla storeProc è questa
----------------------------------------------------------------
 with StorProcBolla do
        try
         ParamByName('CODDIT').AsString := Cod_Dit;
         Prepare;
         ExecProc;
        Except
            on e:exception do
                MessageDlg('(Errore - ' + e.Message + ' )',
MtWarning,[mbOk], 0);
        end;
----------------------------------------------------------------
Grazie infinite e spero di essere stato un po' più completo.
Demetrio
"Alberto Salvati" <x@x.x> ha scritto nel messaggio
news:ai8npn$2qed$1...@newsreader1.mclink.it...


Strano che Jax non sia intervenuto....
I dettagli andrebbero forniti in prima istanza senza che chi vuol fornire
qualche indicazione sia costretto a chiederli con conseguente perdita di
tempo da parte di tutti.
+ che una "modalita salvati on/off" credo si tratti di pura e semplice
logica, o no? ;-))
E ricorda che la modalità AVANZATA salvati è SOLO MIA!!! ;-)))
Bye
AS

         end;
comunque non penso sia per questi motivi che ti viene generata l'AV ...
fossi in te proverei a re-installare il client -prima- e se non funzia
ancora re-installerei IBServer.
bye
Leo :)

 E ricorda che la modalità AVANZATA salvati è SOLO MIA!!! ;-)))
ok... ma x quella standard si potrebbe creare un componente .....
ModeSalvati.Active := true;
..........
.......
..........
............
ModeSalvati.Active := false;
bye
Leo :)

commenta il try..except quando chiami la SP.
Il tuo codice nasconde il messaggio di errore.
Poi, togli il prepare, altrimenti ad ogni esecuzione lui alloca risorse sul
server, a meno che tu non metta un unprepare nella finally:
with StorProcBolla do
begin
          ParamByName('CODDIT').AsString := Cod_Dit;
          ExecProc;
Se la sp fallisce non ottieni una Exception, ma un qualcosa che eredita da
TExpection, tipo EDatabaseError et similia che includi dettagli sull'errore
che si è verificato che TException non ha.
TryIt&Bye
A.

 e poi per i parametri, io prima li creo sempre.
Scusami: a cosa serve?
I params di una SP, a meno che non usi l'overload di Oracle sono sempre
quelli.
Bye
A.


hai ragione, scusa, non ti ho detto che le SP le creo dinamicamente!
o meglio... le CREAVO dinamicamente, appena arrivato in questa softwarehouse
.... mancava solo che mi facessero  creare dinamicamente anche i componenti
visuali!
adesso mi sto "spostando" come scuola di pensiero, nel senso che preferisco
astrarre il piu' possibile il server DB ... che succede se oggi uso IB6 con
un sacco di SP e domani voglio passare a mySql??
poi ovviamente sono tutti punti di vista personali!
ciao!
Leo :)

 un sacco di SP e domani voglio passare a mySql??
Dato l'sql "povero" di ib6, il problema sarebbe + il contrario.
prova a passare da Sybase a Interbase e vedi.... ;-((
Sybase ha un core da far paura..
Ha tante di quelle funzioni che ti ci perdi...
Bye
A.


purtroppo non ho avuto ancora modo di provarlo .... ma  interbase ci si puo'
sempre divertire con le UDF  che pero' non sono ancora riuscito a scrivere
con delphi!! (ma sinceramente non c'ho perso su + di troppo tempo!)
cmq qui al lavoro usiamo SQLServer 2000 .... ma x fortuna oggi è
l'ultimissimo giorno!!! (non x via di SQL2000 ma x tutto il resto!!)
a presto
Leo :)

Accedi via bde?
Se si, lancia sqlmonitor prima della tua app e vedi cosa succede a livello
di database.
Ma devi proprio usare ib5? Non puoi passare alla 6?
Bye
A.

Ah... altro tassello della telenovela, mi sono accorto, dopo una serie di
tentativi che da un altro client invece lo stesso eseguibile funziona
benissimo. Temo si sia sputtanato qualcosa nel client dove faccio le prove
io, perchè a questo punto penso sinceramente a Lourdes. Ho reinstallato
Interbase ma il risultato non cambia. Sapete se c'è qualcosa di collegato
con il benedetto GDS32.DLL che potrebbe rovinarmi la festa.
Non accedo via Bde.
Sto provando anche con SqlMonitor.
Grazie ancora....
"Alberto Salvati" <x@x.x> ha scritto nel messaggio
news:aianas$7kr$1...@newsreader1.mclink.it...


 ha scritto nel messaggio
news:%n729.152550$Jj7.3...@news1.tin.it...


 chiamate al bde.
...si me ne sono accorto.
Ho Interbase 6, me ne ero dimenticato.
Già reinstallato Ibclient....stessa solfa.
...aveva ragione mio padre quando mi diceva di trovarmi un lavoro serio
invece che "pigiare dei tasti dalla mattina alla sera"....
Non demordo comunque ;-)
"Alberto Salvati" <x@x.x from office> ha scritto nel messaggio
news:aib0uj$adi$1...@newsreader1.mclink.it...
