Concatenazione testo sullo stesso campo.

di il
9 risposte

Concatenazione testo sullo stesso campo.

Ciao a tutti,
semplificando ho una tabella che contiene un campo ID e un campo testo "Nome"

ID
1 PIPPO
2 PLUTO
3 PAPERINO

Tramite una maschera e relativa sottomaschera, questi nomi servono ad alimentare una seconda tabella (TBL2) in relazione 1 a molti, quindi 1 o più nomi associati ad ogni record della tabella TBL2.

La tabella TBL2 contiene anche un campo che dovrebbe riepilogare la selezione multipla, concatenando i valori selezionati:
ID CITTA RIEPILOGO
1 Topolinia Pippo; Pluto
2 Paperopoli Paperino
3 Mapletown Pluto;Paperino;Pippo

Come fare tutto ciò? ho pensato ad auna casella di riepilogo settando la selezione multipla, ma non capisco se, come e dove questa selezione multipla venga acqusita in memoria.
Grazie. ciao

9 Risposte

  • Re: Concatenazione testo sullo stesso campo.

    Temo che tu voglia associare i dati orizzontalmente mentre la logica tabellare di Access impone una disposizione verticale.
    Intanto sarebbe meglio se tu indicassi esattamente tutti i campi di Tbl1 e Tbl2 con l'indicazione dei campi di relazione, poi cerchiamo di capire qual'è il tuo problema.
  • Re: Concatenazione testo sullo stesso campo.

    Grazie per la risposta, ti indico solo i campi necessari e provo a spiegarmi meglio:
    la tabella tbl1 contiene una lista di attività, per ogni attività sono previste una o più risorse

    tbl1 Campi: IDTsk: contatore, chiave primaria
    Task: testo
    Risorse: numerico, in relazione 1 a molti con il campo IDRis di tbl2
    RiepRis: testo

    tbl2 campi: IDRis: contatore, chiave primaria
    Risorsa: testo

    Quello che vorrei è un riepilogo delle risorse per ogni attività che venga salvato nel campo RiepRes di tbl1 in questo formato : "Risorsa1;risorsa 2;...." dopo aggiornamento delle risorse associate all'attività.
    Ho trovato qualcosa di simile qui: http://support.microsoft.com/kb/827423/i, e funziona dando il riepilogo dei valori del campo contatore intervallati dalla virgola su un unico campo. Nonostante alcuni tentativi di modifica del codice vba non riesco a visualizzare nel campo RiepRis i valori dei campi risorsa associati.

    Se ancora sono stato poco chiaro fammi sapere.
    Grazie
  • Re: Concatenazione testo sullo stesso campo.

    hangart ha scritto:


    Risorse: numerico, in relazione 1 a molti con il campo IDRis di tbl2
    E' errato relazionare "molti" un campo chiave primaria
    Secondo l'esposizione che dai dei campi, tbl2.IDRis dovrebbe essere in relazione uno-a-molti con il corrispondente campo Numerico (Risorse) di Tbl1.

    hangart ha scritto:


    la tabella tbl1 contiene una lista di attività, per ogni attività sono previste una o più risorse
    Questa affermazione implica che ci sia un campo IDTsk Numerico nella tbl2, in modo che risulti
    tbl1.IDTsk in relazione uno-a-molti con tbl2.IDTsk.

    Come stanno veramente le cose?
  • Re: Concatenazione testo sullo stesso campo.

    Grazie OsvaldoLaviosa, mi rendo conto che nella fretta ho fatto un po' di confusione ho sistemato meglio le relazioni, ed ora il risultato è (forse ) più chiaro:
    Tbl1 (ID Chiave)
    ID Tsk
    1 aaa
    2 bbb
    3 ccc

    tbl2 (IDRis Chiave)
    IDRis IDTsk ResName
    1 1(aaa) Pippo
    2 1(aaa) Pluto
    3 2(bbb) Paperino
    4 3(ccc) Piero
    5 3(ccc) paolo
    6 3(ccc) giovanni
    L'obiettivo da raggiungere è: nella relativa form tabellare che presenta la lista delle attività avere un campo riassuntivo che concatena i valori ResName relativi alla stessa attività:
    Task_ Risorse_
    aaa Pippo; Pluto
    bbb Paperino
    ccc piero;paolo;giovanni

    L'assegnazione delle risorse ad ogni attività avviene tramite una maschera popup
    Questa concatenazione e relativa visualizzazione ha solo scopo riassuntivo delle risorse in gioco per l'utente, senza che debba aprire ogni volta la popup
    Grazie per l'aiuto
  • Re: Concatenazione testo sullo stesso campo.

    Quello che vorresti fare, spero abbia un senso reale e consapevole per te. Normalmente non si fa, anche se confesso di aver realizzato qualcosa di simile anch'io, ma ripeto consapevolmente e ragionevolmente ad un numero limitato di record che ho stabilito io in partenza. Quest'ultima frase immagino non l'avrai capita, non importa........provo lo stesso a seguire il tuo discorso.
    Domande e osservazioni:
    1) Quando sarai riuscito a creare questo campo con valori concatenati, sei cosciente che ogni volta che aggiungi nuovi valori a Tbl2, la coda del campo concatenato si allungherà sempre più?
    2) Avresti posto un limite al riguardo?
    3) Ti ricordo che un campo Testo può contenere fino a 255 caratteri, un campo Memo 65.536.
    4) In ogni caso, sappi che il campo concatenato non potrai realizzarlo all'interno della Tbl2, ma attraverso una procedura, lo analizzeremmo con più calma dopo, sarà il risultato di un campo in una query, che se vorrai potrai accodare in un secondo momento ecc......ripeto rimandiamo a dopo, ammesso che mi ricordi come si possa realizzare.
    5) Il link che mi hai segnalato non l'ho capito. Se posso darti una mano, lo farei con una procedura un po' rudimentale, ma soprattutto non so usare il codice Visual Basic, forse qualche macro sì (scusa!).
  • Re: Concatenazione testo sullo stesso campo.

    Grazie Osvaldo per i tuoi commenti. Sono assolutamente conspevole che normalmente non si fa, ma come spiegavo, ha scopo puramente riepilogativo. Generalmente non assegniamo più di 4 risorse ad ogni attività, mediamente è 1 e non vedo grossi problemi di spazio (utilizzeremmo dei codici a 3 cifre anzichè i nomi per esteso). L'idea era quella di aggiornare il campo sulla form che si riferisce a tbl1 (che a sua volta conterrà un campo testo dove depositare il dato concatenato )alla chiusura della maschera popup di inserimento.

    L'esempio che ti ho postato, l'ho riprodotto con i miei dati e funziona, solo che fornisce come risultato la concatenazione dell'IDRes , pur smanettando sul codice, non sono riuscito a prelevare il valore di testo corrispettivo (ResName). Forse con un lookup ma mi sembrava un giro dell'oca.
    se hai suggerimenti te ne sarei grato.
    ciao
  • Re: Concatenazione testo sullo stesso campo.

    Se mi dici che limitiamo il tuo discorso a massimo 4 record: cominciamo a ragionare.
    Idem sulla scelta di valori codificati (così risparmi spazio).
    Ti chiederei però di descrivere per bene NomeTabella1, NomeTabella2, poi non ho capito se ci sono altri valori provenienti da altre tabelle, per quanto satellitari, è importante che tu citi lo stesso anche le altre tabelle.
    Per ogni tabella, tutti i nomi campo (quelli significativi) precisi.
    In ultimo, ti consiglio di scriverci anche in privato via e-mail, perchè potrei commettere molti errori che non mi pare il caso di descrivere nel forum. Penso di poter risolvere con una serie di azioni macro che, se vorrai, potrai tranquillamente tradurre in Visual Basic dopo.
  • Re: Concatenazione testo sullo stesso campo.

    Grazie Osvaldo per la tua disponibilità. Ti ho inviato una mail all'indirizzo che hai indicato con una copia del file mdb.
    Grazie
    Ciao

    Marco
  • Re: Concatenazione testo sullo stesso campo.

    Giusto per completezza nel forum, dopo aver analizzato bene il problema, personalmente ritengo che la soluzione più appropriata sia quella di strutturare in:
    maschera principale
    1a sottomaschera (foglio dati)
    2a sottomaschera (foglio dati)
    per ogni record della 1a sottomaschera è possibile vedere unitamente i pochi record nella 2a sottomaschera.
Devi accedere o registrarti per scrivere nel forum
9 risposte