BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice 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 OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Base: ResultSet oder Tabelle modifizieren

Alles zur Programmierung im OpenOffice.org
Antworten
StayCool
Beiträge: 2
Registriert: Mi 19. Sep 2018, 07:29

[Gelöst] Base: ResultSet oder Tabelle modifizieren

Beitrag von StayCool » Mi 19. Sep 2018, 08:07

Hallo,

und vielen Dank für die Aufnahme. Leider habe ich gleich eine Frage zur VBA Programmierung in Base. Da ich selbst nicht der Crack bin, verstehe ich vermutlich das zugrunde liegende Programmierparadigma nicht und bräuchte dazu einen Denkanstoß.

Geben ist eine SQL-DB (mySQL) mit einer 1:n Relation
Tabelle Kunde
Name varchar

Tabelle Auftrag
Baustelle varchar
Erledigungsdatum

Sprich ein Kunde kann mehrere Baustellen haben.

Im einem Formular in Base ist der Kunde in einem Tablecontrol editierbar und in einem SubForm, ebenfalls als Tablecontrol, jeder zugehörige Auftrag. Mittel Checkbox soll gefiltet werden, ob auch Erledigte Aufträge im Tablecontrol angezeigt werden sollen oder nicht.

Jetzt kommen die Fragen:
Frage 1: Wenn ich in der Sub Checkbox ein SQL-SELECT absetze erhalte ich ein ResultSet. Wie weise ich dieses ResultSet dem Tablecontrol zu? Muss ich dazu wirklich durch das ResultSet iterieren oder gibt es eine Art Kopier- oder Zuweisungskonstruktor wie oTable(oResult)?
Frage 2: Wenn ich Zeilen hinzufügen oder löschen möchte, sollte ich das im ResultSet oder in der Tablle tun? Hinweis dazu: Ich möchte die Änderung nicht in die Datenbank übertragen. Es soll also nur ein anderer View auf die Daten erzeugt werden?
Frage 2a: Falls die Antwort ResultSet wäre, wie modfiziere ich ein ResultSet? So?

Code: Alles auswählen

CloneRS = oForm.createResultSet() rem : CloneRS.Last()   
oRS=oTable.getRowSet()

while CloneRS.next
 s = CloneRS.Columns.getByName("Erledigungsdatum").getString()
 loRow = oForm.getRow()
 if (s = "") then
  rem Auftrag ist aktiv
 else
  oForm.deleteRow()
  rem Auftrag ist erledigt   
 end if
wend
rem -->> ResultSet in Tabelle übertragen
oForm.reload()
Frage 3: Wäre die Lösung besser wenn ich zwei verschiedene SELECTs verwende? Auch da wieder mein Problem, wie aktualisiere ich im SubForm das Tablecontrol mit zwei verschiedenen ResultSets?

Da ich noch Probleme habe, vielleicht kann mir das jemand erklären? Ein ResultSet ist das Ergebnis eines SELECT auf eine Datenmenge, somit ein View auf die DB und eine Tabelle ist ein View auf ein ResultSet? Oder sehe ich den Wald vor lauter Bäumen nicht? Ich habe versucht aus der Doku (Base_Gesamtband) schlau zu werden, aber irgendwie bin ich zu doof dafür.
Zuletzt geändert von StayCool am Di 25. Sep 2018, 17:15, insgesamt 1-mal geändert.

F3K Total
Beiträge: 1006
Registriert: Mo 1. Aug 2011, 00:03

Re: Base: ResultSet oder Tabelle modifizieren

Beitrag von F3K Total » Mo 24. Sep 2018, 18:18

Moin,
wenn die einzige Aufgabe darin besteht zu Filtern ob erledigte Aufträge im Subformular angezeigt werden oder nicht, kannst du das Ganze ohne jegliches Makro erledigen, mit Hilfe einer einzeiligen "FILTER" Tabelle, mit einem Boolean Feld "F_erledigt", an das du das Markierfeld (Checkbox) bindest.
Es gibt dann eine Abfrage der Art:

Code: Alles auswählen

Select * from "Auftraege" where "erledigt" = (select "F_erledigt" from FILTER)
Schau mal im BASE-Handbuch nach Filtertechniken.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

StayCool
Beiträge: 2
Registriert: Mi 19. Sep 2018, 07:29

Re: Base: ResultSet oder Tabelle modifizieren

Beitrag von StayCool » Di 25. Sep 2018, 15:18

Mensch!

Ich bin ja auch ein Trottel. Warum kompliziert, wenns auch einfach geht. Vielen Dank!

Antworten