PDA

Visualizza la versione completa : [Delphi] tabelle e database


kate71
31-07-2003, 18:34
come posso aprire una sola connessione al database
piuttosto che aprire ogni singola tabella all'occorrenza?
ho circa 20 tabelle ora e aumenteranno!

(Delphi7, MySql - win2000)

Kate71

alka
31-07-2003, 19:50
Dipende dalla piattaforma che hai scelto per l'accesso ai dati: BDE, ZeosLib, dbExpress...?

Ciascuna di queste piattaforme mette a disposizione del programmatore un componente Database oppure Connection (hanno un nome simile a questi) che rappresenta, in modo centralizzato, la tua connessione di fatto alla base dati.

Non puoi comunque omettere i componenti Table che ti servono per collegarti ad una singola tabella.

Dalla tua domanda, suppongo che tu stia utilizzando il BDE, sbaglio?

Se devi creare un programma exnovo, io ti suggerirei di utilizzare qualcos'altro, ad esempio dbExpress, poichè Borland ritiene il BDE obsoleto e viene fornito con Delphi solo per la possibilità di aprire e ricompilare i "vecchi" progetti, nonchè effettuarne il porting verso altre piattaforme di accesso ai dati.

Ad ogni modo, usando il BDE puoi inserire un componente TDatabase sul DataModule o sul Form impostandone i parametri di connessione (ad esempio, l'AliasName del database a cui vuoi collegarti) e attribuendogli un DBName: quest'ultima proprietà permette di definire, a livello di applicazione Delphi, un alias che sarà visibile a tutti i componenti TTable che deciderai di inserire nello stesso DataModule o su un altro DM o Form che sia, affinchè si colleghino utilizzando i parametri del TDatabase che, nel caso in cui vengano modificati, saranno differenti anche per tutti i componenti TTable ad esso collegati.

Spero di averti dato sufficienti indicazioni.

Ciao! :ciauz:

kate71
01-08-2003, 11:37
si hai ragione utilizzo il BDE!
e in effetti ho provato ad utilizzare il componente TDatabase.
Sull' OnShow della Form ho messo:
Database1.Connected := True;
ma all'apertura della form, nessuna delle tabelle risultava
aperta... avendo tante tabelle... sembrerebbe un suicidio aprirle
e chiuderle in continuazione all'interno dell'applicazione.
(per non parlare del problema della finestra di
login e password (http://forum.html.it/forum/showthread.php?s=&threadid=496731 ) che ci porta ad un'altra discussione)

Kate71 :stordita:

alka
01-08-2003, 12:01
Quando devi utilizzare una tabella, devi aprirla...non c'è altra soluzione.

E' consigliabile verificare che la proprietà Active delle tabelle e la proprietà Connected del database siano a False quando salvi il progetto, poichè l'apertura viene effettuata a runtime (durante l'esecuzione) tramite codice.

Tra l'altro, non mi sembra un suicidio dover aprire le tabelle che si usano e, all'occorrenza, chiuderle se non servono più.

kate71
01-08-2003, 12:33
credevo che il componente Database potesse evitarmi
di aprire e chiudere le tabelle ogni volta!
ma se così non è ...pazienza!!

Grazie !!
Kate71 :ciauz:

alka
01-08-2003, 14:53
Originariamente inviato da kate71
credevo che il componente Database potesse evitarmi
di aprire e chiudere le tabelle ogni volta!

Il componente TDatabase consente di evitare la replicazione delle proprietà del database per ciascuna tabella, ma queste ultime devono essere aperte per poterne leggere e modificare i dati.

Poniti in un ambiente multiutenza in cui più persone accedono ad una tabella e ne modificano i dati: mantenere sempre i record bloccati inutilmente sarebbe massacrante...
Meglio definire via codice tramite apertura e chiusura della tabella corrispondente i momenti in cui vuoi garantirti un accesso esclusivo o segnalare che ne stai ispezionando i valori.

Nessuno ti vieta comunque di aprire, all'avvio del programma, tutte le tabelle e mantenerle aperte fino alla sua chiusura, ma tieni presente quanto ti ho detto sopra.

Ciao! :ciauz:

Loading