Gestione DataBase con Access 2003

lunedì 14 marzo 2011 - 16.18
Tag Elenco Tags  Windows XP

MakB76 Profilo | Newbie

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

dinoxet Profilo | Senior Member

SALVE A TE,
GENERALMENTE ACCESS DA QUESTO MESSAGGIO :
<<Microsoft Driver ODBC Microsoft Access. Per l'operazione è necessaria una query aggiornabile....>>
QUANDO I RECORD DELLA TABELLA NON SONO IDENTIFICABILI CON UNA CHIAVE UNIVOCA
QUINDI DIREI CHE BISOGNA DARE UN OCCHIATA AL COLLEGAMENTO ALLE TABELLE PROBABILMENTE GIA QUELLE NON LE PUOI MODIFICARE...

FAMMI SAPERE.

CIAO.
DINOXET
__________________________________________
impossible is only a word

MakB76 Profilo | Newbie

No, le singole tabelle possono essere modificate senza problemi.
La situazione è la seguente: con il programma di gestione del database che ho fatto in Borland 5 eseguo un comando che scansiona i vari record delle tabelle e se è verificata una certa condizione allora va a modificare un determinato campo del record. Ora se eseguo questo comando partendo da un selezione di una singola tabella allora il comando va a buon fine, se eseguo il comando partendo dalla selezione della query allora ottengo il messaggio di errore riportato..

lbenaglia Profilo | Guru

>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?

Ciao Marco,

Le query di unione non sono aggiornabili. Punto.
Un estratto dai Books Online di SQL Server (ma vale anche per Access): "Columns that are formed by using the set operators UNION, UNION ALL, CROSSJOIN, EXCEPT, and INTERSECT amount to a computation and are also not updatable".

Come fare? L'unica soluzione è aggiornare le singole tabelle.

>Grazie a chi voglia aiutarmi.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

MakB76 Profilo | Newbie

Ok, allora invece di usare la query di unione potrei usare un altro tipo di query che come risultato mi dia sempre l'unione delle tabelle ma che possa aggiornare anche i record delle tabelle che unisce?
Grazie ancora

lbenaglia Profilo | Guru

>Ok, allora invece di usare la query di unione potrei usare un
>altro tipo di query che come risultato mi dia sempre l'unione
>delle tabelle ma che possa aggiornare anche i record delle tabelle
>che unisce?
L'unione dei result set la puoi ottenere solo tramite l'operatore UNION [ALL].

>Grazie ancora
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5