Newsgroup: it.comp.lang.delphi
Titolo: se manca il file mdb deve visualizzare un messaggio

Ciao a tutti, ho notato che se un'applicazione (fatta da me) che accede 
ad  un file mdb non trova il suddetto file, il programma non parte 
neanche e non succede niente, mentre io volevo che mi visualizzasse un 
messaggio del tipo che 'manca il database' o qualcosa'altro. Come posso 
fare? Dove intercetto il momento dell'accesso al db?
Grazie.
Inviato da 
www.mynewsgate.net

 dell'accesso al db?
Se sai il nome del file mdb, potresti semplicemente usare
if not FileExists(database.mdb) then ShowMessage('Aho! Ndo stà er
databeis???');
--
Jax
====
Ciò che è vita è amore, siamo amati e neppur lo sappiamo.

 qualcosa'altro. Come posso fare? Dove intercetto il momento
procedure ProceduraCheApreIlDatabase
begin
  if not FileExists(IlPathDelDatabase) then
    raise EMissingDatabase.Create('Il database ' + IlPathDelDatabase +
    ' non esiste.';
  ApriIlDatabase;
end;
Ovviamente potrai trappare l'eccezione e chiedere all'utente se desidera
creare il database oppure farglielo cercare in un'altra cartella.
Saluti
Paolo Arosio
-- 
"La dimostrazione dell'esistenza di specie intelligenti nell'universo
 e' che non ci vengono a trovare"

fare? Dove intercetto il momento dell'accesso al db?
quick & dirty:
NomeTuoDB := 'C:\pippo\peppo.mdb';
try
   if not FileExists(NomeTuoDB) then raise exception.create('database non
presente');
   Adoconnection.Open;   
except on e: exception do MessageDlg('Errore durante l'accesso al db :
'+E.Message, mtError, [mbOK], 0);
end;
-- 
Morde. 
(
mo...@despammed.com
)

 
Avevo pensato anche io qualcosa del genere però la procedura che apre il 
database non c'è, forse perchè lascio tutte le connessioni aperte in fase 
di compilazione? Mi sa che sto facendo una pirlata a lasciarle già 
aperte?!?!? 
Inviato da 
www.mynewsgate.net

 lasciarle già aperte?!?!?
In generale non è mai buona cosa, uno degli svantaggi l'hai scoperto tu
stesso: non hai nessun controllo sull'apertura, e se cambi cartella
dell'eseguibile, a meno che tu non usi un alias, ti darà sicuramente errore.
Un altro svantaggio è che spesso un'applicazione db-based non ha necessità
di mostrare dei dati presi dal db appena l'utente apre il programma; aprire
il db in creazione della main form quindi è inutile e quasi sempre genera un
rallentamento notevole e fastidioso (lanci l'applicazione ma non parte
subito, con conseguente e sicuro-come-la-morte altro doppio click
dell'utente).
Ti conviene aprire la connessione solo quando è necessario, e magari
chiuderla quando non lo è più.
--
Jax
====
Per giustificare la propria incapacità l'alibi del fallito è la
sfortuna.

 dell'utente).
LOL
Allora non accade solo a me che se per caso il mio prog all'avvio fa
qualcosa oppure il pc č 'sola' l'impaziente utente di turno si esercita in
numerosi dbclick direi quasi da giocatore di biglie...
Ciao

 
E adesso mi viene un'altro dubbio: mettiamo che le ADOConnection le apro a 
RunTime dopo che l'applicazione è avviata, quindi siccome le apro io posso 
mettere un bel IF not exist il DB then.... in modo che mi avvisi del 
problema, però dopo che ho aperto le ADO devo aprire una per una tutti i 
dataset e le Table?? Cioè, se compilo con ADOConnection chiuso vengono chiuse 
automaticmente anche tutti i vari componenti Table/Dataset, oppure quelli che 
sono aperti rimangono tali? (stasera comunque provo perchè sono curioso). 
Perchè io lascio aperti anche questi in fase di compilazione, ma non uso un 
DataModule, metto questi componenti direttamente sulla form a cui sono legati 
e gli passo la connessione alla form principale dove risiede ADOConnection, 
quindi dovrei far passare tutte le form alla ricerca.  
Inviato da 
www.mynewsgate.net

 componenti Table/Dataset
E' cosě. Devi aprirteli a mano (almeno, io la so cosě :))
--
Jax
====
Non si č mai troppo prudenti nella scelta dei propri nemici. (Wilde)