summaryrefslogtreecommitdiff
path: root/design/widgets/dbwidget.tex
blob: 10c1e5b7a5df33611c8417a218ac74c4fb86565c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
% -*- coding: utf-8 -*-
\subsubsection{\texttt{dbwidget} elementet}
En dbwidget fungerer på overfladen som en combobox i search mode
(med type attributten sat til search), den har dog inden item tags
som beskriver hvilke valgmuligheder der er.\\
Istedet benytter den sig af lacy-fetch kald til en posgresql database.\\
En dbwidget har flg. attributter:
\begin{itemize}
\item \textit{driver} - Den database driver som skal benyttes. I øjeblikket
  kun ``QPSQL'' som er postgresql driveren.
\item \textit{server} - Addressen på den server som driver databasen.
\item \textit{port} - Portnummeret hvorpå databasen kan kontaktes.
\item \textit{user} - Brugeren som databasen skal kontaktes med.
\item \textit{password} - Det tilhørende password.
\item \textit{database} - Databasen som skal kontaktes.
\item \textit{select} - Et udtryk som svarer til SELECT delen af en SQL statement.
\item \textit{from} - Navnet på den tabel som der skal selectes fra.
\item \textit{where} - Den del af resultatet fra select som skal sammenlignes med
  indholdet fra tekstfeltet i dbwidgeten. Hvis f.eks tekstfeltet indeholder
  teksten ``ab'' og from attributen indeholder ``foo'', vil den konstruerede WHERE
  statement til serveren blive ``WHERE foo = 'abc' ''. For at gøre søgningen
  case-insensitiv bliver strengen fra tekstfeltet og resultatet i WHERE statementen
  konverteret til lowercase indne sammenligningen udføres. 
\item \textit{format} - Formatstrengen som bruges til at formatere datafelterne
  fra databaseopslagene inden de indsættes i dbwidgetens tekstfelt. Modsat ander
  steder i systemet er de tilrådighedværende navne de samme som dem i select
  attributen og ikke navnene på de widgets som findes makroen. Med den ene forskel
  fungerer formatstrengen som dokumenteret i kapitel \ref{format}.
\end{itemize}

\begin{lstlisting}[title={Et eksempel på et dbwidget tag, som laver søgning i en pilledatabase}]
<dbwidget name="pille" driver="QPSQL" server="medicindb.dk"
          user="postgres" database="medicin"
          select="drugname" from="pills" where="drugname"
          format="${drugname}"/>
\end{lstlisting}

\begin{lstlisting}[title={Et mere kompliceret eksempel som viser sammensatte strenge}]
<dbwidget name="pille" driver="QPSQL" server="medicindb.dk"
          user="postgres" database="medicin"
          select="drugname, dosage" from="pills"
          where="drugname || ' (' || dosage || ')'"
          format="${drugname} (${dosage})"/>
\end{lstlisting}