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
|