Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Connessione a database in Delphi

    Ciao a tutti!
    Avrei un piccolo problemino in Delphi...

    Ho un'applicazione che si attacca a SQL Server, ma l'applicazione deve girare anche quando non c'è la rete!

    Io per connettere il database uso il componente TDataBase, e faccio un'istruzione "nomedatabase.open", ma quando la rete è giù, la open si "impianta" e mi esce un'errore!

    Come posso gestire questo errore per farsi che non esca all'utente?

    Spero che qualcuno possa aiutarmi.
    Grazie!!!

    Fabio Mitic

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Ti risponderei in modo molto semplice: non chiamare il metodo Open.

    Non ti consiglierei di ingabbiare la chiamata al metodo Open all'interno di un costrutto try...except altrimenti non ti verrebbero più notificate le eccezioni "vere" e non previste che si possono verificare in condizioni di funzionamento normale.

    E' ovvio che se il tuo programma prevede operazioni le quali presuppongono una connessione attiva verso il database, ti troveresti a dover gestire una marea di eccezioni.
    In tal caso, adotta un metodo alternativo per la "modalità offline" del tuo programma.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Io ho previsto una modalità offline per il mio programma, ma il mio problema è che devo sapere quando la rete è su!

    Cioè, la open potrei farla solo quando la rete è su, però devo saperlo quando la rete è su!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    In tal caso, puoi racchiudere la chiamata al metodo Open all'interno di un blocco try...except; nella parte except...end inserisci codice di gestione dell'eventuale errore che si verifica.

    Fai una prova sperimentale e controlla quale classe (tipo) di eccezione viene generata quando la rete è offline; se intercetti un simile errore, o più in generale non riesci ad aprire il tuo database, allora il tuo programma funzionerà in modalità offline (magari avverti opportunamente con un messaggio).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Purtroppo ho provato, ma la open non riesce a gestirmela come eccezione... è questo che non capisco!

    Io ho fatto un costrutto tipo questo:

    try
    database.open;
    trovato = True;
    expect
    trovato = False;
    end;

    dove database è il nome del database e trovato è una variabile booleana.
    Se la rete è giù, quando passa dall'istruzione open si impianta comunque, cioè non passa nell'expect....
    Sono in braghe di tela se non funziona così!

    Grazie comunque

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da FabioMitic
    Se la rete è giù, quando passa dall'istruzione open si impianta comunque, cioè non passa nell'expect....
    Sono in braghe di tela se non funziona così!
    Questo perchè - molto probabilmente - stai eseguendo il debug all'interno di Delphi (che si ferma automaticamente alle eccezioni), ma il file eseguibile si comporta correttamente.

    Se vuoi verificare il comportamento in Delphi, togli la spunta Stop on Delphi exceptions dalla finestra di dialogo Debugger Options.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    scusa ma mi sono dimenticato di dirti che ho
    già provato ad eseguire l'exe, senza debug, ma niente da fare!

    Tenta di aprire il database, ma quando non ci riesci butta fuori un errore di connessione, con scritto che praticamente non riesce a connettere l'odbc (mi collego su sql server con l'odbc).

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Tutto ciò mi sembra molto strano... :master:

    Hai qualche componente che interviene nella gestione delle eccezioni, ad esempio ApplicationEvents?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.