Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92

    [Delphi] tabelle e database

    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

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    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 che ci porta ad un'altra discussione)

    Kate71

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    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ù.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    credevo che il componente Database potesse evitarmi
    di aprire e chiudere le tabelle ogni volta!
    ma se così non è ...pazienza!!

    Grazie !!
    Kate71

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    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!
    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.