Newsgroup: it.comp.appl.access
Titolo: set Dbs=currentdb mancante

Ma il debug non me lo segna.....Compilazione ok, esecuzione no (nel senso che
si inchioda tutto...)
dim Dbs as database
dim StrSql as string
StrSql="blablabla..."
dbs.execute ...
ma ho lasciato nelle penna
set dbs=currentdb
Sapete come può accadere questo?
Grazie
-- 


Hai verificato lew LIB DAO che siano prima di quelle ADO...(sempre che
ti servano queste)....
@Alex

 Grazie
-- 
Ciao
Geppo 


Riferimenti ok e per di + standard (ADO non l'ho manco messo). Il mio dubbio
era solamente sul perchč in fase di compilazione non mi abbia dato errore come
doveva fare....d'altronde non ho instanziato il 'coso'.....
-- 

 doveva fare....d'altronde non ho instanziato il 'coso'.....
Forse perche' in fase di compilazione viene solo verificata la
congruenza e consistenza di variabili e loro uso?
Per intenderci, il codice sotto compila ed esegue senza problemi
Dim Prima As Long, Seconda As Long, Terza As Long
Prima = 10
Seconda = 2
Terza = Prima / Seconda
Questo, invece, compila senza problemi, ma in esecuzione ... CRASH!!!
Dim Prima As Long, Seconda As Long, Terza As Long
Prima = 10
Seconda = 0
Terza = Prima / Seconda
E questo perche' l'uso che fai delle variabili dichiarate e'
sintatticamente e formalmente corretto tranne (e qui scatta l'errore a
runtime) nel momento in cui cerchi di dividere per zero.
Ovviamente e' solo un esempio in piu' rispetto a quello che hai
fornito tu.
IMHO!!!
Popi

Popi
Il tuo caso è lampante! Ma se invece si utilizza una variabile oggetto senza
istanziarla di solito il debug se ne accorge.....ma, in effetti, da prove
fatte se non setto la variabile database in debug nn fa una piega mai....Ma,
stessa routine, se tolgo per esempio 
set Rst =dbs.openrecordset(....)
non appena tento di usare Rst mi dice 'Variabile non definita'......
Di sicuro mi sfugge qualcosa........
-- 

 Di sicuro mi sfugge qualcosa........
In una mia form gia' esistente ho inserito il codice seguente.
Private Sub Form_Open(Cancel As Integer)
    Dim rsDati As DAO.Recordset
    rsDati.Edit
End Sub
Anche l'occhio meno esperto nota che:
1) rsDati non viene istanziato
2) manca una update (o cancelupdate)
3) rsDati non viene chiuso
4) rsDati non viene distrutto
Ma il compilatore di tutto questo non s'avvede perche' il suo compito
e' quello del notaio, che verifica solo se metodi e proprieta' degli
oggetti (AFAIK anche una variabile e' o viene trattata come se fosse
un oggetto [1]) sono corretti ed applicabili alla dichiarazione
dell'oggetto.
A dimostrazione, in una maschera esistente ho messo questo codice.
Private Sub Form_Open(Cancel As Integer)
    Dim ControlloMaschera As Control
    Set ControlloMaschera = Me.ProgressivoModifiche
    ControlloMaschera.Dropdown
End Sub
La compilazione non segnala problemi, dato che il metodo Dropdown e'
lecito per la classe Control, ma a runtime salta fuori un errore
poiche' l'oggetto ControlloMaschera e' stato inizializzato usando una
TextBox che non supporta il metodo utilizzato.
In soldoni, il notaio deve solo verificare l'ammissibilita' di quanto
vuoi fare, e non avvisarti se facendolo ti farai male.
Popi

 wrote:
[1] Voi che ne sapete ben piu' di me, please, illuminatemi in
proposito.


Il compilatore controlla solo la sintassi. Non s'interessa se
una variabile ha un valore o contenuto. Siccome hai
dicchiarato la variabile tutto è ok per lui.
L'errore che ricevi nell'esecuzione è un errore di runtime (91)
non un errore di compilazione come sarebbe p.e. senza la
dicchiarazione (anche questo solo con Option Explicit) o
con un errore di sintassi.
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 


Questo l'ho capito, e dev'essere certamente cosě. Ma xchč allora con l'oggetto
recordset se evito il set mi da errore in compilazione? Scusate l'insistenza
ma volevo chierirmi le idee....Per Popi: anche io ho provato ad aprire un
recordset dopo la dichiarazione (effettivamente perň non avevo dichiarato
esplicitamente DAO o ADO recordset......mi sa che stň cominciando ad
illuminarmi.....)
-- 

 ...
O non ti capisco o non ti credo. ;-)
Se p.e. hai solo
Dim rst As Recordset
rst.Update
non ricevi un errore di compilazione perché il Set non interessa
al compilatore.
Se hai un'impressione diversa, mostra tutto il codice che ti dà
l'errore di compilazione soprattutto _con le dicchiarazioni_.
