BASE: programmieren von Feldern

Guten Tag,

ich möchte ein Feld mit dem teilweisen Inhalt eines oder mehrerer Feldes(r) füllen.

In der Programmierung, z.B. F&A, kenne ich, bei Zutritt eines Feldes, einen Transfer von “Anzahl_Zeichen, ab Zeichen(z.B. #1) & Wiederholung des Befehls” vom Feld XY aus DATEI oder hier aus Tabelle sowieso.

Gibt es sowas auch in BASE? Versteht BASE auch sowas und Ähnliches?

Wie geht das und wo?

Ich habe, in den Handbüchern, keine Möglichkeit gefunden oder ich bin blind oder es hat einen anderen Titel.

Vielen Dank für die Hilfe.

MfG

Für so etwas musst Du bei den Makros nachsehen. Das geht nicht über die grafische Benutzeroberfläche. Schau Dir einmal “Makros > Bedienbarkeit verbessern > Werte in einem Formular vorausberechnen” an. Da habe ich für 2 Felder innerhalb eines Formulars beschrieben, wie anhand des Eintrags in das erste Feld im zweiten Feld automatisch die Mehrwertsteuer berechnet und eingetragen wird.

Wenn Du das jetzt auf bestimmte Zeichen begrenzen willst, dann müsstest Du über die Hilfe von LibreOffice, hier dann Basic, suchen, wie die entsprechenden Befehle lauten. Mid(), Right(), Left() könnten da weiter helfen. Eine gute Onlinequelle ist auch Starbasicfaq. Das ist letztlich kein Thema für Datenbanken sondern für die Stringbehandlung allgemein.

… und nun noch der Hinweis für Datenbanken: Verdoppelungen von Inhalten, auch nur teilweise Verdoppelungen, sollten nicht abgespeichert werden. So etwas wird später mit Abfragen ausgelesen. Für mich riecht das Anliegen nach einem Ansatz, mit dem Du mit der Datenintegrität Probleme bekommen kannst. Ändere den Inhalt des Ursprungsfeld ohne Änderung des abhängigen Feldes und die vorherige teilweise Übereinstimmung ist verschwunden.

Hallo Robert,

Danke für den Hinweis.
Sie sind ja ein richtiger Experte in Sachen BASE!
Ich werde mir die Sache mit den MAKROS noch anschauen.
Eins hab ich bereits gefunden, den Befehl “left(str,i) (Gibt die Anzahl Zeichen von links des Strings zurück)”.
Ich hoffe das ist es (die Befehls-art) was Sie meinten.
Am besten ich sende Ihnen das Ergebnis, wenn es als Makro klappt.

Jedenfalls nochmal Danke, ich komme ggf. bzgl.einer Frage zu Makros zurück.
Wenn es mit dem Makro nicht klappt, wissen Sie eine Alternative, auch ein anderes Datenbank-Programm?

MfG

Hallo rw1,

brauchst mich nicht zu Siezen, in Foren, Mailinglisten usw. sind wir alle in der Regel beim Du.

Ein alternatives Datenbank-Programm kenne ich nicht. Ich nutze für einige Aufgaben Base. Für Mehrbenutzerentwicklungen dann aber PHP mit Apache und MySQL/MariaDB.

… und noch einmal: Kopien von einem Feld ins andere riecht mir nach einem Designfehler. Ich würde das grundsätzlich nicht machen.

Hallo Robert,

Danke für den Hinweis.
Ein Designfehler liegt nach meiner Meinung nicht vor. Es geht eben nur um die leichtere Bedienbarkeit.
Ich möchte mir nur eine doppelte Eingabe bei, z.B. sowas wie Initialen sparen.
Beispiel:
Feld1 = Vorname
Feld2 = Name
Feld3 = VoNam (automatisch), wenn das mit dem Makro geht.

Eine Abhängigkeit und Gleichheit der Felder, wie von Dir vermutet, ist mir egal, ja sogar gewollt. Denn gleiche Initialen soll es ja nicht geben.

MfG

Hallo Robert,

ich heiße übrigens Richard.
Fragen:

  • Ist StarBasic in LO BASE integriert und steht voll zur Verfügung? Oder wie verhält sich das?
  • Warum werden Makros abgewiesen wenn sie (z.B. in einem Formular) vorkommen? Kann ich das ändern?

MfG

Kannst Du das Problem mit den Makros genauer Beschreiben. Vermutlich hast Du nur eine Fehlermeldung, weil auf unbekannte Objekte zugegriffen werden soll.

Die Geschichte mit den Nachnamen und Vornamen würde ich in einer Abfrage regeln. Die kann schließlich auch als Datenbasis für ein Formular herhalten. Du siehst nur nicht den Inhalt direkt während der Eingabe. Sofern Du in Tabellenkontrollfeldern arbeitest macht das aber nichts schließlich ist der gerade eingegebene Datensatz dann weiter sichtbar.

Hallo Robert,

die Beschreibung des (künftigen) Makros:
Wenn die bestimmten Felder Inhalt haben, soll ein Feld, von den bestimmten Feldern mit 2-3 Zeichen, z.B. von links gesehen. zusammen geführt werden. Es entsteht so ein Kürzel oder eine sprechend Kundennummer, so zu sagen. Man könnte dieses Feld integer machen und als Index/Satzschlüssel hernehmen. So hätte man 2 Anliegen mit einmal erledigt.
Das mit einer Abfrage regeln, hab ich mir auch überlegt, kann man machen, muss aber nicht sein, wenn das Makro funktioniert.

MfG

Grundsätzlich ist StarBasic in allen Elementen von LibreOffice voll verfügbar. Wenn Du aber z.B. etwas für die Benutzeroberfläche eine Formulars programmierst, dann kannst Du das Makro natürlich nicht direkt im Editor aufrufen, weil der Bezug fehlt.

Um Makros nutzen zu können musst Du die Sicherheitsstufe von LO herunter setzen: Optionen > LibreOffice > Sicherheit > Makrosicherheit. Das steht bei mir auf “Mittel” und ein bestimmtes Verzeichnis innerhalb meines Homeverzeichnisses habe ich als vertrauenswürdige Quelle angegeben (natürlich nicht das Downloadverzeichnis). Dann kommt beim Downloadverzeichnis eine Nachfrage, ob Makros ausgeführt werden sollen.

Du brauchst ein Makro, das reagiert, wenn in einem Feld etwas geändert wird. Dann gehst Du von dem auslösenden Event aus, greifst darüber auf das Feld und den Inhalt zu, auch auf das Formular und die anderen Felder im Formular und schreibst den berechneten Wert in das andere Feld.

Hallo Robert,

Danke für die Info.

MfG