Serienbrief Datenbank nach Datensatz wert ändern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Serienbrief Datenbank nach Datensatz wert ändern

Re: Serienbrief Datenbank nach Datensatz wert ändern

von lamer56 » Mi, 23.01.2008 16:59

heyp !!

Erstmal vielen Dank für die Geduld mit mir.
Ja du hast alles richtig skizziert. Bloß was Du dort erklärst ist für mich unter StarBasic noch nicht umsetzbar.
Da wird mir wohl die Bücherhalle weiterhelfen müssen.
Wenn ich dann etwas mehr Plan habe melde ich mich wieder hier.

Also erstmal ende des Threads.
Bis ich ein OOo Basic Buch durch habe.
Bis dann
Lamer56

Re: Serienbrief Datenbank nach Datensatz wert ändern

von komma4 » Mi, 16.01.2008 17:05

erscheint für mich wieder als neues Szenario:

Du hast einen PostgreSQL-View, der die Daten zum Drucken enthält.

Nun würde ich mit den Daten der View ein Formular erstellen. Dort bietest Du einen "Drucken"-button an, der die Daten (an Writer?) übergibt, und den Druck initiiert.

In der View ist auch ein eindeutiger Schlüssel (Auftrags-/Rechungs-Nr. oder so was).
Mit diesem kannst Du auch einen Datensatz identifizieren, der Dein "gedruckt" Feld hat....
Damit kannst Du dann auch aktualisieren.

Nun die Abfrage, die den View erstellt nochmals laufen lassen, das Formular refreshen, damit der bearbeitete Datensatz nicht mehr erscheint.


Habe ich das richtig skizziert?

[@wolle2000 und alle anderen: verzeiht mir bitte die Verwendung von Denglisch]

Re: Serienbrief Datenbank nach Datensatz wert ändern

von lamer56 » Mi, 16.01.2008 16:24

heyp !!
Ich verstehe, da habe ich ein Gedankendreher gehabt.
Wäre es denn möglich mit der Var und dem DB Feld versteckt?
Wenn nicht würde mir folgende Lösung vorschweben. Ich möchte nur eine Adresse absenden wenn diese gesendet wurde drückt der User einen Knopf es geht ein Popup auf und der User gibt die aktuelle Datensatznummer an, von dem DS welcher gerade gesendet wurde. Dieser wird dann auf gesendet gesetzt.
Der User kann nicht direkt im DB Explorer den DS ändern, da die Anzeige der Datensätze auf einen Postgre View beruht in welchen keine Daten geändert werden können und auch nicht direkt geändert werden sollen.
In VBA für Access kein Problem aber in BASIC stehe ich wirklich noch vollkommen auf dem Schlauch.
Bis dann
Lamer56

Re: Serienbrief Datenbank nach Datensatz wert ändern

von komma4 » Mi, 16.01.2008 11:31

Du sagtest doch, alle in der Tabelle sollen bearbeitet werden, und später kommen neue Datensätze hinzu. Also können doch nach dem Druck ALLE Sätze markiert werden...
lamer56 hat geschrieben:"UPDATE SERIENBRIEFTABELLE SET GESENDET = -1

Neue Datensätze habe das Feld nicht gefüllt, Deine Abfrage kann also darauf abstellen:

Code: Alles auswählen

SELECT * FROM "Serienbrieftabelle" WHERE "GESENDET" <> -1

Re: Serienbrief Datenbank nach Datensatz wert ändern

von lamer56 » Mi, 16.01.2008 10:55

heyp !!
Danke für die ausführliche Antwort.
Ja, genau ich hatte die BASIC Befehle gesucht.
Das hat nun auch soweit geklappt.
Was jetzt aber noch nicht klappt ist, dass er mir nur die Zeile auf gesendet setzt, welche ich gerade gedruckt habe.
Also "UPDATE SERIENBRIEFTABELLE SET GESENDET = -1 WHERE ID= zuletzt gedruckte ID.
Also wie komme ich an die zuletzt gedruckte ID ?
Ich habe gedacht die ID in eine allgemeine Variable zu speichern und dann im MAKRO wieder abzurufen.
Bloß wie macht man so etwas in OOo BASIC ?
Wäre es möglich das DB Feld ID auf das Dokument zulegen wobei dies zwar gefüllt jedoch nicht gedruckt wird?
Gibt es ein gutes OOo BASIC DB Buch?
Danke für Infos.

Bis dann
Lamer56

Re: Serienbrief Datenbank nach Datensatz wert ändern

von komma4 » Sa, 12.01.2008 04:52

das geht auch mit einer "manuellen" SQL-Anweisung, aber das Ganze soll ja wohl mehrfach laufen, deshalb ist Dein Ansatz, die Aufgabe mittels Makro zu erledigen, schon richtig.

Da (erst nach einem Ausdruck) weitere Datensätze dazu kommen, kann ein entsprechendes Feld unkonditioniert gesetzt werden:

In SQL könnte das so aussehen:

Code: Alles auswählen

UPDATE "tabelle" SET "gedruckt" = TRUE 
[wenn die Spalte als boolean definiert wurde]



Suchst Du hierzu BASIC-Befehle?

Code: Alles auswählen

oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = oDatenbankKontext.getByName( "MeineDatenbank" )
' Verbindung zur DB herstellen
oVerbindung = oDatenquelle.getConnection( "" , "" )
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oStatement.executeUpdate( sSQL )
[MeineDatenbank ist der Name der registrierten Datenquelle; die Anmeldung erfolgt ohne Nutzernamen und Passwort]

Die Variable sSQL muss mit dem entsprechend aufbereiteten SQL-Befehl gesetzt sein, also etwa so:

Code: Alles auswählen

sSQL = " UPDATE ""tabelle"" SET ""gedruckt"" = " & now() 
[wenn die Spalte als timestamp definiert wurde]


Der Aufwand mit Makro und Statusfeld lässt sich umgehen, wenn die "neuen" Datensätze (bspw. an einem Einfüge-Zeitstempel) erkannt werden können: dann startest Du eine entsrechende Abfrage mit der Bedingung:

Code: Alles auswählen

...WHERE "datum_einfueg" > "druck_zeitstempel"
Hilft Dir das weiter?

[immer noch: 8°52'55"N 98°16'1" E; aktuell: 29 Grad C]

Serienbrief Datenbank nach Datensatz wert ändern

von lamer56 » Fr, 11.01.2008 14:09

heyp !!
Es geht darum, dass bei einer Serienbrief Erstellung nach jedem Datensatz ein Flag in der Datenbank gesetzt werden soll, dass dieser Datensatz schon angeschrieben wurde. Grund hierfür ist das die Liste sich weiter füllt und die Serienbrief ausgabe immer von neuem angestoßen wird.
Damit dieser bei einer erneuten Serienbrief Erstellung der Datensatz übersprungen wird.
Ich denke da an ein makro weiss jedoch nicht wie ich eine DB per OOo Makrosprache ansprechen kann.
Danke für Infos
Bis dann
Lamer56

Nach oben