❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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] Skip while not EOF

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
MaddinR
Beiträge: 42
Registriert: Fr 17. Jun 2011, 12:19

[gelöst] Skip while not EOF

Beitrag von MaddinR » Mo 19. Feb 2018, 20:27

Hallo liebe Leute

Ich habe diesen CodeSchnippsel gefunden, der fast genau das macht, was ich brauche... leider nur fast. Ich habe ein Base-Formular erzeugt, und auf diesem Formular 2 DB-Objekte (beides sind Queries) geöffnet/verbunden, die über den Formular-Navigator auch "Formular" heissen... was leider ein wenig verwirrend ist. Das erste Datenbank-Objekt ist attached zu einem Grid-Grid-Control, was auch bestens funktioniert.

Mein Problem ist das zweite DB-Objekt, für das ich kein Control auf dem Bildschirm/Formular benötige, sondern welches ich nur einmal von Record 1 bis EOF/NewRec=True durchskippen möchte.

Die Frage ist: Wie verbinde ich ein RowSet direkt mit dem DB-Form ohne das unten stehende SubForm zu haben? Falls es auich ein direktes Recordset (mit Open Query/Close) gibt, ohne den Umweg über das Formular, das wäre auch eine gute Lösung... für die ich leider ebenfalls keine Beispiele finde. Ich hoffe auf ein bisschen Hilfe und bedanke mich im voraus.

mfg
Maddin

https://forum.openoffice.org/en/forum/v ... 30#p408944

Code: Alles auswählen

Sub iterate_through_all_rows
    oMainForm = ThisComponent.Drawpage.forms.getbyName("MainForm")
    oSubForm = oMainForm.getbyName("SubForm")
    oResult = oSubForm.createResultSet
    oResult.beforefirst
    count = 0
    while oResult.next
        count = count + 1
        sSN = oResult.Columns.getbyName("SN").getstring
        sFN = oResult.Columns.getbyName("FN").getstring
        print "No. " & count & ": " & sSN & ", "& sFN
    wend
End Sub
Zuletzt geändert von MaddinR am Mo 19. Feb 2018, 21:38, insgesamt 1-mal geändert.
Gruß, Maddin

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

Re: Skip while not EOF

Beitrag von RobertG » Mo 19. Feb 2018, 21:30

Hallo Maddin,

mir ist nicht klar, worauf Du hinaus willst, aber der Codeschnipsel, den Du da hast, greift direkt auf die Werte eines Formulars zu. Du kannst natürlich auch genauso eine Abfrage starten und dort dann eine entsprechende Ausgabe erzeugen:

Code: Alles auswählen

...
oDatenquelle = ThisComponent.Parent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "SELECT * FROM ""Tabelle"""
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql)
WHILE oAbfrageergebnis.next
string1 = oAbfrageergebnis.getString(1)
string2 = oAbfrageergebnis.getString(2)
WEND
...
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

MaddinR
Beiträge: 42
Registriert: Fr 17. Jun 2011, 12:19

Re: Skip while not EOF

Beitrag von MaddinR » Mo 19. Feb 2018, 21:36

Genau diese Lösung habe ich einige Minuten zuvor in Deinem Link zum Base-Handbuch in einem alten Posting gefunden.... ;) .. das war die Lösung. Danke
Gruß, Maddin


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