Newsgroup: it.comp.appl.access
Titolo: Riunire più tabelle in una.

Salve a tutti.
Avete passato buone vacanze?
Passano le stagioni passa il tempo, ma i problemi non accennano a finire...
e così ogni tanto eccomi qua: spero di non dare troppo disturbo.
Il problema è questo:
Ho cinque tabelle rispettivamente:
----tblALTRI------
IDAltro
Nominativo
------------------
----tblCLIENTI----
IDAzienda
RagioneSociale
------------------
----tblCOMMITTENTI----
IDAzienda
RagioneSociale
----------------------
----tblFORNITORI------
IDAzienda
RagioneSociale
----------------------
----tblPERSONALE------
IDPersonale
Nominativo
----------------------
queste sono le tabelle che vorrei unire (ci sono anche altri campi, ma non
sono rilevanti). Gli ID sono alcuni uguali (come denominazione altri diversi
e anche il secondo campo a volte si chiama Nominativo e altre
RagioneSociale... potrebbe essere un problema per quanto seguirà?
Infine ho la tabella dove vorrei che avvenisse il sunto o meglio:
---tblCORRISPONDENZA----
IDCorrispondenza
Tipo
IDTabella
IDDestinatario
------------------------
Per motivi di progettazione le cinque tabelle tblALTRI, tblCLIENTI,
tblCOMMITTENTI, tblFORNITORI e tblPERSONALE  devono rimanere separate,
nonostante questo, vorrei che nel campo IDDestinatario poter visualizzare le
RagioniSociali/Nominativi di tutte e cinque le tabelle.
La mia idea è stata questa:
realizzo una query di UNIONE così
------------- qryDESTINATARI ------------------------------
SELECT "AL" AS IDTabella, tblALTRI.IDAltro,  tblALTRI.Nominativo
FROM  tblALTRI
ORDER BY 1,3
UNION
SELECT "CL" AS IDTabella, tblCLIENTI.IDAzienda,  tblCLIENTI.RagioneSociale
FROM  tblCLIENTI
ORDER BY 1,3
UNION
SELECT "CO" AS IDTabella, tblCOMMITTENTI.IDAzienda,
tblCOMMITTENTI.RagioneSociale
FROM  tblCOMMITTENTI
ORDER BY 1,3
UNION SELECT "FO" AS IDTabella, tblFORNITORI.IDAzienda,
tblFORNITORI.RagioneSociale
FROM tblFORNITORI
ORDER BY 1, 3
UNION SELECT "PE" AS IDTabella, tblPERSONALE.IDPersonale,
tblPERSONALE.Nominativo
FROM  tblPERSONALE
ORDER BY 1, 3;
-------------------------------------------------------------
Questa query provvede ad associare un codice AL nel caso di ALTRI, CL nel
caso dei CLIENTI, CO nel caso dei COMMITTENTI, FO nel caso dei fornitori e
PE nel caso di PERSONALE, che permetta di stabilire da quale tabella
provengano ed evitare che vi siano conflitti essendoci più ID equivalenti
(numericamente).
Quello che vorrei fare io è questo:
scelto da una lista completa di Nominativi/RagioniSociali, vorrei che
venisse memorizzato:
- AL oppure CO oppure CL oppure ecc. , a seconda della tabella alla quale il
destinatario appartiene e prelevabile come informazione dalla prima colonna
della query, nel campo IDTabella, campo testuale di dimensione 2
- che contemporaneamente venisse memorizzato anche il corrispondente ID nel
campo IDDestinatario che di tipo numerico
Scusate il post.... forse un po' lungo.
Ringrazio di cuore anticipatamente tutti coloro che vorranno essermi
d'aiuto.
gallus

 ha scritto nel messaggio
news:BHxk7.17454$MO.6...@news.infostrada.it...

.....CUT
Le query di Unione richiedono lo stesso tipo di dati e lo stesso nome di
campi.
Credo che la soluzione sia quella di creare tante query di Accodamento alla
tabella tblCorrispondenza per quante sono le tabelle previste.
Un esempio di Query di Accodamento per la Tabella "Altri" è il seguente:
INSERT INTO tblCORRISPONDENZA ( IDDestinatario, IDTabella )
SELECT tblALTRI.IDAltro, "AL" AS Codice
FROM tblALTRI
WITH OWNERACCESS OPTION;
Oppure per la tabella Committenti:
INSERT INTO tblCORRISPONDENZA ( IDDestinatario, IDTabella )
SELECT tblCOMMITTENTI.IDAzienda, "CO" AS Codice
FROM tblCOMMITTENTI
WITH OWNERACCESS OPTION;
Lo stesso potrai fare con le altre tabelle.
Prima di questa procedura ricorda di svuotare la tabella Corrispondenza per
fare posto ai nuovi dati.
Con la tabella Corrispondenza potrai fare, poi, ciò che vuoi.
Ciao, Carlo

 ha scritto nel messaggio
news:BHxk7.17454$MO.6...@news.infostrada.it...

Se la query di unione ti da questa già questa informazione che problema hai
utilizza la query di unione (anche se rallenta l'applicazione) come fonte
dati della lista che vuoi utilizzare e se vuoi memorizzare anche l'ID di
tipo numerico fai una routine associata all'evento che ti è più congeniale
es.: su click, su doppio click, dopo aggiornamento della lista (casella di
riepilogo).
Ciao Roberto - Syd