Campo stringa multi ID

di il
5 risposte

Campo stringa multi ID

BUongiorno a tutti,
Sono nuovo del forum, quindi spero di non violare i regolamenti.
Scrivo perché ho bisogno del vostro aiuto.
Devo realizzare un database in ACCESS i cui cuore è la possibilità di abdare a prendere un nuomero variabile di voci dalla stessa tabella.
Mi spiego meglio.
Data la tabella principale che contiene ID e Città come campi
e data una seconda tabella città con ID e Nome_Citta.
Ciò che ho necessità di fare è inserire nella tabella principale un nuomero variabile di ID associati a diverse città per poi averli in un report.
Non trovo un modo per farlo, ho provato ad pprofondire senza arrivare ad una quadra, mi rendo anche conto che la domanda sia piuttosto complessa, quindi, se fosse necessario posso anche lavorare su più di un tred dividendo il problema almeno in due parti: inserimento e report.

Grazie a chiunque avrà del tempo da dedicare,
Riccardo

5 Risposte

  • Re: Campo stringa multi ID

    In realtà a me pare molto banale come tema, troppo...!
    Se l'esempio che fai è solo a titolo di esempio, sei pregato di lasciare anoi la semplificazione, altrimenti dobbiamo dare per scontato troppe cose, incluso il tuo livello di preparazione, se invece ci esponi il problema nel suo complesso, possiamo essere più oggettivi.

    Ora dando per assunto che la tua esigenza sia veramente questa, ovvero provo a riassumerla:
    Nella sostanza devi Poter gestire una SELEZIONE parziale dei Records presenti TblPrincipale(Città)... per la stampa in un Report di quanto Selezionato.

    La prima osservazione che ti faccio è:
    Sei sicuro serva una seconda tabella...?
    Se rispondi "SI" puoi motivarlo tecnicamente...?

    Se la risposta è "NO", allora credo che non serva la seconda tabella ma possa bastare una ListBox con Selezione Multipla Estesa e fornire al Report un CRITERIO di SELEZIONE a partire dalla Tabella Completa.
  • Re: Campo stringa multi ID

    Buon giorno Alex,
    Innanzi tutto grazie per aver investito del tempo nel leggere la mia richiesta e scrivermi una risposta.
    Provo a chiarire un po' di quetioni.
    Iniziando dal livello di preparazione: per quanto concerne strettamente Access nonostante abbia anche una ertificazione in corso che ho ato l'ho trovato piuttosto inutile, tendo quindi a considerarmi un utente consapevole, più in generale no sono informatico ma ho delle basi di programmazione e conoscenza dei database.

    Le ragioni della semplificazione sono due una di carattere professionale una legata alla competenza: preferisco non scendere nel dettaglio della reale necessità non ritengo corretto portare fuori dall'ambito aziendale le ragioni per cui mi trovo a lavorare su questo DB, preferisco astrarre (semplificando al nocciolo del problema che ho e non so risolvere), perché mi interessa capire il principio che sottende alla mia necessità in modo tale da imparare a farlo una volta per tutte.

    Venendo più al succo della domanda, la risposta è si, la famosa tabella delle Città, è in realtà relazionata ad una serie di altre tabelle e non l'unica nel suo genere, intendo, potremmo avere una tabella "regioni" strutturata in maniera analoga che si relaziona alle medesime tabelle usate da "città", quindi sì, non può essere una semplice list box, quello non `un binario morto.
    Ulteriore nota, il report dovrà essere un report piuttosto comlesso, potrei dover ad un certo punto estrapolare grafici od essere in grado di incrociare dati diversi, ma per il momento questi sono sviluppi futuri, dei quali mi preoccuperò in un secondo momento, devo iniziare dai fondamentali.

    Spero questo aiuti un po'meglio a chiarire le mie domande,
    grazie ancora,
    Riccardo
  • Re: Campo stringa multi ID

    Allora se hai una Tabella che chiamiamo di APPOGGIO nella quale andrai ad Inserire i Records Selezionati, ti suggerisco ugualmente di usare una ListBox per attuare la Selezione in quanto consente, senza aggiungere campi FLAG nella Tabella Originale, di selezionare il richiesto.
    Dalla Selezione della ListBox ricavi poi l'elenco degli ID di selezione ciclando la Collection ItemsSelected della ListBox e comporrai la Stringa che ti serve per fare un'INSERT nella tabella di Appoggio.

    Tale tabella di Appoggio DEVE essere identica alla Originale per tutto TRANNE il campo PK, che NON deve essere di tipo Counter ma di Tipo Intero Lungo, ed andrà immagino svuotata prima di essere riempita nuovamente.
    
    DbEngine(0)(0).Execute "DELETE * From Tbl2", dbFailOnError
    Per riempire la Tbl2 partendo dalla selezione dei Records della Tbl1basterà eseguire una Query di accodamento tipo
    
    INSERT INTO Tbl2 SELECT * FROM Tbl1 WHERE ID IN (1,4,7,9)
    Tu devi quindi ricostruire la concatenazione degli ID tra le 2 Parentesi.
    
    Dim varItem As Variant
    Dim strParam As String
    If Me!NomeListBox.ListIndex<0 Then 
       MsgBox "Nessuna selezione"
       Exit Function
    End if
    For Each varItem In Me!NomeListBox.ItemsSelected
        strParam = strParam & Me!NomeListBox.ItemData(varItem) & ","
    Next
    If Len(strParam)>0 Then strParam = Mid$(strParam,1, Len(strParam)-1)  ' toglie l'ultima VIRGOLA
    strParam ="INSERT INTO tbl2 SELECT * FROM tbl1 WHERE (" & strParam & ")"
    DbEngine(0)(0).Execute "DELETE * From Tbl2", dbFailOnError
    Non l'hoi provata ma il succo è quello descritto.
  • Re: Campo stringa multi ID

    Correggo il codice in quanto effettuo la cancellazione della Tabella ma non il Riempimento
    
    ' ....
    ' il resto prima è uguale
    ' ....
    If Len(strParam)>0 Then strParam = Mid$(strParam,1, Len(strParam)-1)  ' toglie l'ultima VIRGOLA
    strParam ="INSERT INTO tbl2 SELECT * FROM tbl1 WHERE (" & strParam & ")"
    DbEngine(0)(0).Execute "DELETE * From Tbl2", dbFailOnError
    ' ---------------------------------------------------------------------------
    DbEngine(0)(0).Execute strParam, dbFailOnError ' <------ AGGIUNTO
  • Re: Campo stringa multi ID

    Grazie mille!!!
    Oggi ci lavoro. Cerco di farmi vivo a breve per farti sapere come va.
    Grazie ancora!
Devi accedere o registrarti per scrivere nel forum
5 risposte