datatools

  • Creatore
    Topic
  • #86524
    Up
    0
    Down
    ::


    Sto stampando un indirizzario prelevando i dati da un database con datatool.

    Ho gli indirizzi delle persone 1 per ogni record, già in ordine di provincia.

    Vorrei stampare una nuova [tt]\subsubsection[/tt] solo e solo se la provincia cambia.

    Non riesco a salvare una variabile per metterci la provincia del record precedente.

    Come fare?

    Segue una parte del programma che stampa ricorsivamente le schede

    i campi si possono desumere dall’inizio

    `
    \newcommand{\soci}[2]
    { %tutti i soci
    \DTLloaddb[noheader,keys={Tiposocio,Citta,Posizgeogr,Nome,Cognome,sex,annona,profess,Nome2,Cognome2,sex2,annona2,profess2,indirizzo,CAP,Prov,telefono,tellavoro,tellavoroa,cellulare,cellularea,Stato,Email,Emaila,Altrinomi,Interessi,Organiz,Viaggiato,Vissuto,Vacanze,Frasetta,arrivare,nguests,nguestsmax,ch,fam,bed,daysnotice,mustwrite,npnr,wds,wmt,wheelc,lodgonly,kitchen,vegetar,X,xx,young,animals,lingue}]{#1}{#1.cvs}
    %\begin{multicols}{2}
    {
    \DTLforeach{#1}{\servas=Tiposocio,\city=Citta,\geo=Posizgeogr,\nome=Nome,\snome=Cognome,\sex=sex,\born=annona,%
    \work=profess,\nomea=Nome2,\snomea=Cognome2,\sexa=sex2,\borna=annona2,\worka=profess2,\address=indirizzo,\zip=CAP,\prov=Prov,%
    \phoneh=telefono,\phonew=tellavoro,\phonewa=tellavoroa,\mob=cellulare,\moba=cellularea,\state=Stato,\email=Email,\emaila=Emaila,%
    \altri=Altrinomi,\interessi=Interessi,\orgniz=Organiz,\viaggiato=Viaggiato,\vissuto=Vissuto,\vacanze=Vacanze,\frase=Frasetta,%
    \arrivare=arrivare,\nguests=nguests,\nguestmax=nguestsmax,\ch=ch,\fam=fam,\bed=bed,\daysnotice=daysnotice,%
    \mustwrite=mustwrite,\npnr=npnr,\wds=wds,\wmt=wmt,\wheelc=wheelc,%
    \lodgonly=lodgonly,\kitchen=kitchen,\vegetar=vegetar,\X=X,\xx=xx,\young=young,\animals=animals,\lingue=lingue}%
    {%\mbox{%
    %\ifthenelse{\equal{\provinciavecchia}{\prov}}{\subsection{\prov \newline \line(1,0){350}}}{}
    {\noindent {\bf \normalsize%
    \ifthenelse{\equal{\servas}{DH}}{\dayhost}{}%
    \ifthenelse{\equal{\servas}{DH2}}{\dayhost}{}%
    \ifthenelse{\equal{\servas}{PA}}{\opendoor}{}%
    \ifthenelse{\equal{\servas}{PA2}}{\opendoor}{}%
    \ \city\ \prov\ %
    \hfill%
    \ifthenelse{\equal{\wmt}{S}}{\bag\ }{}%
    \ifthenelse{\equal{\nguests}{}}{}{\nguests}%
    \ifthenelse{\equal{\nguestmax}{}}{}{/\nguestmax}%
    \ifthenelse{\equal{\nguests\nguestmax}{}}{}{\guest\ }%
    \ifthenelse{\equal{\daysnotice}{}}{}{\ifthenelse{\equal{\daysnotice}{0}}{}{\daysnotice \ding{38}\ }}%
    \ifthenelse{\equal{\npnr}{S}}{\ding{73}}{}{\ifthenelse{\equal{\mustwrite}{S}}{\ding{46}\ }{}}%
    \ifthenelse{\equal{\wheelc}{S}}{\whelchair\ }{}%
    \ifthenelse{\equal{\ch}{S}}{\baby\ }{}%
    \ifthenelse{\equal{\fam}{S}}{\family\ }{}%
    \ifthenelse{\equal{\bed}{SSN}}{\ssn\ }{}%
    \ifthenelse{\equal{\bed}{SSA}}{\ssa\ }{}%
    \ifthenelse{\equal{\bed}{SBN}}{\sbn\ }{}%
    \ifthenelse{\equal{\bed}{SBA}}{\sba\ }{}%
    \ifthenelse{\equal{\wds}{S}}{\nosmoking\ }{}%
    \ifthenelse{\equal{\vegetar}{S}}{\banana\ }{}%
    \ifthenelse{\equal{\kitchen}{S}}{\knife\ }{}%
    \ifthenelse{\equal{\young}{S}}{Y}{}%
    \ifthenelse{\equal{\X}{S}}{\moredays\ }{}%
    }\newline%
    % indirizzo
    \begin{minipage}[t]{0.3\textwidth}
    \Letter \address\ \newline \zip\ \textbf \city\ \prov\ \index[city]{ \city\ } \index[city]{\prov\ } \newline%
    \ifthenelse{\equal{\geo}{}}{} {\Info \sl\geo\ \newline}
    \ifthenelse{\equal{\arrivare}{}}{}{\ding{220}\arrivare\ \newline}%
    \end{minipage}
    %aggiungo uno spazio tra i box
    {\ }
    %nomi
    \begin{minipage}[t]{0.7\textwidth}
    \ifthenelse{\equal{\nome\snome}{}}{}{\nome\ \textbf{\snome\ }\index[persons]{\snome\ \nome\ }\index[age]{\born!\snome\ \nome\ \prov\ }}%
    \ifthenelse{\equal{\sex}{F}}{\Female \born\ \work\ }{}%
    \ifthenelse{\equal{\sex}{f}}{\Female \born\ \work\ }{}%
    \ifthenelse{\equal{\sex}{M}}{\Male \born\ \work\ }{}%
    \ifthenelse{\equal{\sex}{m}}{\Male \born\ \work\ }{}%
    \ifthenelse{\equal{\sex}{}}{\Hermaphrodite \born\ \work\ }{}%
    \ifthenelse{\equal{\phoneh}{}}{}{\phone\phoneh\ }%
    \ifthenelse{\equal{\phonew}{}}{}{\Industry\phonew\ }%
    \ifthenelse{\equal{\mob}{}}{}{\Mobilefone\mob\ }%
    \ifthenelse{\equal{\email}{}}{}{\href{mailto:\email}{\mbox{\email\ } }}%
    \ifthenelse{\equal{\nome\snome\email\mob\phoneh}{}}{}{\newline}%
    \ifthenelse{\equal{\nomea\snomea}{}}{}{\nomea\ \textbf{\snomea}\ \index[persons]{\snomea\ \nomea\ }\index[age]{\borna!\snomea\ \nomea\ \prov\ }%
    \ifthenelse{\equal{\sexa}{F}}{\Female}{\ifthenelse{\equal{\sexa}{f}}{\Female}{\Male}}\borna\ \worka\ }%
    \ifthenelse{\equal{\phonewa}{}}{}{\Industry\phonewa\ }%
    \ifthenelse{\equal{\moba}{}}{}{\Mobilefone\moba\ }%
    \ifthenelse{\equal{\emaila}{}}{}{ {\href{mailto:\emaila}{\mbox{\emaila\ } } }}%
    \ifthenelse{\equal{\nomea\snomea\emaila\moba\phonewa}{}}{}{\newline }%
    \ifthenelse{\equal{\altri}{}}{}{\index[persons]{\altri}\altri\newline }%
    %varie
    \ifthenelse{\equal{\lingue}{}}{}{\hear \lingue\ }
    \ifthenelse{\equal{\interessi}{}}{}{{\bf \Heart} \interessi\ }%
    \ifthenelse{\equal{\orgniz}{}}{}{\smiley\ \orgniz\ }%
    \ifthenelse{\equal{\viaggiato}{}}{}{\ding{40}\viaggiato\ }%
    \ifthenelse{\equal{\vissuto}{}}{}{\home\ \vissuto\ }%
    \ifthenelse{\equal{\vacanze}{}}{}{\holiday\ \vacanze\ }%
    \ifthenelse{\equal{\animals}{}}{}{\dog\ \animals\ }%
    \ifthenelse{\equal{\frase}{}}{}{\frase\ }
    \ifthenelse{\equal{\xx}{}}{}{\moredays\ \xx\ }%
    \end{minipage}
    \def \provinciavecchia {\prov}
    \def \cittavecchia {\citta}
    }%
    \newline \par}
    %\end{multicols}
    }
    %}
    }`

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #86525
      Up
      0
      Down
      ::


      Benvenuto sul forum!

      Da una domanda come questa si possono ricavare ben poche informazioni utili a darti una mano. Occorre un breve estratto del database e un esempio di come adoperi datatool.

      Ciao
      Enrico

    • #86526
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Ciao,
        non so Enrico cosa ne pensa ma io sono contrario all’uso della pentola a pressione, ehm, volevo dire all’uso di datatool.
        Chissà, forse un’allergia.
        🙄

        Piuttosto consiglierei una soluzione con LuaLaTeX (semplice definizioni in Lua) o addirittura un codice esterno che generi il sorgente TeX…
        R.

      • #86527
        Up
        0
        Down
        ::


        DIrei che il primo tentativo da fare è
        `\gdef \provinciavecchia {\prov}
        \gdef \cittavecchia {\citta}`
        Le definizioni che dai con [tt]\def[/tt] sono locali e si perdono alla fine del gruppo in cui appaiono. Con [tt]\gdef[/tt] il problema non si pone.

        Ciao
        Enrico

      • #86528
        Up
        0
        Down
        ::


        No, grazie.
        A parte la pazzia di gestire i caratteri di escape due volte. (Non sai mai cosa trovi nei campi)
        Voglio separare la creazione delle pagine dal’estrazione dei dati.
        Gestire tutto insieme porta ad un codice di difficile manutenzione.

      • #86529
        Up
        0
        Down
        ::

        robitex” post=85968Ciao,
        non so Enrico cosa ne pensa ma io sono contrario all’uso della pentola a pressione, ehm, volevo dire all’uso di datatool.
        Chissà, forse un’allergia.
        🙄

        Piuttosto consiglierei una soluzione con LuaLaTeX (semplice definizioni in Lua) o addirittura un codice esterno che generi il sorgente TeX…
        R.

        No, grazie.

        Ho separato l’estrazione dei dati dalla creazione delle pagine, per avere codice di facile manutenzione.

      • #86530
        Up
        0
        Down
        ::

        egreg9″ post=85969DIrei che il primo tentativo da fare è
        `\gdef \provinciavecchia {\prov}
        \gdef \cittavecchia {\citta}`
        Le definizioni che dai con [tt]\def[/tt] sono locali e si perdono alla fine del gruppo in cui appaiono. Con [tt]\gdef[/tt] il problema non si pone.

        Ciao
        Enrico

        Ho provato ma non funziona.
        Mette dentro \cittavecchia il codice e non il valore quindi mi ritrovo con la nuova provincia

    Visualizzazione 5 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top