🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Email mit Datenübergabe aus einem Base-Formular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
harald235

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von harald235 » Di 29. Mai 2012, 13:28

Hallo Robert,

nun habe ich einiges versucht und recherchiert, ein weiterführendes Ergebnis jedoch nicht gefunden. In den "RFC 2368 - The mailto URL scheme" http://www.faqs.org/rfcs/rfc2368.html ist die Möglichkeit eines Attachements auch nicht aufgeführt.

Eigentlich war es mir auch nur ""sportlicher Ehrgeiz", denn für meine Belange reicht die Übergabe der Email-Adresse, Betreff und die Anrede völlig aus. Ob ich den Anhang - der bei mir immer unterschiedlich ist - nun in meiner DB, oder in Thunderbird eintippe, ist Nebensache, denn den speichere ich nicht ab.

Wenn es tatsächlich mal gebraucht wird, Anhänge über die DB mitzuschicken, dann funktioniert der Lösungsweg von Gino sehr gut.

Da Deiner eleganter und vielseitiger ist, gefällt er mir besser und ich nutze ihn.

Gruß harald

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von wodim » So 4. Aug 2013, 18:12

Hallo,

wenn ich diesen Thread aus der Versenkung hole - nun, ich stehe gerade quasi vor der umgekehrten Aufgabenstellung, also Daten aus E-Mails (emfangen mit Thunderbird) in eine Datenbank (MySQL, via LibreOfffice -> ODBC) übernehmen. Sind hier Leute mit einschlägigen Erfahrungen an Bord?

Ich bin erst beim Aufbau der Datenbank, fange mal mit einer Tabelle "lieferanten" an. ;) Hintergrund: Mein Bestreben, System in das Chaos zu bringen, das sich aus einigen Bestellungen in letzter Zeit entwickelt hat - Suche im Netz nach dem Artikel und dem günstigsten Anbieter (Preisunterschiede von 200 ... 400% sind da keine Seltenheit) -> Online-Bestellung, und dann wirst du mit Mails bombardiert ... ;)

Letztens schon mal kurz die Übersicht verloren (mein gegenwärtig meistens beanspruchter "Lieferant" ist amazon ;) - aber bei wem man das dann letzlich bestellt hat, und wer's dann liefert) ... Hab' also schon mal einen Artikel zweimal bestellt. ;)

Und das jetzt nur als Privatmann - bis es richtig losgeht mit meiner angestrebten Selbstständigkeit, muss eine Datenbank mit dem "richtigen" Programm darüber stehen - wo man sich halt auch fix mal was dazuprogrammieren kann. Deshalb hab' ich die Suche nach einer "gescheiten" Buchhaltungssoftware für Linux aufgegeben, jetzt wird gebastelt. (Schaunmerdochmal - Anwendungsprogrammierung auf der Basis von relationalen Datenbanken war schließlich etliche Jährchen mein Broterwerb - kann doch noch nicht alles verlernt haben.) ;)

Wo ich auch noch etwas unschlüssig bin: Macht sich das besser mit LibreOffice - Makros oder lieber gleich mit Shell-Scripten ...

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » Mo 5. Aug 2013, 20:08

Hallo wodim,

ein neuer Thread wäre vermutlich besser, aber hier einmal kurz ein paar Hinweise zum Nachdenken:
Du möchtest Inhalte aus Mails auslesen. Das dürfte wegen der Struktur einzelner Mails problemlos gehen, solange es nur um den Unterschied von Sender, Empfänger, Betreff und ASCII-Inhalt handelt. Sobald eine *.pdf-Datei daran hängt kannst Du den Inhalt vergessen. Sämtliche Bildchen werden nicht einfach so in die Datenbank übernommen. Und wie Du mehrere Mails auf einmal entsprechend aus den per Thunderbird empfangenen Mails extrahieren kannst - damit habe ich mich auch noch nicht beschäftigt.

Das Auseinanderziehen der Daten würde ich mit der Variante machen, mit der ich am vertrautesten bin. Wenn Du auf Shellebene daraus eine *.csv-Datei mit entsprechenden Feldern produzieren kannst, dann ist das Einlesen über Basic-Makros ein Klacks. Auch da habe ich noch nichts probiert.

Den zweiten Anhaltspunkt habe ich bei ODBC und Linux zusammen mit MySQL. Zumindest bei *.rpm-basierten Distributionen scheint es da zur Zeit empfindliche Probleme mit dem Kontakt über ODBC zu geben. Sobald ich auch eine MariaDB oder MySQL-Datenbank zugreifen möchte stürzt LO gnadenlos ab. Bis zur Anmeldung geht das noch gut ...

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

wodim
Beiträge: 18
Registriert: So 4. Aug 2013, 16:54

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von wodim » Mo 5. Aug 2013, 21:04

RobertG hat geschrieben:Hallo wodim,

ein neuer Thread wäre vermutlich besser,
Ok, da isser:

http://www.libreoffice-forum.de/viewtop ... 10&t=12300

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von Freischreiber » Di 12. Jul 2016, 19:56

Hallo,

da ich dieses Makro für Mailerstellung auch gerne hätte, kämpfe ich mit dem Code.
Da meine Mailadresse aus einem Tabellen-Steuerelement geholt werden muß, habe ich ihn angepaßt mit findcolumn.

Mein Makro sieht bisher so aus:

Code: Alles auswählen

Sub Mailerstellen
   Dim oDoc as Object
   DIM oForm as Object
   DIM oSubForm_Tel as Object
   DIM sEmpf as String
   DIM sBetreff as String
   'DIM sAnred as String
   DIM sMail_Adr as String
   DIM intKontakttyp as Integer
   'DIM attA as String
   'DIM OS   

' Betriebsystem feststellen
'   OS = GetGUIType()
'   if OS = 1 then MsgBox "Du arbeitest in Windows"
'   if OS = 2 then MsgBox "Du arbeitest mit' nem Mac"
'   if OS = 3 then MsgBox "Du arbeitest in Linux/Unix"
      
' auf Formulare zugreifen   
   oDoc = thisComponent
   'oForm = oDoc.drawpage.forms.getbyindex(0)
	oForm = oDoc.drawpage.forms.getbyName("MainForm")
   oSubForm_Tel = oForm.getByName("FormKontakt")

'auf Formularfeld in SubFormTel zugreifen   
   'sMail_Adr = oSubForm_Tel.getByName("EmailAdress").Text
   sMail_Adr = oSubForm_Tel.getString(oSubForm_Tel.findcolumn("TextField1"))
   intKontakttyp = oSubForm_Tel.getint(oSubForm_Tel.findcolumn("NumericField1"))
       
   If intKontakttyp <> 6  then
      msgbox "Keine Mailadresse." & CHR(13) & "Der Vorgang wird abgebrochen." , 48, "Mail senden"
      Exit Sub
   End If
       
   'attN = "C:\Ordner\" & "Test.pdf" 'Anhang beifügen
   'attA = ConvertToURL (attN)
   sEmpf = (sMail_Adr)
   sBetreff = "Testmail" 'Betreffzeile
   'sAnred = "Sehr geehrte Damen und Herren"
   
   'If OS = 4 then
   ' für openSUSE, (Linux = 4, Unix = 3)
   '   shell("thunderbird",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff  + ",body=" + sAnred)
   'else
   ' für Windows 7 (normalerweise OS = 1)
   ' für alle Betriebssysteme und Mailprogramme:
     ' shell("C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe",1,"-compose to=" + sEmpf +",attachment=" + attA + ",subject=" + sBetreff  + ",body=" + sAnred)
	 oShell.execute("mailto: + sMail_Adr +?subject= + sBetreff  +" )
   'End If
End Sub
Wenn ich den bisherigen Dialog richtig verstanden habe, muß ich nicht zwischen den Betriebssystemen unterscheiden, wenn ich oShell.execute verwende. Attachment und Anrede brauche ich nicht, daher auch auskommentiert.

Mein akutes Problem ist: Ich bekomme die Fehlermeldung
Type: com.sun.star.sdbc.SQLException
Message: Der Spaltenname 'TextField1' ist ungültig..
obwohl die Spalte im Formular wirklich so heißt. Was mache ich falsch?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » Di 12. Jul 2016, 21:22

Hallo Freischreiber,

mit

Code: Alles auswählen

oSubForm_Tel.findcolumn("TextField1")
ist die Bezeichnung für die Tabellenspalte der dem Formular zugrundeliegenden Datenquelle gemeint. Du scheinst hingegen davon auszugehen, dass die Bezeichnung eines Formularfeldes gemeint ist.

Aus dem Handbuch:
Möchte man anstelle der Spaltennummern mit den Spaltennamen der zugrundeliegenden Datenmenge (Tabelle, Abfrage, View) arbeiten, kann man die Spaltennummer über die Methode findColumn ermitteln – hier ein Beispiel zum Auffinden der Spalte "Name":
DIM sName AS STRING
nName = oForm.findColumn("Name")
sName = oForm.getString(nName)
Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von Freischreiber » Mi 13. Jul 2016, 08:55

Hallo Robert,

das funktioniert hier so, wie du schreibst, danke!

Was mich nur irritiert, ist ein anderes Makro, in dem ich die Zeile

Code: Alles auswählen

stAuftragID = oformAuftraege.getString(oformAuftraege.findcolumn("AuftragID"))
zum Laufen gebracht habe, indem ich den Namen der Spalte im Formular umgetauft habe zu "AuftragID".
(In der zugrundeliegenden Auftragstabelle heißt die Spalte nur "ID").

Wie kann das dann sein?

Gruß
Freischreiber

:!: Weil das Unterformular nicht direkt auf der Tabelle, sondern auf einer Abfrage beruht, wo die Spalte AuftragID heißt! Sorry. (Woher soll ich das noch wissen, nach zwei Jahren :mrgreen: )
Aber wieso das Umtaufen der Formularspalte dort geholfen hat, ist mir immer noch ein Rätsel. Egal.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von Freischreiber » Mi 13. Jul 2016, 10:00

Jetzt habe ich noch eine Luxusfrage:

Mein Betreff soll mit der Auftragsnummer anfangen, das klappt auch.

Aber: ich hätte gerne ein Leerzeichen hinter der Auftragsnummer im Betreff der Mail. Dazu habe ich versucht, dem String ein Leerzeichen anzuhängen. Das klappt aber nicht. Mit Buchstaben geht es...

Code: Alles auswählen

sBetreff = sBetreff+(" ")
Ich habe es auch mit CHR(13) probiert, scheint aber auch falsch zu sein bzw. unterdrückt zu werden. Gibt es da was Passendes?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von RobertG » Mi 13. Jul 2016, 17:29

Hallo Freischreiber,

auch der Betreff muss URL-kodiert sein. Versuche einmal %20 als Leerzeichen.

In Deinem Makro fehlt die Konvertierung in eine URL für Texte insgesamt. Du müsstest vor der Weitergabe des Betreffs und es Inhaltes einer Mail das ganze über ConvertToUrl laufen lassen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: [gelöst] Email mit Datenübergabe aus einem Base-Formular

Beitrag von Freischreiber » Mi 13. Jul 2016, 17:52

Hallo Robert,

so ist alles gut:

Code: Alles auswählen

sBetreff = (sBetreff+ "%20")
Wenn ich converttourl dazu nähme, hätte ich im Betreff stehen "file:///Auftragsnr "

Danke!
Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten