Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118

    Aggiunta di nuovi campi a una tabella.

    Non capisco come o se nelle Vcl sia possibile, in una applicazione per database, poter aggiungere nuovi campi a una tabella senza necessariamente doverla riscrivere.

    Ho provato diverse aggiunte, ma il massimo risultato ottenuto è di aver aggiunto nuovi campi alla tabella caricata in memoria.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Il linguaggio? :master: C++? Delphi?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Il linguaggio è Delphi.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Non hai indicato i componenti che usi, non hai indicato il formato del database...
    Come si fa a darti una risposta precisa?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    I componenti sono IBTable, IBDatabase e IBTransaction.
    Il database è Firebird.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da cshark
    I componenti sono IBTable, IBDatabase e IBTransaction.
    Il database è Firebird.
    Qualsiasi modifica alla struttura del database avviene tramite gli appositi comandi DDL (Data Definition Language), un sottoinsieme dei comandi SQL dedicati alla creazione e all'alterazione degli elementi strutturali del DB.

    Se non si vuole specificare manualmente il comando, esistono specifici tool appositi per modificare la struttura del database, come IB Expert, agendo visualmente sugli elementi del DB per apportare le modifiche necessarie (tramite generazione automatica degli script).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Ti ringrazio infinitamente Alka.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Ho aggiunto nuovi campi attraverso il codice SQL, il problema è che il componente IBTable non si aggiorna automaticamente.
    Cioè l'oggetto che contiene la lista dei campi "FieldsList" risulta avere l'array vuoto.
    Bisognerebbe ridefinirli anche in codice Delphi i campi dopo averli aggiunti al database?

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Delphi genera automaticamente oggetti che rappresentano i campi della tabella quando questa viene aperta tramite il metodo Open.

    Esiste tuttavia la possibilità di fare doppio clic sul componente per richiamare il Field Editor e aggiungere la definizione di tali campi al DFM in modo persistente (da qui il nome di "campi persistenti"), modificando le proprietà come l'etichetta descrittiva, il formato di visualizzazione e altro ancora.

    In questo caso, però, Delphi tiene conto di queste impostazioni quali struttura della tabella, e non genera automaticamente gli oggetti di tipo TField corrispondendi ai campi dinamicamente, con le caratteristiche predefinite, pertanto è necessario aggiungere manualmente i nuovi campi o farli aggiungere automaticamente a Delphi richiamando di nuovo il Field Editor e selezionando "Add fields...", ad esempio.

    Ricapitolando, per poter lavorare coi campi è necessario disporre di oggetti TField lato Delphi nel componente DataSet generico (qualsiasi tabella o query, quindi); tali oggetti vengono creati dinamicamente da Delphi con caratteristiche automatiche (e corrette, in genere), oppure sono modificabili dallo sviluppatore che può renderli persistenti e manipolare fissando le proprie caratteristiche la struttura della tabella lato Delphi.

    Dal punto di vista dell'accesso tramite codice, la scelta è ininfluente: per ottenere il riferimento ad un campo di un DataSet, è possibile usare il metodo FieldByName e agire tramite le sue proprietà per modificare il valore del campo specifico per il record corrente in vari modi.

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

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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Quindi aggiungendoli tramite codice SQL sarebbe come lavorare in nero.
    I campi creati in questa maniera sono destinati a rimanere sconosciuti a Delphi?

    Grazie ancora.

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.