Newsgroup: it.comp.appl.access
Titolo: comportamento non coerente

Ciao,
una domanda che puo' sembrare sciocca, e che forse lo e', ma non riesco
a venirne a capo:
Ho una maschera in cui visualizzo dei dati, controllata da bottoni
goPrev e goNext, goPrev deve essere disabilitato quando siamo sul primo
elemento; goNext deve esere disabilitato quando siamo sull'ultimo.
ho inserito questo codice per l'evento current della form:
    If Me.CurrentRecord = 1 Then
        Me!goPrev.Enabled = False
    Else
        Me!goPrev.Enabled = True
    End If
    If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then
        Me!goNext.Enabled = False
    Else
        Me!goNext.Enabled = True
    End If
Funziona egregiamente tranne che all'apertura della form sul primo
elemento, in cui mi trovo disabilitati entrambi i bottoni.
Per vedere agire in maniera corretta il codice devo prima andare
all'ultimo record con il tasto goLast, dopo di che tutto funziona.
Ho provato ad andare in debug, ed ho verificato che al caricamento passa
per le istruzioni che disabilitano il goPrev e abilitano il goNext, ma
il risultato a video e' diverso.
Ad aggiungere dubbi c'e' anche il fatto che in modalita' debug invece di
eseguire correttamente lo routine (come accade in modalita' normale) il
db si blocca dandomi come errore :
Errore di runtime -
2147467259
Il database e' stato messo dall'utente Admin dal computer ... in uno
stato che non consente di aprirlo o di bloccarlo.
Grazie
Alessandro
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 il risultato a video e' diverso.
Hai controllato che la routine si concluda senza errore?
Sib

termina senza errore se non in debug, se fisso un breakpoint da'
l'errore che dicevo, e che non capisco a cosa sia dovuto.


 > elemento; goNext deve esere disabilitato quando siamo sull'ultimo.
Cut
Non per entrare nel merito, ma perche' "Devono" essere alternativamente
disabilitati?
Io lo trovo un inutile appesantimento del codice.
Sib

"Sib" <si...@SPAMMiol.it> wrote in message
essendo una maschera di visualizzazione per evitare che possa andare, se
sono n item, all item n+1 per cui non troverebbe valori validi.


Andando in Debug mi sono accorto che l'errore e il blocco si hanno
quando eseguo queste operzioni:
private sub form_current()
...
...
myfunc()
pubblic myfunc()
dim rst as ADODB.Recordset
set rst = new ADODB.Recordset
with rst
    .activeconnection = cSource //contiene il path.
    .open(...)
end with
...
il blocco avviene quando crca di eseguire .ActiveConnection.
Cerco di fare qualche operazione scorretta?


 Cerco di fare qualche operazione scorretta?
Secondo me la cosa scorretta che fai e' gestire con ADO le tabelle locali.
L'errore avviene perche' quando sei in debug il db nega l'accesso agli altri
utenti e quando cerchi di aprire un'altra connessione ti da errore.
Insisto che quel codice e' superfluo, meglio gestire l'errore nell'evento
click del pulsante o mettere un if che ti butta fuori se sei all'inizio o
alla fine rispettivamente.
Sib

A questo punto urge una domanda:
Io sono agli inizi con i db:
ho creato un db con piu' tabelle correlate, nella tabella A ho un campo
indice id che ha una corrispondenza in tabella B.
Se tratto la tabella A e necessito del testo associato al id scrivo una
funzione che mi apre la tabella B cicla fino a trovare l'id passato
dalla tabella A e poi torna il valore.
E' un approccio corretto o sto' complicando le cose?
Grazie
Alessandro


 E' un approccio corretto o sto' complicando le cose?
Prima di tutto, l'uso di ADO con tabelle locali e' sconsigliabile. Dividi il
db (c'e' l'autocomposizione nel menu strumenti)
Poi certo che stai complicando le cose, che vuol dire che "cicli" la tabella
B fino a trovare...
Se ti serve un record della tabella B devi usare il metodo Find o Seek.
Comunque non e' chiaro cosa devi fare.
Sib