|
Wir schreiben jetzt via Deplate mit selbstdefinierbaren Notationen Daten in beliebige Tabellen einer im Hintergrund laufenden SQL-Datenbank. |
||
|
Man kann jetzt von Deplate aus mit selbstdefinierbaren Notationen Daten in beliebige Tabellen schreiben. Das leistet unser frei verfügbares Makropaket a2e.rb. Je nach Schalter können wir einen Quelltext entweder als Befehlsserie für die Dateneingabe oder als Web-Dokument interpretieren. Wie die Daten im Web erscheinen, geben wir auch vor. Wir können die gleichen Eingabebefehle beliebig oft ausführen, ohne dass etwas mehrfach eingetragen wird. 1 Makro DBTAB: eine Relation definierenMit dem Deplate-Makro Es werden zunächst Datenstrukturen definiert:
- {dbtab keys="mail uid ref" vals="user host rem"
rem=mailrem ref=mailref user=mailuser
host=mailhost text=rem:Person {arg:mail_uid} ist
unter {arg:mail_user} bei {arg:mail_host}
erreichbar.}
- {dbtab keys="tadok ta" vals="dok rem ktg"
rem=tarem ktg=taktg text=rem: Vorgang
{arg:tadok_ta} gehört zu {arg:tadok_ktg}; merke:
{arg:tadok_rem}}
- {dbtab keys="person person" vals="nom des lok
rol typ mail" nom=persnom typ=perstyp des=persdes
text=des:Zu Person {arg:person_person} wird
einiges angegeben.}
- {dbtab keys="perstyp prs" vals="typ"
perstyp=person prs=person typ=perstyp: Person
{arg:perstyp_prs} ist von Typ {arg:perstyp_typ}.}
- {dbtab keys="persnom prs" vals="nom"
persnom=person prs=person nom=persnom: Person
{arg:persnom_prs} heißt {arg:persnom_nom}.}
- {dbtab keys="spev spev" vals="spez dat typ rem"
spev=spzeven dat=spevdat typ=spevtyp rem=spevrem
text=rem:Am Tage {arg:spev_dat} trug sich
Ereignis {arg:spev_spev} des Typs {arg:spev_typ}
zur Akte {spev_spez} mit Notiz {arg:spev_rem}
hinzu.}
- {dbtab keys="spez spez" vals="nom des mon odat
fdat de rkod ust rem fin" text=rem nom=speznom
des=spezdes mon=spezmon odat=spzodat fdat=spzfdat
de=spezde rem=spezrem fin=spzfinp rkod=spzrkod
ust=ustvat:Akte {arg:spez_spez}}
- {dbtab keys="sskm spev" vals="spez ta dat typ
rem delta" sskm=spzsskm spev=spzeven dat=spevdat
typ=spevtyp rem=spevrem text=rem:In unserer Bank
trug sich {arg:sskm_spev} zu.}
Das Attribut
vor. Diese können wie etwa in “person person” beide gleich lauten. Das Attribut Die übrigen Attribute sind Paare aus einem zuvor definierten Kürzel (Relation, Schlüsselfeld oder Wertfeld) und einem ihm entsprechenden Namen in der Datenbank (Tabellenname oder Spaltenname). Eine Sonderstellung nimmt das Attribut Das Argument des Makros 2 Makro DB: Eintrag in die Relation schreibenDie mit dem Deplate-Makro Im folgenden findet man
- {db rek="person dornach"
nom="Rechtsanwaltskanzlei Dornach" typ=frm
lok=muc rol=adr mail="dornach@t-online.de"}
- {db rek="person MohrMB" nom="Benno MOHR"
lok=mohrfra rol=papr typ=hom
mail="mohr@mohr.com":GF der Fa Mohr Weichwaren
GmbH}
- {db rek="ssskm kdbxfinpI59" spez=kdbxJ3
dat="2006-05-09" typ=p ta=a2e0605094:es geht doch}
- {db rek="spez kdbxJ3" fin=t}
- {db rek="sskm abfjK1070605" spez=abfjK1
ta=a2e0706052 delta=0: noch so ein Eintrag}
- {db rek="person MohrStu" typ=frm nom="Mohr
Stuttgart": Filiale}
- {db rek="person mohr" nom="Mohr Weichwaren
GmbH" mail="info@mohr.com"}
Wie man sieht werden hier im Attribut Damit dieses System funktioniert, muss es immer mindestens ein Schlüsselfeld in der Tabelle geben. Es funktioniert nicht bei Tabellen eines populären Typs, wie man ihn von Ruby on Rails her kennt, bei denen das Schlüsselfeld implizit durch Inkrementierung erzeugt und nie von Menschen verwendet wird. 3 Verwendung mit mehreren DatenbankenIn welche Datenbank geschrieben wird, kann über die Variable Achtung: Wird die Datenbank gewechselt, so funktioniert eventuell einiges nicht mehr so wie in den anderen Abschnitten des Dokumentes. Z.B. kann man in einem Abschnitt, in dem in eine fremde Datenbank eingegeben wird, u.U. keine Verweise auf Dokumente verwenden, die mit DOK-Zeichen aus der eigenen Datenbank identifiziert werden. Ein Anwendungsbeispiel für das Schreiben in eine Fremddatenbank findet sich im folgenden (suche 4 Verwendung mit ‘make’Im Zusammenhang mit unserem Hypertext-Dateisystem haben wir uns ein paar Befehle zurechtgelegt, mit denen wir normalerweise die Dateneingabe durchführen. Wenn wir $ make dbput sagen, wird die Dateneintragung aktiviert und nebenbei wird eine schlichte Textdatei erzeugt. Bei allen anderen Man kann die Daten ruhig immer wieder schreiben, denn dank der eindeutigen Identifizierung der Einträge durch Schlüsselfelder kann kaum etwas schief gehen. Allerdings wäre solche wiederholte Einschreibung eine Verschwendung von Rechenzeit. Deshalb unterlassen wir das normalerweise. Auch wenn wir
* Meine Definitionen
Diese folgenden Definitionen sind im Dokument
unsichtbar und werden in keine Datenbank
geschrieben.
{dbtab keys="person person" vals="nom des lok rol
typ mail" nom=persnom typ=perstyp des=persdes
text=des:Angaben zu Person {arg:person_person}}
* Meine Daten
#VAR: dbput=1
#VAR: dbnom=ffii
Was jetzt kommt, ist im Dokument sichbar und wird
immer dann in die FFII-Datenbank geschrieben, wenn
als Ausgabeformat in Deplate {code:plain} gewählt
ist.
- {db rek="person mohr" nom="Mohr Weichwaren
GmbH" mail="info@mohr.com"}
* Sonstige Texte
#VAR: dbput=0
#VAR: dbnom=a2e
Ab hier wird nicht mehr in die Datenbank
geschrieben.
Auch nicht, wenn hier {code:db}-Makros stehen.
Sofern auf eine Datenbank zugegriffen wird, ist es
nunmehr die a2e-Datenbank.
5 Resourcen
6 Vergangenheit
|
||