Problema con tabella "Parametri"

di il
13 risposte

Problema con tabella "Parametri"

Buonasera sono nuovo del forum, ho trovato con google questo interessantissimo forum e sono qua per sottoporvi una problematica che mi stà facendo diventare matto.
Premetto che non sono un asso con access, ma dovrei creare un sistema che data una tabella proveniente da Autocad che contiene informazioni relative alle connessioni di determinati oggetti su altri oggetti, in base a queste informazioni vorrei tirare fuori un tempo totale di assemblaggio.
il mio settore è il biomedico, in particolare mi occupo di circuiti per circolazione extracorporea, un settore di nicchia e non c'e' nulla di pronto ma è tutto da sviluppare
Fatta questa premessa vi illustro il mio problema:
Ho una tabella "parametri" che contiene:
TipoAsseblaggio e TempoAssemblaggio
Poi ho una tabella proveniente da Autocad che contiene:
CodiceComponente, TipoAsseblaggioP1 TipoAssembalggioP2 .... TipoAssembalggioPN (PN sono i punti di connessione di CodiceComponenete)

Vorrei fare in modo di ottenere una nuova tabella query con:
CodiceComponente TempoAssemblaggioP1 TempoAssemblaggio2 .... TempoAssemblaggioPN

Che detto così sembra semplice, ma ne stò uscendo matto, mi piacerebbe fare tutto senza l'utilizzo di codice VBA ma con il solo utilizzo delle query.

Secondo voi è fattibile?

Grazie.

13 Risposte

  • Re: Problema con tabella "Parametri"

    Nessuno mi sa aiutare.
    Tengo a precisare che non so quanti punti di assemblaggio ho, ma non andrò mai oltre i 30 punti.
    Pensavo di creare una tabella composta da CodiceComponente, TempoAssemblaggioP1,TempoAssemblaggioP2...TempoAssemblaggioP30 e dopo copiare i codici componenti e i tempi di assemblaggio, ma questi ultimi sono da ricercare nella tabella parametri in base a TipoAsseblaggioPN.
    Ma non ho idea di come fare.
    Mi date una aiutino?
  • Re: Problema con tabella "Parametri"

    Shark79 ha scritto:


    Ho una tabella "parametri" che contiene:
    TipoAsseblaggio e TempoAssemblaggio
    Poi ho una tabella proveniente da Autocad che contiene:
    CodiceComponente, TipoAsseblaggioP1 TipoAssembalggioP2 .... TipoAssembalggioPN (PN sono i punti di connessione di CodiceComponenete)
    Hai solo 2 tabelle? Sono relazionate?
    Una tabella TipiAssemblaggi non l'hai prevista?
  • Re: Problema con tabella "Parametri"

    Queste due tabelle sono realazionate sul campo TipoAssemblaggio.
    La tabella parametri contiente 2 colonne: TipoAsseblaggio e TempoAssemblaggio, mentre la query che voglio popolare contiene solo TipoAssemblaggio. Vorrei relazionare le due tabelle tramite il campo TipoAssemblaggio ma avere TempoAssemblaggio dalla tabella parametri.
    Tutto questo considerando che i punti di assemblaggio non sono in numero predefinito.
    Quindi ho una tabella:
    Codice, TipoAssemblaggioP1, TipoAssemblaggioP2... TipoAssemblaggioPN.
    Vorrei avere Il TempoAsseblaggioP1,TempoAsseblaggioP2...TempoAsseblaggioPN, preso dalla tabella parametri.

    Dimmi come posso essere più chiaro perchè ho proprio bisogno di aiuto.

    Grazie.
  • Re: Problema con tabella "Parametri"

    Shark79 ha scritto:


    Ho una tabella "parametri" che contiene:
    TipoAsseblaggio e TempoAssemblaggio
    Poi ho una tabella proveniente da Autocad che contiene:
    CodiceComponente, TipoAsseblaggioP1 TipoAssembalggioP2 .... TipoAssembalggioPN (PN sono i punti di connessione di CodiceComponenete)

    Vorrei fare in modo di ottenere una nuova tabella query con:
    CodiceComponente TempoAssemblaggioP1 TempoAssemblaggio2 .... TempoAssemblaggioPN
    Per farlo puoi farlo ma non è un bel lavoro : hai una tabella di partenza Excel-like e vuoi ottenerne una di destinazione anch'essa Excel-like.

    Non so quanti siano i campi della tabella di partenza (i punti di connessione) quindi può essere molto brutta la query che ti propongo :
    Prendi la tabella proveniente da AutoCad e metti in LEFT JOIN ogni campo TipoAssemblaggio con il corrispondente TipoAssemblaggio della tabella Parametri (per ogni JOIN devi utilizzare un'istanza diversa della tabella parametri). I campi da estrarre dalla query sono ovviamente :
    - CodiceComponente
    - TempoAssemblaggioP1 (da Left Join con la prima Tabella Parametri, rinominando il campo TempoAssemblaggio)
    - TempoAssemblaggioP2 (da Left Join con la seconda Tabella Parametri, rinominando il campo TempoAssemblaggio)
    e così via.
    Se non c'è abbinamento tra TipoAssemblaggioPx (Autocad) e TipoAssemblaggio (Parametri) ottieni un TempoAssemblaggioPx nullo (grazie al LEFT JOIN). Se usi invece INNER JOIN, NON ottiene il record.

    Certo che se i punti sono 100 (ma anche solo 10) diventa una bella query di m.
  • Re: Problema con tabella "Parametri"

    Proprio quello che non volevo fare.
    Come dici tu una query di m.
    Mi servirebbe una soluzione più elegante anche cambiando tutto il ragionamento a monte. Fermo restando che autocad esce così e non posso farci nulla.
  • Re: Problema con tabella "Parametri"

    Allora devi normalizzare :
    - la tabella in arrivo da Autocad (tecnicamente fai un'operazione di 'unpivot', che non essendo disponibile in Access devi simulare tramite Union query)
    - metti in join la nuova tabella Autocad con la tabella parametri
    Denormalizzare :
    - crei un crosstab query (pivot)

    Unpivot simulato :
    
    select CodiceComponente, TipoAssemblaggioP1 as TipoAssemblaggio From TblAutoCad
    UNION ALL
    select CodiceComponente, TipoAssemblaggioP2 as TipoAssemblaggio From TblAutoCad
    UNION ALL
    ....
    select CodiceComponente, TipoAssemblaggioPN as TipoAssemblaggio From TblAutoCad
    UNION ALL
    
    Ovviamente devi trasformare la query di selezione in query di inserimento nella nuova tabella Autocad normalizzata

    Gli altri punti (join e crosstab) dovrebbero essere più intuitivi ...
  • Re: Problema con tabella "Parametri"

    Nota : se il numero di campi TipoAssemblaggio provenienti da Autocad è variabile allora non ti resta che il VBA (almeno per le mie conoscenze).
  • Re: Problema con tabella "Parametri"

    Troppo complicato per le mie conoscenze, se creo n istanze della tabella parametri (come abbiamo detto prima) anche 50, pensi che possa dare problemi?
  • Re: Problema con tabella "Parametri"

    Da quanto ho capito, in realtà tu hai un Catalogo Componenti con le fasi si Assemblaggio ed ogni componente ha oppure può essere costituito a sua volta da Componenti.

    La cosa nella realtà è abbastanza semplice da gestire, ma si tratta di una Gestione Strutturata GERARCHICA, non gestibile con SQL ma con 2 Tabelle e del Codice.
    Le tabelle le dovrai riempire risalendo alla Struttura Gerarchica degli Oggetti di AutoCad, cosa anche abbastanza semplice... ma serve scrivere del codice ricorsivo...

    [TABELLA1] Componente
    IdComponente
    Nome
    Tempo

    [TABELLA2] TabellaAssemblaggio
    IdComponente
    IdAssemblato
    Quantita
    Tempo

    Le 2 Tabelle sono relazionate sia su IDComponente che su IDAssemblato in SelfReference in modo da consentire che Ogni Componente possa essere un Assemblato se serve.

    Questa è la tipica struttura Relazionale di una Gestione di Produzione Componenti oppure di Gestione delle Ricette di Cucina se vogliamo semplificare.
    Esempio:
    Torta di Mele, è fatta da Crema Pasticcera che a sua volta ha una ricetta, in quanto la Crema può servire come semilavorato per altri Dolci...

    La cosa tuttavia NON è banale senza una adeguata conoscenza del sistema Relazionale e del VBA.
  • Re: Problema con tabella "Parametri"

    Creando n istanze della tabella "parametri" (anche 20) rischio crash?
  • Re: Problema con tabella "Parametri"

    E' una cosa assurda come ragionamento.
  • Re: Problema con tabella "Parametri"

    Lo so
    E con la funzione Dlookup?
    Tipo:
    DLookUp("[Tempo]";"[Parametri]";"[PARAMETRI]![TIPO] = [BomConTempi]![T_P01]")

    ma non funziona
  • Re: Problema con tabella "Parametri"

    Comunque ne sto uscendo pazzo
Devi accedere o registrarti per scrivere nel forum
13 risposte