Als ein sehr simples Beispiel erzeugen wir mit Hilfe von SQLTeX einen Report. SQLTeX ist ein Perl-Programm, welches über DBI-Schnittstelle Verbindung zur DB aufnehmen kann, und dabei als ein Preprozessor ein LaTeX-Quellcode eingebundene SQL-Anweisungen ausführt und diese durch das Resultat ersetzt.
Die Auswahl des Kontos soll über ein kleines Shellscript erfolgen, dazu benötige ich erst mal eine kleine Funktion für PostgreSQL, die mir eine Liste der Namen und Kontonummern in einem Format ausgibt, das ich für das 'dialog' - Programm auf Shellebene benötige.
001 create or replace function dlg_select() returns setof text as $$ 002 select '\"' || name || ':' || kontonr || '\" \"\" \\' 003 from kunden 004 order by 1; 005 $$language sql;Download dlg_report.sql
Nun das Shell-Script:
001 #!/bin/bash 002 # Last modification: So Okt 16 08:32:57 CEST 2005 003 004 005 tmpmenu=/tmp/dia.$$ 006 tmpmenu2=/tmp/dia2.$$ 007 sql="select dlg_select() order by 1 desc;" 008 009 010 echo "dialog --menu \"Welcher Kunde?\" 20 70 15 \\" > $tmpmenu2 011 psql test -t -c "$sql" | tac | sed '1d' >> $tmpmenu2 012 . $tmpmenu2 2>$tmpmenu || exit 013 014 015 kunde="`sed -e 's/^.*://' $tmpmenu`" 016 017 018 rm $tmpmenu 019 rm $tmpmenu2 020 021 dialog --infobox "Bitte warten..." 15 76 022 023 SQLTeX -rn -f -o report.tex report.sqltex $kunde > /dev/null 2>&1 024 025 026 dialog --msgbox "Vielen Dank für die Benutzung des Programms\n\ 027 \n\ 028 Linux-Info-Tag 2005" 15 76Download dialog.sh
Die verwendete 'report.sqltex' dient nur als Template.
001 \documentclass[a4paper, DIV13, 10pt]{scrartcl}
002 \usepackage{german, umlaut, longtable}
003 \setlength{\parindent}{0cm}
004
005 \sqldb[]{test}
006 \begin{document}
007
008 \begin{center}
009 \large{Kontoübersicht}
010 \end{center}
011
012 \begin{tabular}{ll}
013 Name: & \sqlfield{select name from kunden where kontonr = $PAR1} \\
014 Ort: & \sqlfield{select plz || ' ' || ort from kunden where kontonr = $PAR1} \\
015 \end{tabular}
016
017 {\tt
018 \begin{longtable}[]{|l|r|r|l|r|} \hline
019 \bf Zeitpunkt & \bf Zugang & \bf Abgang & \bf Text & \bf Saldo\\ \hline
020 \sqlrow[fldsep=&,rowsep=\\ \hline]
021
022 {set datestyle=german;select zeitpunkt, zugang, abgang, text, saldo from saldeninfo($PAR1)} \\ \hline
023
024 \end{longtable}
025 }
026
027 \end{document}
Download report.sqltex