Prender un valore da una tabella avendo colonna e riga ext

di il
8 risposte

Prender un valore da una tabella avendo colonna e riga ext

Ciao a tutti,

mi sa mi sono infilato in un guado! Per lavoro uso e scrivo script in VBA senza problemi ora il mio capo vuole spostare alcune tabelle in access ed io rispondo che non c'è problema ed invece sto perchè alcune cose non riesco a farle fare ad Access, spero di trovare un aiuto in questo forum consigliato da un mio amico.

IL mio problema è questo:

ho un file excel fatto così
che ha 2 fogli uno chiamato "elenco" con campi (città,norma1, norma2, norma3)
e l'altro chiamto "DB" dove c'è una tabella con colonna le voci di "norma2" e riga "norma1".
Il campo norma3 di "elenco" viene generato tramite l'incrocio nella matrice dei valori che vengono immessi in norma1 e norma2 nello stesso foglio "elenco".

Ora ho importato tutto in access creato la tabella città, norma2 e norma1 che contiente la matrice per fare l'incrocio, ma non riesco a fare una query che produca il campo norma3 .

I due fogli excel sono fatti così:

Elenco
-----------------------------------------
Città |norma1|norma2 |norma3|
rm | 4.3 | 5.6 | 4.9|
rm | 4.5 | 5.7 | 8.9|
mi | 5 | 4 | 6 |
-----------------------------------------

DB
------------------------------
norma1 |5.6 |5.7 |4 |
------------------------------
4.3 |4.9 | 6 | |
4.5 | | 8.9 | |
4.6 |3.4 | | 5 |
5 | | 5 |6 |
-------------------------------

il campo norma3 si genera attraverso
=CERCA.VERT(H2; DB!$AJ$2:$AM$26; CONFRONTA(I2; DB!$AJ$2:$AM$2;0);0)

Come ricreo la cosa in ACCESS?

SPero di essere stato un minimo chiaro.

Grazie ancora e buona pasqua

8 Risposte

  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Per me non si possono mischiare con così troppa leggerezza le logiche di due applicazioni (Excel e Access) apparentemente simili, ma con logiche progettuali completamente diverse, con lo stesso approccio.
    Se devi fare calcoli e ricalcoli, riprese di valori di qua o di là, lavora in Excel che questo lo fa al volo.
    Se devi COSTRUIRE UN DATABASE ti immergi in Access, ma consapevole che i valori da scrivere dentro i campi ce li devi mettere tu e NON POSSONO ESSERE FRUTTO DI CALCOLI. A parte il fatto che occorre rispettare un minimo di normalizzazione.
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Ciao Osvaldo,

    si l'ho pensato anche io non trovando nulla anche in rete che risolva una cosa del genere, però se non considero lo storico e volessi fare un db dove 1 campo che viene inserito in una maschera è frutto di due campi precedentemente immessi derivando da una relazione tra i due valori credo sia possibile pensarlo anche in access, oppure è proprio un mio modo di pensare errato per un db?

    Grazie per la risposta.
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    È sbagliato l'approccio. Nelle TABELLE di un database si vanno a inserire VALORI che SOLO L'UTENTE deve digitare. Valori che io chiamo PRIMORDIALI. Tutto ciò che vuole essere frutto di calcoli, risultati di espressioni ecc. lo si fa con le QUERY. Bada bene che anche le query di Access lavorano in un modo completamente diverso di come avresti approcciato tu in Excel. In Excel è molto più facile pensare i giochi di righe/colonne. Access questo lo fa mal volentieri. Ogni tentativo di forzatura di questo genere deve necessariamente passare attraverso rocamboleschi giri di codice VBA...non ne vale la pena e soprattutto si rischia di perdere il senso stesso di un database e dell'applicazione Access. In Access contano i RECORD presi come un tutt'uno: sono loro che parlano.
    Se provi a leggere un manuale di base di Access ti renderesti conto dell'enorme differenza fra le due applicazioni.
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Ciao Osvaldo,

    scusa l'ignoranza, io posso considerare i dati PRIMORDIALI, e immagino il mio utente che sta inserendo il record e con una query voglio verificare che il dato che sta inserendo esista nel DB dei dati PRIMORDIALI.

    Solo che per verificare questo dato devo fare una serie join tra tabelle immagino per ottenere un tipo di relazione come quella tra righe e colonne.

    Quello che non comprendo è come creare una join di questo tipo perchè mi chiama ambiguita di extjoin.

    Se io ho anomalie,processo, norma e punto della norma come le tabelle record dei miei dati dove:
    anomalie ha un elenco di anomalie con varii record tra cui un processo e una norma e una punto della norma, io voglio però che l'utente quando sta inserendo il record nel punto della norma sia coerente con l'annesso processo e norma. Posso pensarla come una join? O sto proprio fuori rotta , premetto che nel we mi leggo un manuale anche se non credo di riuscire ad arrivare a una conoscenza cosi accurata come mi serve, ma almeno sapere che sono sulla buona strada aiuta:)

    grazie ancora
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Ho provato a rileggere tutto il thread. Non ci ho capito nulla. Il mio punto di vista (quello archivistico più vicino a Access) gradirebbe i seguenti punti di descrizione:
    1. Di cosa parla il tuo database
    2. Quali tabelle hai già: nomi propri di tabelle
    3. Per ogni tabella voglio sapere tutti i nomi propri dei campi. Poi quale è il campo chiave primaria
    4. Le relazioni
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Si scusa cerco di essere il più chiaro possibile

    1. il database è un elenco di anomalie legate alle norme iso 9001, 14001 e 18001, per ogni città dove ho una sede.
    2e3.ho quindi creato le seguenti tabelle nome(campi):
    Elenco_anomalie(Id(chiave),id_Città, id_processo, id_norma, id_pto_norma,data_apertura, data_chiusura)
    citta(id,nome)
    Processo(id(chiave), processo)
    Norma(id(chiave), norma)
    Iso_9001(id(chiave), pto_norma, id_processo)
    Iso_14001(id(chiave),pto_norma,id_processo)
    Iso_18001(id(chiave),pto_norma,id_processo)
    4.relazioni:
    Elenco_anomalie.Id_processo relazionato 1 a molti con Processo.Id (JOIN SX cioè include tutti i campi di elenco_Anomalie)
    Elenco_anomalie.citta relazionato 1 a molti con Città.Id
    Elenco_anomalie.id_norma relazionato 1 a molti con Norma.Id (JOIN SX)
    Elenco_anomalie.id_pto_norma relazionato 1 a molti con le varie tabelle ISO sempre sulla chiave sempre JOIN SX e relazionato anche con Processo.Id_processo in selezione solo righe uguali.

    Spero di essere stato esausitvo.



    Il problema è che i punti dei capitoli della norma per le varie iso 9001, 14001, 18001 possono avere gli stessi capitoli.
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    Ho una serie di problemi di comprensione:
    1. Ribadisco la mia domanda 1.: Di cosa parla il tuo database? Non ci capisco nulla del tuo campo professionale
    2. Cosa sono i Processi?
    3. Cosa sono le Norme?
    4. Cosa sono le Anomalie?
    5. Cosa sono i tre ISO di cui parli?
    6. Perchè hai tre tabelle separate ISO?
    7. Processi e Norme mi fanno pensare alla Giurisprudenza...ma poi ISO...?

    Se devi creare un database partendo da zero, avendo un assemblaggio tabelle non normalizzato, consiglio di aprire un nuovo thread nella sezione "Progettazione database". Rispiega tutto da capo dando anche una descrizione per non addetti a i tuoi lavori. La discussione qui rischia di allontanarsi dal titolo iniziale (già lo fa...).
    Ti consiglio di fare così.
  • Re: Prender un valore da una tabella avendo colonna e riga ext

    OK provo come mi hai suggerito.

    Grazie ancora, buona pasqua.
Devi accedere o registrarti per scrivere nel forum
8 risposte