BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Fehler beim Übertragen von Textfeldinhalten in Tabellen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

(gelöst) Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Mi 15. Aug 2018, 10:40

Hallo Leute,
schön das diesen Platz im Internet gibt, das eine recht große Kommune bezüglich Open Source Software existiert.

Nun zu meinem Fall:
Ich gestalte und programmiere gerade eine POS ähnliche Lösung, um meiner Pizzeria, bei der ich als Fahrer aushelfe, unter die Arme zu greifen.
So existieren schon mal 2 Tabellen ("PLZ_alle", "Kunden"), weitere zur Auftragsaufnahme und Rechnungslegung werden noch folgen.
Hierbei werden aus der Adresstabelle (PLZ_alle) durch SQL-Abfragen in einem Formular 4 Adressfelder ("PLZ", "ORT", "STRASSE", "GEMEINDE") vorbereitet, die als Kombifelder definiert werden.
Die 4 Felder sind so miteinander verknüpft, dass wenn man z.Bsp. eine einzigartige Straße wie 'Feldbergweg' im Feld "STRASSE" auswählt, zwangsläufig nur einen DS im ResultSet erzeugt, da in unserem Liefergebiet die Straße nur einmal existiert.
Soweit funktioniert dies prächtig.
Um dem User anzuzeigen, dass er genau diesen Fall hat (nur noch einen DS im ResultSet), wird dieser DS in die Felder ("PLZ", "ORT", "STRASSE", "GEMEINDE") zurückgeschrieben, die Felder werden inaktiv geschalten und ausgegraut. Es gibt nichts mehr auszuwählen. Das Formular ist ausgefüllt.
Auch das funktioniert. Der nächste Schritt wäre das Übertragen des Formularinhaltes in die Tabelle "Kunden" mit 'oForm.insertRow()' und hier beginnen meine Schwierigkeiten:
Es werden nur die Inhalte jener Felder in die Tabelle "Kunden" übertragen, aus dessen Listeninhalten ich per Mausklick ausgewählt hatte.
Die Felder, deren Inhalt ich berechnen ließ (z.Bsp.: oForm.getByName("txtPLZ").Text = oErgSet.getString(2) für das Kombifeld mit der PLZ) werden zwar im Formular ausgefüllt, aber nicht in die "Kunden"-Tabelle übertragen.
Mein Workaround ist Copy und Paste ins gleiche Feld. Funktioniert - macht aber die Programmierung zunichte.

Ich bin für jeden Hinweis dankbar.
Mein System:
Kubuntu 18.04
LibreOffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1
Microsoft Surface Pro 2017

Ein herzlichen Gruß aus Sachsen
Zuletzt geändert von PeterF am Sa 1. Sep 2018, 17:07, insgesamt 1-mal geändert.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von RobertG » Mi 15. Aug 2018, 12:50

Hallo Peter,

Code: Alles auswählen

oForm.getByName("txtPLZ").Text = oErgSet.getString(2)
Hier schreibst Du den Inhalt einer Abfrage auf den Bildschirm. Die Eigenschaft "Text" ist die, die Du siehst. Darunter ist erst einmal nichts. Wenn Du über das Formularfeld gehst, dann über

Code: Alles auswählen

oForm.getByName("txtPLZ").BoundField.UpdateString(oErgSet.getString(2))
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

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Mi 15. Aug 2018, 15:15

Hallo Robert,
das ging ja schnell. Probiere es gleich mal aus - würde ein 2. Problem zugleich ausschalten.
Ein Textfeld bekommt die Geodaten der Adressen einspeist und wurde auch nicht weitergegeben, da ich die selbe Methode wie bei den Kombifeldern verwendet habe.

Vielen Dank

Peter

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Mi 15. Aug 2018, 17:10

Ja - funktioniert wie bestellt.
Auch meine Geodaten sind jetzt in der Tabelle.
Hab mich nochmal mit den BoundField-Methoden beschäftigt...

Danke Robert

You saved my day 8-)

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von RobertG » Mi 15. Aug 2018, 19:58

Hallo Peter,

Geodaten? Longitude und Latitude? Speicherst Du die Werte nur ab oder nutzt Du die auch mit der Datenbank?

Ich habe so etwas bisher für Base noch nie gemacht, wüsste auch nicht den Zugriff auf eine Karte damit. Mit Openlayers im Netz und Javascript/PHP/MySQL habe ich das schon hin bekommen.

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

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Mi 15. Aug 2018, 23:42

Hallo Robert,
ich stehe da noch am Anfang. Doch Bit um Bit werde ich die Lösung finden.
Also, die Geodaten nutze ich, um die Adresse für den jeweiligen Pizzafahrer wenigstens am Computer abrufbar zu machen.
Begonnen hat die Idee, als ich so nach und nach in OsmAnd meine angepeilten Fahrten auch als Favoriten abgespeichert habe. Mit der eingefügten Telefonnummer besaß ich dann alles, was ich beim Liefern brauche. So suche ich in OsmAnd einfach einen Namen, der mich direkt zur Adresse führt.
Eines Tages habe ich die Datei der Favoriten unter die Lupe genommen und wollte sehen, ob man mit ihr etwas anfangen könnte. Und siehe da - Struktur.
Im Internet konnte ich ein englisches Makro finden, wie man durch eine Calc-Zelle, die eine Adresse beinhaltet in einer andere Zelle die Geodaten dazu (Latitude und Longitude) generieren kann. Es werden dabei Google-Maps oder OsmAnd Dienste genutzt.
Hier ist der Link: http://www.digital-geography.com/geocod ... fice-calc/.
(Google-Maps war hierbei recht unpräzise - vielleicht weil die dabei kein Geld verdienen). Nun mußte ich den Code nur noch auf meine Base-Tabelle anpassen.
Mein Ziel für diesen Schritt ist, dass ich in dem Formular zur Kundenauswahl ein Link einbette, der mir Osm mit dem Pin des Ortes öffnet.
Ich glaub, dass es nicht zu kompliziert sein wird:
Mit dieser URL bekommt man schon ein gutes Ergebnis für einen Bäcker in Rabenau:
https://nominatim.openstreetmap.org/sea ... 2C50.96527
Da kann man schon in der Adreßleiste die Geokoordinaten erkennen.

Okay, nochmals Vielen Dank für Deine Hilfe

Peter

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von RobertG » Do 16. Aug 2018, 07:39

Hallo Peter,

das mit dem Auslesen der Adresse muss ich mir auch einmal anschauen. Ich hatte das bisher so gelöst, dass ich eine Karte eingeblendet und da auf den Ort geklickt hatte. Damit habe ich Longitude und Latitude in Formularfelder übertragen - aber wie gesagt nicht in Base.

Ich habe das jetzt einmal ausprobiert. Wozu den Umweg über die Geodaten?

Code: Alles auswählen

SUB MapPosition(oEvent AS OBJECT)
	DIM stLink AS STRING
	stTag = oEvent.Source.Model.Tag
	oForm = oEvent.Source.Model.Parent
	arFields() = Split(stTag,",")
	stLink = ""
	FOR i = LBound(arFields) TO UBound(arFields)
		IF stLink = "" THEN
			stLink = oForm.getByName(arFields(i)).CurrentValue
		ELSE
		stLink = stLink & "+" & oForm.getByName(arFields(i)).CurrentValue
		END IF
	NEXT i
	IF stLink <> "" THEN
		stLink = "https://nominatim.openstreetmap.org/search.php?q=" & Join(Split(stLink),"+") & "&polygon_geojson=1&viewbox="
		REM Start des Files mit der entsprechenden URL-Verbindung
		oShell = createUnoService("com.sun.star.system.SystemShellExecute")
		oShell.execute(stLink,,0)
	END IF
END SUB
In einem Button des Base-Formulars habe ich in den Zusatzinformationen das Feld für PLZ und Ort sowie das Feld für Straße und Hausnummer, getrennt durch ein Komma, eingetragen. Diese Informationen bereite ich zu einem entsprechenden Link auf, indem ich die Leerstellen durch ein "+" ersetze (habe ich auf der Website nachgesehen) und dann rufe ich den Suchbefehl auf. Der Browser wird geöffnet und die Adresse wesentlich genauer lokalisiert als mit Google (bei mir: Kreis auf meinem Haus mit nominatim, gute 150m Entfernung mit den Google-Daten zu longitude und latitude).

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

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Do 16. Aug 2018, 13:08

Hallo Robert,
Das sieht äußerst elegant aus. Probiere ich heute mal, wenn ich Zeit finde.
Die Geodatensammlung ist ein Zwischenschritt. Auf OpenStreetMaps gibt es leere Stellen, gerade in ländlichen Gebieten, wo ich oft unterwegs bin. Doch dies könnte ich durch Ergänzungen auf OpenStreetMaps mit meinen Adressen vervollständigen.
Toll, wie sich das hier entwickelt. Doch bin ich hier auch, um meine geistigen Fähigkeiten zu verbessern.
Danke nochmals

Peter

P.S.: Deinen Vorschlag werde ich aber direkt auf die Adressfelder anpassen, da ich noch wesentlich mehr Informationen (Felder) in der Kundentabelle abgespeichert habe. Sonst würde die i-Schleife noch Name und Telefonnummern einfügen. Da wäre Osm bestimmt überfordert. :lol:

PeterF
Beiträge: 28
Registriert: Mi 15. Aug 2018, 09:30

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von PeterF » Fr 17. Aug 2018, 00:16

So, hier ist Dein von mir angepasster Code:

Code: Alles auswählen

SUB MapPosition(oEvent AS OBJECT)
	DIM stLink AS STRING
	stTag = oEvent.Source.Model.Tag
	oForm = oEvent.Source.Model.Parent
	arFields() = Split(stTag,",")
	stLink = ""
	stLink = oForm.getByName("txtSTRASSE").CurrentValue & "+" & oForm.getByName("txtHAUS-NR").CurrentValue & "+" & oForm.getByName("txtPLZ").CurrentValue & "+" & oForm.getByName("txtORT").CurrentValue
	IF stLink <> "" THEN
		stLink = "https://nominatim.openstreetmap.org/search.php?q=" & Join(Split(stLink),"+") & "&polygon_geojson=1&viewbox="
		REM Start des Files mit der entsprechenden URL-Verbindung
		oShell = createUnoService("com.sun.star.system.SystemShellExecute")
		oShell.execute(stLink,,0)
	END IF
END SUB
Funktioniert wiedermal super.

Vielen Dank

Peter

P.S.: Habe das letzte von Dir mitverfasste/übersetzte Base-Handbuch vor Kurzem bei LULU gekauft - wenn Du tatsächlich Robert Großkopf bist.
Sehr informativ und auf dem neuesten Stand, soweit ich das beurteilen kann. Leider etwas unübersichtlich und zu wenig Stichworte im Anhang.
Hatte mich in die Base-Thematik wochenlang durch Thomas Krumbeins "Datenbanken mit OpenOffice.org 3" sowie "Makros ..." durchgekämmt. Deshalb mein Fehler der diesen Thread erzeugt hat. Thomas hat sehr viele Beispiele, die eben halt in der MessageBox enden. Aber ein Vorbild an Strukturiertheit. Alle Achtung!

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehler beim Übertragen von Textfeldinhalten in Tabellen

Beitrag von RobertG » Fr 17. Aug 2018, 07:45

Hallo Peter,

das Handbuch, das zum Druck angeboten wird, ist die Version, die ich für LO 5.0 herausgegeben habe. Die aktuellsten Inhalte findest Du immer auf meiner Homepage: http://robert.familiegrosskopf.de/index.php In der rechten Spalte stehen die Bearbeitungsversionen. Die letzte Korrektur erfolgte am 8.8.18. Ich warte jetzt noch etwas, bis sich bei der 6.1 geklärt hat, wie das mit Firebird weiter geht und dann kommt die Version 6.1 raus.

Der Inhalt zum Handbuch stammt, bis auf die Einführung zu den Makros, von mir. Andere haben ein Stichwortverzeichnis dazu gemacht, Korrektur gelesen usw.

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

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten