Weiter Zurück Inhalt

8. Client-Zugriff

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 76
Download 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

Links

SQLTeX


Weiter Zurück Inhalt