Creazione tabella dinamica temporanea

di il
16 risposte

Creazione tabella dinamica temporanea

Buongiorno,

sperando di essere nel giusto a creare una nuova discussione, mi collego alla discussione al link

https://www.iprogrammatori.it/forum-programmazione/access/realizzazione-query-t51433-30.html 

per procedere con quanto suggerito da oregon, come dovrei fare? 

ho provato ma non mi viene in mente proprio nulla.

Grazie mille

16 Risposte

  • Re: Creazione tabella dinamica temporanea

    Se la tabella non cambia nel Numero e nella Tipologia dei Campi, creala fissa, poi la svuoti prima di usarla e la riempi…

    Se invece deve essere flessibile, la puoi creare con una Query di creazione Tabella oppure da codice.

    Cerca CREATETABLEDEF metodo DAO, ma se non ahi un minimo di basi…. la vedo difficile.

    https://learn.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-createtabledef-method-dao

  • Re: Creazione tabella dinamica temporanea

    Sto provando a fare per l'appunto una tabella fissa da svuotare e riempire così intanto da avere una base su cui lavorare.

    Mi sto rendendo conto che forse ho un limite, il database che utilizzo contiene solo tabelle e un paio di query, non contiene codice.

    il Front End è sviluppato su un altro file che importa come LinkedTable le tabelle del file iniziale;

    Come risolvo? Mi par di capire che devo prendere la strada dell'inserire il codice nel FrontEnd…corretto?

    Come imposto questa tabella? a livello di concetto non capisco, il file dovrebbe funzionare solo con linked table, non con tabelle vere e proprie.

    Grazie mille

    Ciao

  • Re: Creazione tabella dinamica temporanea

    Mi pare tu abbia delle LACUNE ingestibili… se non riesci ad avere un minimo di conoscenze di base… è evidente tu faccia cose veramente non sensate, d'altra parte mi pare di capire che veramente le nozioni non presenti siano troppe per pensare di riuscire ad aiutarti… sembra quasi si debba fare un “CORSO ACCELERATO” prima di darti gli aiuti..!!

    Devi Linkare anche la Tabella che hai creato nel FE e poi da li con il codice fai il resto.

  • Re: Creazione tabella dinamica temporanea

    Sinceramente non si capisce nemmeno se stai lavorando su un database esistente e funzionante, se ne devi creare uno nuovo, quale funzione cerchi di integrare.

    Se lavori su un database esistente, sei per forza condizionato dai nomi e dalle tabelle esistenti e quindi hai poco da inventare.

    Se hai una stampa unione esistente, non puoi creare tabelle e campi a casaccio, ma devi usare quelli che vengono usati.

    Quello che cerchi di creare alla fine è una struttura base di un database normalissimo.

    Ad esempio un database di nomi cognomi indirizziha la stessa struttura.

    Ma al dila della struttura, il problema grossoe la gestione del codice 0er farlo funzionare.

    Come detto nel precedente post sembra che tu abbia letto qualcosa a proposito ma non hai capito assolutamente niente di quello che hai letto.

    Prima di addentrarti in quello che ti serve di realizzare, secondo me devi studiare e fare semplicissimi esercizi, creare piccole porzioni di database, vederne il funzionamento, capire come funzionano le relazioni, come interagiscono tra di loro.

    Non basta creare un campo pk e pensare che automaticamente access lo usi nel modo giusto, perch si chiama pk.  

  • Re: Creazione tabella dinamica temporanea

    Allora, ho provato a elaborare  il codice per la creazione della tabella, mi manca una parte fondamentale nella  quale non riesco ad arrangiarmi purtroppo a causa delle mie lacune.

    Il database è esistente e “funziona” (tra n virgolette) per quello che deve fare, sicuramente lo devo sistemare viste le nuove nozioni apprese.

    La stampa unione dovrà prendere i valori dalla tabella che si va a creare con il codice successivo:

    Private Sub Comando0_DblClick(Cancel As Integer)
    'Create table and fields Using DAO
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld_ID, fld_CodiceProdotto, fld_DescrizioneProdotto As DAO.Field
    Dim fld_pkg1_SingoloPzPkg, pkg2_SingoloPzPkg, pkg3_SingoloPzPkg, pkg4_SingoloPzPkg As DAO.Field
    Dim fld_pkg1_Codice, fld_pkg2_Codice, fld_pkg3_Codice, fld_pkg4_Codice As DAO.Field
    Dim fld_pkg1_Materiale, fld_pkg2_Materiale, fld_pkg3_Materiale, fld_pkg4_Materiale As DAO.Field
    Dim fld_pkg1_Conferimento, fld_pkg2_Conferimento, fld_pkg3_Conferimento, fld_pkg4_Conferimento As DAO.Field
    Dim rstProducts As DAO.Recordset
    Dim sqlStr As String
    Dim CodiceProdotto As String
    sqlStr = "SELECT tabProdotti.CodiceProdotto, tabProdotti.DescrizioneProdotto, TabSingoloPezzoPkg.singoloPzPkg_descrizione," & _
           "TabMateriale.materiale_descrizione, TabCodice.codice_descrizione, TabConferimento.conferimento_descrizione" & _
           "FROM TabCodice INNER JOIN (TabConferimento INNER JOIN (TabMateriale INNER JOIN (TabSingoloPezzoPkg INNER JOIN (tabProdotti INNER JOIN (" & _
           "Packaging_Cumulativa INNER JOIN tabProdPkg ON Packaging_Cumulativa.pk_id = tabProdPkg.idPackaging) ON tabProdotti.idProdotto = tabProdPkg.idProdotto)" & _
           "ON TabSingoloPezzoPkg.id_singoloPzPkg = Packaging_Cumulativa.pk_id_singoloPzPkg) ON TabMateriale.id_materiale = Packaging_Cumulativa.pk_id_materiale)" & _
           "ON TabConferimento.id_conferimento = Packaging_Cumulativa.pk_id_conferimento) ON TabCodice.id_codice = Packaging_Cumulativa.pk_id_codice;"
    
    Set db = CurrentDb
    Set rstProducts = db.OpenRecordset(sqlStr)
    'create table definition
       '1. Table Name --> lst_tbl-Persons
    Set tdf = db.CreateTableDef("CumulativaPkg_tmp")
       
    'create field definition
    Set fld_ID = tdf.CreateField("ID", dbLong)
       fld_ID.Attributes = dbAutoIncrField
       fld_ID.Required = True
    Set fld_CodiceProdotto = tdf.CreateField("CodiceProdotto", dbText)
       fld_Name.AllowZeroLength = False
       fld_Name.Required = True
    Set fld_DescrizioneProdotto = tdf.CreateField("DescrizioneProdotto", dbText)
       fld_Name.AllowZeroLength = False
       fld_Name.Required = True
    Set fld_pkg1_SingoloPzPkg = tdf.CreateField("pkg1_SingoloPzPkg", dbText)
    Set fld_pkg2_SingoloPzPkg = tdf.CreateField("pkg2_SingoloPzPkg", dbText)
    Set fld_pkg3_SingoloPzPkg = tdf.CreateField("pkg3_SingoloPzPkg", dbText)
    Set fld_pkg4_SingoloPzPkg = tdf.CreateField("pkg4_SingoloPzPkg", dbText)
    Set fld_pkg1_Codice = tdf.CreateField("pkg1_Codice", dbText)
    Set fld_pkg2_Codice = tdf.CreateField("pkg2_Codice", dbText)
    Set fld_pkg3_Codice = tdf.CreateField("pkg3_Codice", dbText)
    Set fld_pkg4_Codice = tdf.CreateField("pkg4_Codice", dbText)
    Set fld_pkg1_Materiale = tdf.CreateField("pkg1_Materiale", dbText)
    Set fld_pkg2_Materiale = tdf.CreateField("pkg2_Materiale", dbText)
    Set fld_pkg3_Materiale = tdf.CreateField("pkg3_Materiale", dbText)
    Set fld_pkg4_Materiale = tdf.CreateField("pkg4_Materiale", dbText)
    Set fld_pkg1_Conferimento = tdf.CreateField("pkg1_Conferimento", dbText)
    Set fld_pkg2_Conferimento = tdf.CreateField("pkg2_Conferimento", dbText)
    Set fld_pkg3_Conferimento = tdf.CreateField("pkg3_Conferimento", dbText)
    Set fld_pkg4_Conferimento = tdf.CreateField("pkg4_Conferimento", dbText)
    
    'add the fields to the table
    tdf.Fields.Append fld_ID
    tdf.Fields.Append fld_CodiceProdotto
    tdf.Fields.Append fld_DescrizioneProdotto
    tdf.Fields.Append fld_pkg1_SingoloPzPkg
    tdf.Fields.Append fld_pkg1_Codice
    tdf.Fields.Append fld_pkg1_Materiale
    tdf.Fields.Append fld_pkg1_Conferimento
    tdf.Fields.Append fld_pkg2_SingoloPzPkg
    tdf.Fields.Append fld_pkg2_Codice
    tdf.Fields.Append fld_pkg2_Materiale
    tdf.Fields.Append fld_pkg2_Conferimento
    tdf.Fields.Append fld_pkg3_SingoloPzPkg
    tdf.Fields.Append fld_pkg3_Codice
    tdf.Fields.Append fld_pkg3_Materiale
    tdf.Fields.Append fld_pkg3_Conferimento
    tdf.Fields.Append fld_pkg4_SingoloPzPkg
    tdf.Fields.Append fld_pkg4_Codice
    tdf.Fields.Append fld_pkg4_Materiale
    tdf.Fields.Appendfld_pkg4_Conferimento
    
    'add the table to the Database
    db.TableDefs.Append tdf
    
    'compilare la tabella
    [DA RISOLVERE...INIZIO]
    'Partendo dal primo record, identificando come i=CodiceProdotto
    CodiceProdotto = PrimoRisultatoDellaQuery
    'Ordinare la query per CodiceProdotto ASC
    'PRIMO RECORD:
    'Essendo la prima volta che si incontra l'attuale CodiceProdotto, inserire (in base a CodiceProdotto), le descrizioni di pkg1
    'se si incontra per la seconda volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg2, altrimenti passa al successivo
    'se si incontra per la terza volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg3, altrimenti passa al successivo
    'se si incontra per la quarta volta l'attuale CodiceProdotto inserire sul primo record anche le descrizioni di pkg4, altrimenti passa al successivo
    [...]
    'ULTIMO RECORD:
    'Essendo la prima volta che si incontra l'attuale CodiceProdotto, inserire (in base a CodiceProdotto), le descrizioni di pkg1
    'se si incontra per la seconda volta l'attuale CodiceProdotto inserire sull'ultimo  record anche le descrizioni di pkg2, altrimenti passa al successivo
    'se si incontra per la terza volta l'attuale CodiceProdotto inserire sull'ultimo record anche le descrizioni di pkg3, altrimenti passa al successivo
    'se si incontra per la quarta volta l'attuale CodiceProdotto inserire sull'ultimo record anche le descrizioni di pkg4, altrimenti passa al successivo
    [DA RISOLVERE...FINE]
    
    'refresh table and database
    db.TableDefs.Refresh
    Application.RefreshDatabaseWindow
    Set fld_ID = Nothing
    Set fld_CodiceProdotto = Nothing
    Set fld_DescrizioneProdotto = Nothing
    Set fld_pkg1_SingoloPzPkg = Nothing
    Set fld_pkg1_Codice = Nothing
    Set fld_pkg1_Materiale = Nothing
    Set fld_pkg1_Conferimento = Nothing
    Set fld_pkg2_SingoloPzPkg = Nothing
    Set fld_pkg2_Codice = Nothing
    Set fld_pkg2_Materiale = Nothing
    Set fld_pkg2_Conferimento = Nothing
    Set fld_pkg3_SingoloPzPkg = Nothing
    Set fld_pkg3_Codice = Nothing
    Set fld_pkg3_Materiale = Nothing
    Set fld_pkg3_Conferimento = Nothing
    Set fld_pkg4_SingoloPzPkg = Nothing
    Set fld_pkg4_Codice = Nothing
    Set fld_pkg4_Materiale = Nothing
    Set fld_pkg4_Conferimento = Nothing
    Set tdf = Nothing
    Set rstProducts = Nothing
    Set db = Nothing
    
    MsgBox "Fine!"

    Sto andando nella giusta direzione?

    Grazie mille

    Ciao

  • Re: Creazione tabella dinamica temporanea

    Dai termiji usati sembra tanto un esercizio per la scuola.

    Sei nella direzione giusta?

    Fino a quando non spieghi qual è il risultato che vuoi ottenere non si capisce.

    Ma è possibile vedere almeno la struttura del database funzionante ?

    A mio avviso, quello che stai facendo non serve praticamente a nulla.

    Parli di tabelle di relazioni di query, ma non hai mostrato nemmeno una query con il quale tenti di ricavare i dati contenuti.

    I dati nelle tabelle come li inserisci?

    Le relazioni che tipo di join hanno? Destro, sinistro? Le relazioni sono uno a molti, molti a molti, uno a uno?

    E sopratutto il database funzionante l hai realizzato tu o altre persone?

  • Re: Creazione tabella dinamica temporanea

    Ovvio che non serve a nulla… aveva fatto la tabella lato server… ora la crea da codice in locale … non solo non capisce la differenza, ma fa una cosa assolutamente inutile dal momento che bastava la tabella definita temporanea che non significa sia da creare da codice ma ad uso temporaneo.

    Insomma come ho detto non ci sono gli elementi per dare un supporto a me sembra si stia giocando a ping pong con poche idee ma molto confuse.

    Io considererei chiuso questo è gli altri 3D.

  • Re: Creazione tabella dinamica temporanea

    10/03/2023 - @Alex ha scritto:


    Ovvio che non serve a nulla… aveva fatto la tabella lato server… ora la crea da codice in locale … non solo non capisce la differenza, ma fa una cosa assolutamente inutile dal momento che bastava la tabella definita temporanea che non significa sia da creare da codice ma ad uso temporaneo.

    Insomma come ho detto non ci sono gli elementi per dare un supporto a me sembra si stia giocando a ping pong con poche idee ma molto confuse.

    Io considererei chiuso questo è gli altri 3D.

    Io mi chiedo anche come abbia la stampa unione funzionante, senza avere la base dati.

  • Re: Creazione tabella dinamica temporanea

    @fratac, è tutto linkato alla discussione a cui dico di essere collegato, ti riporto nuovamente il link

    https://www.iprogrammatori.it/forum-programmazione/access/realizzazione-query-t51433-30.html 

    è tutto finalizzato ad una esercitazione proprio come dici tu, per poter apprendere meglio.

    Mi dispiace se vi ho tirati dentro ad un ping pong, ci sono finito probabilmente perché ho capito male qualche suggerimento precedente. 

    ……

    ehm ma scusate…ma quindi come mi devo muovere? linkare la tabella nel FE ok, ma prima devo crearla questa tabella no? e per crearla devo crearla con il codice perché non è una tabella esistente ma una tabella che dovrà popolarsi in base alla query realizzata che mette insieme il CodiceProdotto con tutte le altre info.

    Io sto continuando a lavorare sulla elaborazione del codice da inserire nel BE per poi richiamarlo da FE; questo codice andrà infatti a creare una tabella nel BE e successivamente darà un comando tipo “Refresh solo di questa specifica linked table” così da importare i dati aggiornati…

    Mi sembrava questo il percorso che stava iniziando a formarsi.

    …..

  • Re: Creazione tabella dinamica temporanea

    10/03/2023 - fratac ha scritto:


    10/03/2023 - @Alex ha scritto:


    Ovvio che non serve a nulla… aveva fatto la tabella lato server… ora la crea da codice in locale … non solo non capisce la differenza, ma fa una cosa assolutamente inutile dal momento che bastava la tabella definita temporanea che non significa sia da creare da codice ma ad uso temporaneo.

    Insomma come ho detto non ci sono gli elementi per dare un supporto a me sembra si stia giocando a ping pong con poche idee ma molto confuse.

    Io considererei chiuso questo è gli altri 3D.

    Io mi chiedo anche come abbia la stampa unione funzionante, senza avere la base dati.

    ?? se vuoi ti rispondo io….non penso che @Alex sia una persona dotata di veggenza…. XD

    il modello del file di StampaUnione attualmente contiene dei dati semplici presi da un db semplice; c'è e funziona con la base dati attuale.

    Alla base dati attuale, sto cercando di aggiungere delle informazioni. 

    obiettivo: aggiungere dati alla base iniziale per poter aggiungerli anche nel file di StampaUnione.

    Tramite la risoluzione di questa esercitazione infatti andrò a implementare i dati importabili dalla StampaUnione.

    Se hai bisogno di maggiori info drimmi pure, vorrei proprio riuscire a risolvere

    Grazie mille

    Ciao

  • Re: Creazione tabella dinamica temporanea

    10/03/2023 - Albino91 ha scritto:


    modello del file di StampaUnione attualmente contiene dei dati semplici presi da un db semplice; c'è e funziona con la base dati attuale.

    Come dire ho il motore di una vespa funzionante, quindi lo posso mettere su una ferrari.

    Il link che hai postato l ho letto e pure intervenuto.   Postare wikipedia come risposta è  ben lontano dal concetto di saper fare le cose.

    Fino a quando non studi e ti eserciti, nessuno potrà aiutarti.

    Di tutto quello che hai postato, praticamente niente funziona. Ne a livello logico ne a livello tecnico.

    Senza considerare che è un copia incolla adattato di porzioni di codice prese a casaccio e messe su qualcosa di cui non si conosce e capisce la base, una struttura praticamente inutilizzabile e che non contiene dati coerenti, ne nella logica di un database relazionale e nemmeno per un uso reale. 
    Praticamente come un pasticciere che vuole fare un dolce, legge la ricetta e butta tutti gli ingredienti a casaccio sulla tavola e poi non capisce perchè non diventa un ciambellone fragrante e gustoso. E quando gli si chiede spiegazioni su come sta procedendo, continua a postare la ricetta con gli ingredienti.

    Ma i dati, quelli veri, dove sono? Si vedono solo riferimenti numerici a delle chiavi, ma di campi che contengano i dati dove dovrebbero essere contenuti i valori per l'operatore e per la stampa unione, non se ne sente nemmeno la puzza.

    Forse abbiamo un concetto differente di database funzionante.

    Comunque anche per me la discussione è chiusa. 

  • Re: Creazione tabella dinamica temporanea

    Tra parentesi, porti avanti lo stesso argomento su più thread, creando solo confusione.
    Cosa che va contro le regole base di un qualsiasi forum.

  • Re: Creazione tabella dinamica temporanea

    10/03/2023 - fratac ha scritto:


    Come dire ho il motore di una vespa funzionante, quindi lo posso mettere su una ferrari.

    ma che dici? che esempi assurdi fai? devo aggiungere un campo nel file…..non devo mica mettere un motore di una vespa in una ferrari, devo solo aggiungere un campo. Sarebbe come metterci un piccolo accessorio dentro la cassettina degli atrezzi nel bauletto della vespa…piuttosto….bah…boh.

    10/03/2023 - fratac ha scritto:


    Tra parentesi, porti avanti lo stesso argomento su più thread, creando solo confusione.
    Cosa che va contro le regole base di un qualsiasi forum.

    Ho premesso che pensavo di fare correttamente a spostare la discussione, nessuno mi ha contraddetto e le regole del forum sono ben chiare si tranquillo, non mi sembra proprio di “aver portato avanti discussioni separate” sono argomenti completamente diversi.

    Forse è cambiato di nuovo l'argomento in "Mortifichiamo il pasticciere" e vista l'aria che tira mi avresti dato parole se non cambiavo discussione …….. XD 

    10/03/2023 - fratac ha scritto:


    10/03/2023 - Albino91 ha scritto:


    modello del file di StampaUnione attualmente contiene dei dati semplici presi da un db semplice; c'è e funziona con la base dati attuale.

    Postare wikipedia come risposta è  ben lontano dal concetto di saper fare le cose.

    Fino a quando non studi e ti eserciti, nessuno potrà aiutarti.

    Di tutto quello che hai postato, praticamente niente funziona. Ne a livello logico ne a livello tecnico.

    Guarda che sto seguendo i vostri consigli, ho ripreso in mano il database e le nozioni che servivano da zero come suggerito per capire la base che avevo; ho costruito il database e la query seguendo i vostri consigli logici e tecnici. è inutile tirare fuori parole a caso da una discussione cavandone il concetto, mortificare non serve a nulla, di certo non a invogliare una persona nel suo lavoro…

    Spero che per te leggermi non sia mortificante come lo è per me leggere le tue risposte che fino ad ora non mi hanno fatto fare passi avanti ma solo ripensare ripensare ripensare e loop a ripensare……boh grazie comunque probabilmente sono io che non ci arrivo

    Patpat, si voglio risolvere e imparare e voglio andare avanti, continua a ringraziare. andrò avanti da solo alla peggio mi ringrazierò da solo dc.

    Grazie per il tempo impiegato.

    10/03/2023 - fratac ha scritto:


    Ma i dati, quelli veri, dove sono? Si vedono solo riferimenti numerici a delle chiavi, ma di campi che contengano i dati dove dovrebbero essere contenuti i valori per l'operatore e per la stampa unione, non se ne sente nemmeno la puzza.

    Ma scusa ma allora mi prendi in giro! E la query che ho creato a cosa serve? si vede tutto in chiaro che caspita dici?

    bah chiudi pure qui si ma non ho mica capito che discussione hai letto tu.

    Grazie mille

    Ciao

  • Re: Creazione tabella dinamica temporanea

    10/03/2023 - Albino91 ha scritto:


    Ma scusa ma allora mi prendi in giro! E la query che ho creato a cosa serve? si vede tutto in chiaro che caspita dici?

    Qui nessuno prende in giro nessuno.

    Oggi hai aperto un nuovo post per chiedere spiegazioni sulla query della stampa unione che dici che funziona perfettamente.

    E l hai aperto perché la query, a causa di una banale modifica non funziona.

    Ed il primo post con problemi praticamente identici a quelli che stai cercando di risolvere ora sulla stampa unione, li hai aperti nel 2018.

    Dopo 5 anni siamo ancora punto a capo.

    È evidente che sa qualche parte c è un problema.

    Quindi, puoi inalberarti quanto vuoi, ma hai il motorino di una vespa, ma appena provi a mettere un carburatore più grande, non funziona più niente.

    Quindi, come tutti ti stanno dicendo, invece di copiare ed incollare pezzi di codice a casaccio, e poi prendertela con chi cerca di spiegarti le cose, sarebbe il caso che ti procuri un buon manuale sui database, uno su sql e uno su access, li studi attentamente e poi crei il database. Altrimenti tra un anno ancora staremo qui a parlare di questa cosa, senza aver cavato un ragno dal buco.

    Ma da quando la parola “studiare” è diventata una offesa?

Devi accedere o registrarti per scrivere nel forum
16 risposte