Textfelder in Base per Makro auslesen & manipulieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von F3K Total »

Hi, du hast auf dem Weg zur Textbox das Formular vergessen:

Code: Alles auswählen

versuche:
     obj_Einnahmen = obj_Drawpage.forms(0).getByName("txt_Einnahmen")
     obj_Ausgaben = obj_Drawpage.forms(0).getByName("txt_Ausgaben")
     obj_Ergebnis= obj_Drawpage.forms(0).getByName("txt_Ergebnis")
oder
     obj_Einnahmen = obj_Drawpage.forms.getByName(MainForm).getByName("txt_Einnahmen")
     obj_Ausgaben = obj_Drawpage.forms.getByName(MainForm).getByName("txt_Ausgaben")
     obj_Ergebnis= obj_Drawpage.forms.getByName(MainForm).getByName("txt_Ergebnis")
Auf jeden Fall liegen die Boxen auf einem Formular oder Subformular, den Namen (hier mal MainForm) kannst Du Dir im Entwurfsmodus des Formulares mit dem Formularnavigator heraussuchen.

Nacht
R

EDIT: Eigentlich läßt sich das besser ohne Makro, per Abfrage, siehe Beispiel, lösen.
Dateianhänge
Einnahmen-Ausgaben.odb
(21.89 KiB) 387-mal heruntergeladen
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von juetho »

Ergänzender Hinweis: F3K's Variante ist auch deshalb besser, weil sie um Längen einfacher ist. Die letzten Zeilen deines Codes führen ziemlich in die Irre:
  • Du definierst int_Einnahmen als Integer-Wert. (Allerdings müssten das üblicherweise DECIMAL-Werte sein.)
  • Durch die Zuweisung werden aber Texte übernommen, keine Zahlen.
  • Danach willst du zwei Zeichenketten voneinander subtrahieren; wie soll das gehen? (Nun ja, bei Basic könnte das klappen, aber sauber ist es nicht.)
Die korrekte Version müsste auf die Daten des Formulars zugreifen, beispielsweise so:

Code: Alles auswählen

int_Einnahmen = thisDocument.drawpage.forms(0).getInt(4)   ' Inhalt der 4. Spalte, noch richtiger: getDouble
int_Ausgaben = thisDocument.drawpage.forms(0).getInt(5)
obj_Ergebnis.Text = Str(int_Einnahmen - int_Ausgaben)  ' noch besser wäre FORMAT statt STR
Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von F3K Total »

Nö,
wenn Du das Makro nicht direkt aus dem Formular startest, sondern z.B. aus der Basic-IDE, dann ist ThisComponent eben nicht das Formular.
Und die IDE hat keine Drawpage, das ist schon richtig.
Wieso machst Du es nicht per Abfrage?
Noch ein Hinweis: BASE läuft nicht mit Java7, nur mit Java 6-32-Bit
Gruß R
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von F3K Total »

Richie hat geschrieben:Eine Abfrage kommt aufgrund der Tabellenstruktur nicht zum Einsatz.
Wenn Du nur gucken willst, geht eine Abfrage oder Ansicht immer!
Gruß R
Richie
Beiträge: 5
Registriert: Fr, 04.01.2013 14:35

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von Richie »

Habe mich jetzt mal registriert.

@F3K Total:
Du hast mich neugierig gemacht mit deinen Hinweisen zur Abfrage.
Ich werde die Struktur der Datenbank nachbilden und mit Daten aus einem Spiel füllen, anschließend werde ich die DB hier hochladen.

Das Dauert aber seine Zeit...

Update:
Datenbankstruktur nachbilden | Done
Datenbank mit Daten füllen | Done
Datenbank auf funktion prüfen | Done
Neuen Thread erstellen & Verlinken | Done


MfG
Richie
Zuletzt geändert von Richie am Sa, 05.01.2013 11:21, insgesamt 5-mal geändert.
Betriebssystem Arch Linux | Version 3.6.10-1 | 64 bit /|\ KDE | Version 4.9.4
OfficeSuite LibreOffice | Version 3.6.4.3 | Build ID: 3.6.4.3 Arch Linux build-3
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von juetho »

F3K Total hat geschrieben:Wenn Du nur gucken willst, geht eine Abfrage oder Ansicht immer!
So ist es. Auch wenn wir deine genaue Tabellenstruktur noch nicht kennen, scheint dafür ein SELF JOIN (unter "Weitere Situationen" das erste Beispiel) zu passen, nämlich die Verknüpfung der Tabelle mit sich selbst. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Richie
Beiträge: 5
Registriert: Fr, 04.01.2013 14:35

Re: Textfelder in Base per Makro auslesen & manipulieren

Beitrag von Richie »

Hier geht es Weiter: viewtopic.php?f=8&t=60840

@juetho: Danke für den Link. Ich werde mich bei gelegenheit durch die SQL-Anleitung durcharbeiten.
Betriebssystem Arch Linux | Version 3.6.10-1 | 64 bit /|\ KDE | Version 4.9.4
OfficeSuite LibreOffice | Version 3.6.4.3 | Build ID: 3.6.4.3 Arch Linux build-3
Antworten