Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    44

    Gestione database con query di unione

    Salve
    ho creato un database aziendale formato da alcune tabelle utilizzando Access 2003 con fonte dati ODBC.
    Per semplificare la cosa dirò che ho creato 2 tabelle: TabellaA, TabellaB con gli stessi campi presenti su tutte e 2 le tabelle (sempre per semplificare ipotizziamo di avere 2 campi per ogni tabella: Campo1 e Campo2).
    A questo punto ho la necessità di creare una terza tabella che sia l'unione delle precedenti 2 tabelle.
    Per creare la terza tabella ho creato una "Query di unione" (chiamata UNIONE) semplicemente unendo la tabelle A e B con il seguente codice in SQL:
    __________
    SELECT * FROM TabellaA
    UNION
    SELECT * FROM TabellaB
    ORDER BY Campo1;
    ___________

    A questo punto però vorrei utilizzare una tabella ottenuta da questa Query, cioè una tabella che sia l'unione di tutte le altre: come si può fare?
    La questione è che per aggiornare il database utilizzo un semplice programma fatto in Borland 5: quando aggiorno le TabelleA e B separatamente non ci sono problemi, quando invece cerco di aggiornare i dati contenuti nelle 2 tabelle selezionando però la query UNIONE, in ambiente Borland mi compare il messaggio di errore:
    <<Microsoft Driver ODBC Microsoft Access. Per l'operazione è necessaria una query aggiornabile....>>
    Sembra che la Query non possa andare a modificare i singoli record delle tabelle che unisce...ma come posso fare? Ho bisogno di avere una tabella che sia l'unione di tutte le altre tabelle e ho la necessità di modificare i record delle singole tabelle selezionando però la tabella unione.
    Spero di essere stato più chiaro possibile.
    Grazie a chi voglia aiutarmi.
    Marco

  2. #2
    sembra essere una limitazione del driver. forse l'unica soluzione è quella di creare una terza tabella *fisica* e lavorare su quella

    prima la cancelli

    DROP TABLE TabellaC

    poi la ricrei

    SELECT * INTO TabellaC FROM
    (
    SELECT * FROM TabellaA
    UNION
    SELECT * FROM TabellaB
    ORDER BY Campo1
    )

    a questo punto hai una tabella (TabellaC) perfettamente lavorabile

    HTH

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Sono un pochino perso. Borland 5 significa Delphi 5?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    44
    Per optime
    Potrebbe essere una buona idea, il problema (credo) è che ogni volta che si interviene sulla singola tabella A o B del database, bisogna poi rilanciare la query di UNIONE per tenere aggiornata anche la tabellaC.
    Una soluzione in Borland 5 potrebbe essere quella di lanciare all'interno del programma la query ogni volta che si seleziona la TabellaC, ma ho paura che così le cose si complichino, anche perchè non so un gran che di Borland
    Grazie

    Per franzauker
    No Delphi 5 è un'altra cosa


    Scusatemi ma non so come si risponda singolarmente alle varie risposte...

  5. #5
    e comunque Borland mi pare sia una casa editrice di software, non un programma o un linguaggio

  6. #6
    Originariamente inviato da MakB76
    Per optime
    Potrebbe essere una buona idea, il problema (credo) è che ...
    ma quando aggiornerai la tabC ti si debbono aggiornare a ritroso la tabA e la tabB?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    44
    In effetti il linguaggio di programmazione è il C, Borland è l'ambiente ad oggetti che si utilizza per la creazione del programma (tipo visual basic)...una cosa del genere, non sono un grande esperto

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    44
    Si in effetti è vero anche questo...se aggiorno la tabellaC devono aggiornarsi anche A e B e viceversa...è un gran casino

  9. #9
    non credo che access sia in grado di gestire l'aggiornamento a ritroso, né tantomeno triggers (del tipo: tocco la tabA o la tabB e automaticamente si ri-genera la tabC)

    1. o cambi db
    2. o ti scrivi tutta le gestione a manina


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.