Testo multiline sql e excel

di il
6 risposte

Testo multiline sql e excel

Questa è diffricile da spiegare, ma ci provo.
Ho una tabella sotto SQLExpress che viene riempita tramite un form. Uno dei campi (testo) viene riempito a programma prima di aggiornare la tabella, in dipendenza dal valore di altri campi. L'idea è quella di scrivere nel campo zero o più frasi, come ad esempio
"manca dato x" (se il campo x non è stato riempito nella form)
"manca il dato Y" (se il campo Y non è stato riempito, etc etc.) I campi in questione NON sono obbligatori, ecco perchè non vengono controllati sul form (potrebbero essere noti o comunicati in un secondo momento).
La tabella viene successivamente esportata in excel tramite un semplice copyfromRecordset da Excel.
La domanda è: sarebbe utile che in excel il campo in questione avesse ogni "frase" su riga singola all'interno del campo, cioè
nella cella vorrei vedere
"manca dato x"
"manca dato y"
...

ognuna su singola riga, cioè con un CR/LF o analogo. Che cosa occorre scrivere nel campo ella tabella SQL per avere questo risultato? Ho provato di tutto, e l'unico ad avvicinarsi è scrivere nel campo della tabella SQL qualcosa come
= "String1" & Char(10) & "String2" & Char(10) & "string3"...
Dico che si avvicina perchè nella cella Excel viene importata esattamente questa stringa; se vado nella cella e clicco su Invia, ottengo quel che mi serve

Stringa1
Stringa2
Stringa3

Ovviamente, cliccare invio su ogni campo non è una soluzione. Qualche idea su come fare?
Grazie

6 Risposte

  • Re: Testo multiline sql e excel

    Salve,
    di base, NON c'e' una risposta...
    potresti fare una proiezione dove andrai a "spezzare" la riga in "n" righe per quanti CHAR(10) trovi nella colonna originale, ma avresti "n" righe di colonne uguali tranne che per la colonna X dove i CHAR(10) delimitano il valore singolo di colonna...
    ma forse, a livello Excel, si riesce a fare "di meglio" senza passare per tutto cio'... ma qui non ti so aiutare

    salutoni romagnoli
    --
    Andrea
  • Re: Testo multiline sql e excel

    Per gusto mio, lascerei perdere il campo calcolato ed invertirei il processo.
    Invece che creare il file Excel ogni volta, ne farei uno fisso con un'origine dati collegata. Poi, con una UDF o una Macro, andrei a creare il campo concatenato.
    Più che altro perché mi pare di capire che sia un problema di visualizzazione, quindi la ragionerei come un report: non modifico la tabella per avere i dati nel report, ma imposto il report perché mostri i dati per come mi servono.
  • Re: Testo multiline sql e excel

    Grazie per l'attenzione. Penserò alla soluzione di Sgrubak, cambia l'approccio utente, nel senso che ora, aprendo lo ws excel, viene automaticamente rigenerata la tabella.
    vorrei aggiungere altre due informazioni.
    1) la stringa nella cella è una formula o no? Comincia con "=", però se entro e clicco su invio, come detto, sembra che la formula sia "calcolata" e ottengo le stringhe separate; se la seleziono e clicco F9, non succede niente.
    2) ho provato a inseire in vba , dopo aver trasferito i dati,l'istruzione
    application.CalculateFull
    e non succede niente, analogamente a F9 di prima. Vi dice niente?

    Grazie di cuore a tutti
  • Re: Testo multiline sql e excel

    roberto21 ha scritto:


    Grazie per l'attenzione. Penserò alla soluzione di Sgrubak, cambia l'approccio utente, nel senso che ora, aprendo lo ws excel, viene automaticamente rigenerata la tabella.
    Non ho ben capito questa parte. Se la rigenerazione della tabella è un problema, puoi sempre mettere un pulsante che aggiorni quando necessario. Si può anche gestire la generazione della tabella chiedendo di cancellarla e reinserirla oppure di inserire solo le righe che si aggiungono. Si può anche specificare di non rilasciare i dati alla chiusura del file, per velocizzarne l'apertura. Dipende molto dal contesto di utilizzo.

    roberto21 ha scritto:


    1) la stringa nella cella è una formula o no? Comincia con "=", però se entro e clicco su invio, come detto, sembra che la formula sia "calcolata" e ottengo le stringhe separate; se la seleziono e clicco F9, non succede niente.
    2) ho provato a inseire in vba , dopo aver trasferito i dati,l'istruzione
    application.CalculateFull
    e non succede niente, analogamente a F9 di prima. Vi dice niente?
    A me capita sovente quando il formato della cella è "Generale". Non sempre Excel riconosce al volo che è una formula. In prima battuta lo accetta come testo e poi editando la cella, riconosce la formula e la risolve.
    Come hai notato il ricalcolo non è sufficiente. Per quello preferisco lasciare queste cose al client e non farmi restituire i dati dal server. Almeno imposto la cella per come mi serve e son sicuro di non avere sorprese.

    Eventualmente si può gestire il Workbook_Open per controllare che siano presenti le formule in ogni riga, impostandola nella prima e poi simulare il trascinamento con l'AutoFill.
  • Re: Testo multiline sql e excel

    Non credo di aver afferrato bene il problema del ricalcolo. Per come lo vedo io, sembra una malfunzione bella e buona, a meno che...
    Mi spiego. Ho ricambiato il codice, che ora (nel frontend access) inserisce nel campo della tabellla sql la formula
    =concatenate("string1";char(10);"String2").
    che viene importata nella corrispondente cella excel (formato general o text, non cambia nulla), ma NON VIENE CALCOLATA neanche selezionandola e cliccando F9 ( e stavolta non c'è dubbio che sia una formula); l'unico modo per farla calcolare è andare dentro col cursore e cliccare INVIO.
    Se riscrivo la formula tale e quale in un'altra cella, la formula, come pare logico, viene immediatamente calcolata, a prescindere dal tipo di cella (se faccio copia e incolla la copia continua a non funzionare). La conclusione sembra essere che quel che arriva dalla tabella sql non è uguale a quello che scrivo, anche se apparentemente lo è, e la differenza fa sì che excel non ricalcoli. Ma questo sembra contraddetto dal fatto che con INVIO il ricalcolo avvenga, cioè con l'invio miracolosamente il riconoscimento della fomula avviene. Se, come credo, l'invio corrisponde a una forma di editing, ci troviamo con quel che dice Sgrobak: ma mi sembra comunque una malfunzione...
  • Re: Testo multiline sql e excel

    roberto21 ha scritto:


    ...che viene importata nella corrispondente cella excel (formato general o text, non cambia nulla), ma NON VIENE CALCOLATA neanche selezionandola e cliccando F9 ( e stavolta non c'è dubbio che sia una formula); l'unico modo per farla calcolare è andare dentro col cursore e cliccare INVIO.
    Se riscrivo la formula tale e quale in un'altra cella, la formula, come pare logico, viene immediatamente calcolata...
    È un comportamento che ho notato spesso. Soprattutto le volte in cui copio ed incollo una formula, magari presa dal web. La digerisce come testo, anche se non viene anteposto l'apostrofo. Non ho mai capito perché e fatico a trovare la logica con cui riprodurre l'errore, ma ogni tanto mi capita.
    Posso solo dedurne che per qualche motivo non venga recepita come formula ma come testo semplice. E in una esportazione da altre origini me lo aspetto ancor di più, dato che il concetto di formula è proprio di Excel. Dal DB esporti un testo ed Excel come testo lo vede. Poi, si accorge che quel testo è in realtà una formula e la calcola.
    Nel senso: il campo è "Testo breve" e l'esportazione del recordset butta fuori del testo. Excel riceve del testo e come tale lo tratta. Solo dopo si accorge che è una formula. Ma fino a quando la cella non viene editata, testo rimane...
Devi accedere o registrarti per scrivere nel forum
6 risposte