einzelne datensätze (keine adresse) in wirter einfügen

Das Textverarbeitungsprogramm

Moderator: Moderatoren

zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

Hey @ all,

also ich will meine Rechnungen nur noch aus der Datenbank erstellen, Dazu hab ich mehrere Tabellen angelegt, unter anderem "Kunden" und "Rechnungsnummer".

hand aufs Herz, hab fleissig rumgespietl und probiert und auch die Suche (google sowie forumsuche verwendet), weiß aber nicht wirklich nach welchen begriffen ich suchen soll, da ich meistens auch die Serienbrieffunktion stoße.

Zu meinem Vorhaben:

Ich will meine Anschriften und meine aktuellen Rechnungssätze aus der Datenbank holen. Anschriften, klappt auch wunderbar mit der Serienbrieffunktion.

Allerdings möcte ich nun meine Rechnungstexte auch aus der DB holen.

Dazu gibt es 2 tabellen, eine mit Rechnungsnr und Kundennummern und eine weitere mit den Daten für die jeweilige Rechnung (Rechnungsnummer, lfd-nr, Bemerkung, Leistung, Preis).

Am liebsten wäre es mir, wenn ich den Kunden auswähle (in der Quelle/DB) und die ensprechene rechnungsnummer. Dann ensprechend den Ergebnissen die Tabelle generiert wird und der Preis(Gesamt), MwSt etc. errechnet werden.

Mach ich das besser in Calc oder in Writer? (Wobei ich meine Vorlagen schon im Writer erstellt habe)

Könnte ihr mit einen Denkanstoss geben.

Vielen Dank, euer Zepho
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von komma4 »

...ich mache die ganze Abfragerei in BASIC durch einen SELECT (Dialog zur Auswahl Kunde usw. vorgeschaltet) und gebe die Spalten dann nach Writer aus (Textmarken / bookmarks als Platzhalter).

Auch die Berechnung von MWSt, Gesamtsumme etc. kann ich damit 'erschlagen'.

Hilft Dir das als Denkanstoss?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

hmm es rattert gerade, also

Das mit der abfrage hab ich mir schon gedacht, aber "Dialog vorschalten" (Markos?) und textmarken als Platzhalter? wrid den so die tabeller gleich um weitere zeilen ergänzt, wenn ich mehrere posten habe?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von komma4 »

Die Dialoge verwende ich zur Dateneingabe (neue Rechn.-Position) und zur Auswahl des Rechnungs-Datensatzes.

In meiner Vorlage habe ich Textmarken, um die Position der Ausgabe zu definieren.
Ich schreibe allerdings nur Einzelposten-Rechnung, ein Seitenumbruch kommt nicht vor.

Aber auch das programmatische Füllen einer Tabelle mit den Datensätzen einer Abfrage sollte kein Geheimnis bleiben... Schwierigkeiten sehe ich "nur", wenn am Ende einer Ausgabe(nseite), oder zu Beginn der Folgeseite eine Zwischensumme ausgegeben werden soll: bei der Erstellung der Rechnung weisst Du nicht wo ein Seitenumbruch stattfinden wird.
Wenn Du auf "Zwischensumme" verzichten kannst: go ahead
Wenn nicht: k.A.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

Okay, danke werde mich morgen mal mit deinem vorschalg intensiv beschäftigen.

Da sich meine Rechnungen immer nur auf eine Seite belaufen, klingt dein vorschlag verlockend.

Ich dachte immer textmarken werden z.b. für inhaltsverzeichnisse verwendet? damit kann man auch die ausgabeposition festlegen?

Nur eins ist mir noch nicht klar. Was verstehst du unter "dialog"?

Meines Wissens kann man diese nur mit makros erzeugen, meinst du sowas?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von komma4 »

Ja: ich mache das mit Makros (Abfrage, Dokumenterzeugung), auch habe ich Dialog (ebenfalls mit Basic programmiert).


Muss aber nicht sein: als ich mit eben Deine Frage nochmal durchgelesen habe, vielleicht suchst Du das:

http://www.ooowiki.de/BerichteMitDemWriter



oder verstehe ich Dein Anliegen total falsch?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

Morgen Komma,

ich kenne diese seite schon, soweit ich gesehen habe, kann man dort aber nur über den seriendruck einen daten aus einer tabelle auswählen nitch aus mehreren und diese noch formatiert einfügen.

Danke für dein Feedback, meine Rädchen rattern wieder flüssig wie eh und jeh 8)

Greetz zepho
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

kannst du mir evtl. noche eine seite zu basic empfehlen, bzw. wie ich objekte in oo anspreche und sql in basic regle?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von komma4 »

Du kennst die Seiten, die im ersten Posting des Basic-Forumbereichs erwähnt werden? Andrews Dokument(e)?

SQL wird aufbereitet und abgesetzt; Beispiele finden sich im Netz...
Achtung: die Möglichkeiten mit SQL sind durch die eingesetzte Datenbank-engine und den verwendeten Treiber (ODBC, JDBC,..), vielleicht auch durch die Betreiberplattform (Windows, Linux, ...) definiert - und deshalb vielleicht eingeschränkt. Nicht alles ist mit Basic/SQL machbar. Ich persönlich ziehe die nativen, mitgelieferten DB-Administrationstools vor, wenn es um Einrichtung oder Änderung von Datenbanken und Tabellen geht.

Hier ein Beispiel, um eine CSV-Datei in eine Tabelle zu laden (bessere Performance als einzelne INSERTs)

Code: Alles auswählen

Sub base_insertCSVdatafile
' 2008-01-30

sCSVlokal = "d:/test/kunden.csv"  'Testversion auf Windows

' SQL aufbereiten 
sMyInsert = " LOAD DATA INFILE '" & sCSVlokal & "' INTO TABLE wro1.kunde FIELDS TERMINATED BY ','"
' msgbox sMyInsert

' Kontext holen
Dim oDBKontext 
oDBKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
If IsNull( oDBKontext ) Then
	msgbox "kein DB Kontext" 
	exit sub
End If

' Datenquelle auswählen
' name of OOo registered data source
If oDBKontext.hasByName( "MySQL" ) Then
   oDatenquelle = oDBKontext.getByName( "MySQL" )
Else
	msgbox "DB nicht gefunden" 
	exit sub
End If
 ' Verbindung zur DB herstellen
If Not oDatenquelle.IsPasswordRequired Then
	oVerbindung = oDatenquelle.getConnection( , )
Else
	oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
	oVerbindung = oDatenquelle.connectWithCompletion( oInteractionHandler ) 
End If 
 
' Statement erzeugen
oStatement = oVerbindung.createStatement

' Abfrage absetzen
oResultSet = oStatement.executeUpdate( sMyInsert )

End Sub

Beispiel, um eine (in einer BASE-Datei) gespeicherte Abfrage auszuführen:

Code: Alles auswählen

' Kontext holen
Dim oDBKontext 
oDBKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
If IsNull( oDBKontext ) Then
	msgbox "kein DB Kontext" 
	exit sub
End If

' Datenquelle auswählen
' name of OOo registered data source
If oDBKontext.hasByName( "base_HSQLDB" ) Then
   oDatenquelle = oDBKontext.getByName( "base_HSQLDB" )
Else
	msgbox "DB nicht gefunden" 
	exit sub
End If
 ' Verbindung zur DB herstellen
If Not oDatenquelle.IsPasswordRequired Then
	oVerbindung = oDatenquelle.getConnection( , )
Else
	oInteractionHandler = createUnoService( "com.sun.star.sdb.InteractionHandler" )
	oVerbindung = oDatenquelle.connectWithCompletion( oInteractionHandler ) 
End If 

sQuery = "rechnung"

' Abfragen
oAbfragen = oDatenquelle.QueryDefinitions 
' gewünschte Abfrage vorhanden?
if ( oAbfragen.hasByName( sQuery) ) Then
' Abfrage holen
oAbfrage = oAbfragen.getByName( sQuery )
' SQL-Ausdruck von Abfrage entnehmen
 sQuery = oAbfrage.Command
 ' Verbindung zur DB herstellen
 oVerbindung = oDatenquelle.getConnection( ,)
 ' Statement erzeugen
 oStatement = oVerbindung.createStatement
 ' Abfrage absetzen
 oResultSet = oStatement.executeQuery( oAbfrage.Command )
 
 ' durch alle Resultate iterieren
 while oResultSet.next()
' erste Spalte ausgeben
sKundenname = oResultSet.getString( 1 )
msgbox sKundenname
 Wend
 ' DB-Ressourcen wieder freigeben
 oResultSet.close()
 oStatement.close()
 oVerbindung.close()
Else
 MsgBox "Keine Abfrage mit dem Name " & sQuery & " vorhanden"
 Exit Sub
End If
Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

Danke dir, das hilft mir schon mal sehr weiter.

Ich muss gestehen, das ich den Aufwand ordentlich unterschätzt habe, werde wohl erst einmal in paar Tage brauchen um mich in das Ganze ein zu arbeiten. Ich habe mittlerweile auch schon ein paar tuto`s hinter mir, allerdings hats bis jetzt nicht mit dem steuern und auslesen von dialogen geklappt. Naja, wird noch...

Ich danke dir vielmals für deine Geduld mit mir.

Ein Frage noch zum Schluss. Ist es mögliche für eine Popup-liste, Listeneinträge anhand von SQL-Abfragen zu generieren? Ein ja/nein genugt völlig, nur damit ich weiß, ob mein Konzept möglich ist oder nicht.

Wie gesagt nochmal danke für alles, habe jetzt einen klaren Lösungsweg vor mir, nur noch nicht die notwendigen Fähigkeiten 8)

Greetz Zepho
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von komma4 »

Ja.






(
wobei ich nicht weiss, was Du mit einer "Popup-Liste" meinst: ein ListBox-control?
ich weiss auch nicht, ob das setzen eines SQL-Befehls, oder die Zuordnung einer gespeicherten Abfrage über die Oberfläche / Designmodus funktioniert: ich arbeite, wie erwähnt, im Hintergrund mit Basic, und da geht es)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
zepho
*
Beiträge: 14
Registriert: Sa, 15.09.2007 17:16

Re: einzelne datensätze (keine adresse) in wirter einfügen

Beitrag von zepho »

als popup liste meine ich die in html klassische select-box.

Danke für den hinweis, bekomme irgendwie ohnehin nicht die verknüpfung zwischen dem designten dialogen und basic zusammen, dann versuche ich mal einen Dialog in basic zu erstellen, mal sehen...
Antworten