Newsgroup: it.comp.appl.access
Titolo: STRUTTURA ASTRATTA DA TABELLE FISICHE

Salve ragazzuoli,
so che è una questione complessa, ma secondo voi, in rif. all'oggetto,
quanto potrebbe essere fattibile creare e poi concretamente utilizzare
una struttura del genere?... vi spiego.
Vorrei creare un sistema che mi crei solo virtualmente tabelle - campi
- registrazioni, in modo tale da non dover poi agire sulla struttura
per aggiungere o eliminare uno qualsiasi di questi elementi, ma agire,
per farlo, direttamente sui records.
Sarebbe un bel risultato da raggiungere secondo me.
Questa la specifica iniziale :
- TABELLA :
Tbl_Tables
- CAMPI :
cmp_TableName (PK)
- TABELLA :
Tbl_Fields
- CAMPI :
cmp_TableName (PK)
cmp_FiledPosition
cmp_FieldName (PK)
cmp_FileldKey
cmp_FieldDataType
cmp_FieldSize
cmp_FiledDefaultValue
...altri campi...
- TABELLA :
Tbl_ValueFields
- CAMPI :
cmp_PK (PK)
cmp_RegistrationGroup (inserire lo stesso numero per campi
appartenenti allo stesso record)
cmp_TableName
cmp_FieldName
cmp_Value
- QUERY :
qry_TableContent 'Per vedere le registrazioni fatte... relative a una
tabella specifica (nell'esempio TAB1)
- SPECIFICA SQL :
TRANSFORM First([%$##@_Alias].cmp_Value) AS PrimoDicmp_Value
SELECT [%$##@_Alias].cmp_RegistrationGroup AS PK
FROM [SELECT Tbl_ValueFields.cmp_RegistrationGroup,
Tbl_Tables.cmp_TableName, Tbl_Fields.cmp_FieldName,
Tbl_ValueFields.cmp_PK, Tbl_ValueFields.cmp_Value
FROM (Tbl_Tables LEFT JOIN Tbl_Fields ON Tbl_Tables.cmp_TableName =
Tbl_Fields.cmp_TableName) LEFT JOIN Tbl_ValueFields ON
(Tbl_Fields.cmp_TableName = Tbl_ValueFields.cmp_TableName) AND
(Tbl_Fields.cmp_FieldName = Tbl_ValueFields.cmp_FieldName)
ORDER BY Tbl_ValueFields.cmp_PK]. AS [%$##@_Alias]
WHERE ((([%$##@_Alias].cmp_TableName)="TAB1"))
GROUP BY [%$##@_Alias].cmp_RegistrationGroup
ORDER BY [%$##@_Alias].cmp_RegistrationGroup
PIVOT [%$##@_Alias].cmp_FieldName;

 ha scritto nel messaggio 
news:f9c5b8cf-3730-45e0...@c17g2000prm.googlegroups.com...
Salve ragazzuoli,
come se lo dicessi ad un bimbo di 2 anni, cosa vuoi ottenere?
Antonio

 ha scritto nel messaggio 
news:psTJo.8311$uT.3...@twister1.libero.it...

Voglio ottenere la gestione di tabelle virtuali.
Voglio che con poche tabelle di sistema possa crearmi a livello records un 
sistema di tabelle... :)
ti ho girato un esempio sulla mail... ;) guardatelo... ho buttato giů le 
basi... 

 
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

?
"pablitomf"  ha scritto nel messaggio 
news:f9c5b8cf-3730-45e0...@c17g2000prm.googlegroups.com...
Salve ragazzuoli,
so che č una questione complessa, ma secondo voi, in rif. all'oggetto,

Questa la specifica iniziale :





__
Hola
Io semplificherei il tutto
id Numerico
iTipo Numerico
Tutt' e due PK
nvInfo
Poi ho una tabella dei tipo
1. Valore del campo
2. Tipo del campo
3. Nome Campo
Quindi se voglio sapere il valore la mia ricerca sarą solo su (id, 1) [Per 
id intendo il valore dell'id]
se ho bisogno di sapere che tipo di campo č quello dell'id 10 mi basta 
cercare WHERE id = 10 AND iTipo = 2
Nelle form poi userei collection e strutture tipo
Poi dipende da cosa vuoi fare


Se non ho capito male vuoi fare il "catalogo"  (tabelle di sistema)  di 
un qualsiasi altro DBMS che non sia access.
Cioe' + o - quello che sta in dbengine.workspaces.databases.tabledefs ?
-- 
ac (x=y-1)

 Cioe' + o - quello che sta in dbengine.workspaces.databases.tabledefs ?
No...
io voglio cercare di metter su una struttura standard di DB che riesca
a farmi avere alla fine tabelle virtualizzate che altro non sono che
interrogazioni del contenuto delle tabelle standard di cui prima...
Es.
Se nella TAB_TABLES ho il record CURRICULUM,  nella TAB_FIELDS dovrò
avere tutti i campi (registrati come records) relativi alla tabella
CURRICULUM (cmp_NomeTabellaRif - cmp_NomeCampo)
In questo modo avrò correlazione tra TAB_TABLES e TAB_FIELDS avendo la
vera struttura della/e tabella/e a livello records.
Ora mi basterà solo metter su la tabella dei contenuti (UNICA) dei
vari campi delle varie tabelle, e con sole 3 tabelle (o qualcosina in
piu' che non ho ancora valutato) io avrò a disposizione l'intera
struttura delle tabelle compresa di contenuti... non so' se ho reso
l'idea.
Es. TAB_CONTENUTI  - CAMPI: ID - cmp_NomeTabRif - cmp_NomeCampo -
cmp_ValoreCampo)
Dove vorrei arrivare? ad astrarmi totalmente dalla struttura del DB, e
interagire con le tabelle utili al mio sistema (CURRICULUM piuttosto
che "n" altre) direttamente da Records...
Domani mi servirà insierire a sistema una nuova tabella (Es CITTA') ?
ecco che aggiungerò in TAB_TABLES il nuovo records con il nome
CITTA'... per poi andare in TAB_FIELDS e aggiungere i campi della
nuova tabella CITTA' affinchè poi possa movimentarla successivamente
in TAB_CONTENUTI
Io credo sia una bella idea... ma non so quanto in realtà sia
applicabile (parlo di velocità di esecuzione delle attività dovendo
poi anche astrarre relazioni tra tabelle, join eseguire query...). Ad
esser fattibile e' fattibile... ma conviene?... certo che non dovresti
più avere manutenzioni sui db (se hai individuato tutti i dati che
sono necessari a gestire bene la cosa), ma solo sui contenuti per
metter mano alle tabelle (virtuali)... gran cosa gia' questa.

 Poi dipende da cosa vuoi fare
leggi cio' che ho scritto ad alessandro

 spingono e dell'ambito in cui useresti questa soluzione...
E' un concetto di astrazione generale, quindi applicabile a tutto...
diverrebbe un gestore di Tabelle, Campi, Relazioni univoco, e
l'astrazione ti permetterebbe manutenzione da struttura virtuale di
tabella (records) e non più da intervento su struttura fisica di
tabella...
Ho chiarito meglio la cosa in risposta ad Alessandro... leggi un
po'...
Ovviamente non e' scienza, e' ipotesi, e' studio (mi sto
RADICALIZZANDO :D ) ecco perche' cercavo un perere... ;)

?
"pablitomf"  ha scritto nel messaggio 
news:5a7473d5-f049-47a5...@y23g2000yqd.googlegroups.com...


___
Proprio leggendo quel messaggio mi sono convinto che la mia idea sia buona
Tu hai un CV e avrai una struttura 1 a molti
tab CV
ProtNum
DataAccettazione (inuile se lo metti nel protnum)
Cognome
Nome
Stato
Tutto il resto verrà nella tabella molti
dove
ProtNum, TipoInfo (numerico), Info Testo
1 = data di nascita
2 = Luogo di nascita
Ovvi che ti serve la tab di appoggio che referenzia i valori e varai
valore (quel 1 che ti serve)
TipoInfo (testo - quel "luogo di nascita)
TipodiCampo in modo che puoi formattare come vuoi l'info di risposta
Ciao MA

 
fermo restando che soluzioni del genere esistono e si usano, nella tua 
ipotesi hai solo spostato il punto in cui fare manutenzione, aggingendo di 
contro un livello di complessita' in fase di interrogazione. 
e impedendo di fatto l'accesso diretto ai dati: devi conoscere la
struttura per interpretare il contenuto delle tabelle per ricostruire
poi i dati. 
secondo me per rispondere alla domanda 'conviene?' *DEVI* avere un
contesto, altrimenti la risposta che mi viene piu' spontanea e' 'dipende'. 


 contesto, altrimenti la risposta che mi viene piu' spontanea e' 'dipende'.
io parto dal presupposto che l'astrazione conviene a prescindere...
infatti il "conviene" non si basava sull'astrazione ma sul
funzionamento... nel senso "funzionerebbe" realmente?...

 
ci sono molte librerie di astrazione per vari linguaggi di programmazione 
che semplificano molte cose, ma un livello di astrazione nel db a me non 
sembra essere una soluzione da usare in lungo e in largo per qualsiasi 
cosa.
dipende.


 No...
Capito.
Ho messo mano ad un applicativo che in qualche modo si comportava nel 
modo che descrivi. Aveva una tabella "Documenti" in cui dentro c'era di 
tutto.
Sono diventato piu' scemo di quello che sono per metterci mano.
Inoltre ho la vaga impressione che in questo modo, ove fosse necessario, 
e' praticamente impossibile gestire la integrita' referenziale.
Per farla ancora piu' rognosa (era un DB Progress) tutte le 
manipolazioni dei dati erano filtrate da storedprocedure. Spostare una 
virgola era come la realizzazione del ponte sullo stretto (di Messina 
naturalmente)
Tra l'altro mi sembra di aver fatto una cosa del genere ma l'ho rimossa 
ne ho solo una vaghissima "rimenbranza".
-- 
ac (x=y-1)