Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Moderator: Moderatoren
Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Hallo,
ich habe gefunden, wie man aus einem Formular per Knopfdruck eine Abfrage ausführt. Kann ich denn aus dieser Abfrage keine Werte auslesen wie aus einer Calc-Tabelle mit getCellByPosition?
Oder muss ich aus der Abfrage erst einen Bericht in Tabellenform erstellen und dort dann die Daten auslesen? Das dauert bei großen Tabellen ewig.
Besten Dank
ich habe gefunden, wie man aus einem Formular per Knopfdruck eine Abfrage ausführt. Kann ich denn aus dieser Abfrage keine Werte auslesen wie aus einer Calc-Tabelle mit getCellByPosition?
Oder muss ich aus der Abfrage erst einen Bericht in Tabellenform erstellen und dort dann die Daten auslesen? Das dauert bei großen Tabellen ewig.
Besten Dank
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Wenn Du das Resultset(-Objekt) hast kannst Du dort zugreifen per z:b.:ich habe gefunden, wie man aus einem Formular per Knopfdruck eine Abfrage ausführt. Kann ich denn aus dieser Abfrage keine Werte auslesen wie aus einer Calc-Tabelle mit getCellByPosition?
Code: Alles auswählen
Resultset.first
Msgbox Resultset.getString(1)
mit z.B.:
Code: Alles auswählen
Resultset.absolute(5)
Msgbox Resultset.getString(8)
Gruß
Stephan
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Mehrere Methoden probiert, die ich so im Netz gefunden habe. Will noch nichts funktionieren. Die Abfrage öffnet sich aber es fehlt die entscheidende Eingebung zur Adressierung des Abfrageobjekts.
SUB Query
Dim sObjType As String, sObjName As String
Dim ResultSet As Object
sObjName = "Abfrage"
sObjType = com.sun.star.sdb.application.DatabaseObject.QUERY
ThisDataBaseDocument.CurrentController.Connect() 'connect to the database'
ResultSet = ThisDatabaseDocument.CurrentController.loadComponent(sObjType, sObjName, FALSE) 'Open the query'
ResultSet.absolute(1)
MsgBox ResultSet.getString(1)
End Sub
SUB Query
Dim sObjType As String, sObjName As String
Dim ResultSet As Object
sObjName = "Abfrage"
sObjType = com.sun.star.sdb.application.DatabaseObject.QUERY
ThisDataBaseDocument.CurrentController.Connect() 'connect to the database'
ResultSet = ThisDatabaseDocument.CurrentController.loadComponent(sObjType, sObjName, FALSE) 'Open the query'
ResultSet.absolute(1)
MsgBox ResultSet.getString(1)
End Sub
- Dateianhänge
-
- Query.odb
- (14.69 KiB) 166-mal heruntergeladen
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Moin,
deine Frage verstehe ich nicht richtig, in einer Datenbank filtert man die gewünschten Daten, dazu benötigt man kein Makro.
Anbei ein einfaches Beispiel. Im Formular Customer wird per formatiertem Feld der Suchwert F_CUSTOMERNUMBER in die einzeile Tabelle Filter geschrieben.
In der Abfrage qCustomer_gefiltert wird per Unterabfrage das Filterkriterium gesetzt:
Durch das werden alle Datensätze angezeigt, wenn kein Filterwert existiert, Ansonsten wird die Zeile mit der gesuchten CustomerNumber angezeigt.
Gruß R
deine Frage verstehe ich nicht richtig, in einer Datenbank filtert man die gewünschten Daten, dazu benötigt man kein Makro.
Anbei ein einfaches Beispiel. Im Formular Customer wird per formatiertem Feld der Suchwert F_CUSTOMERNUMBER in die einzeile Tabelle Filter geschrieben.
In der Abfrage qCustomer_gefiltert wird per Unterabfrage das Filterkriterium gesetzt:
Code: Alles auswählen
SELECT "CustomerNumber", "Nachname", "Vorname", "Strasse", "PLZ", "Ort" FROM "Customer" WHERE "CustomerNumber" = ( SELECT "F_CUSTOMNUMBER" FROM "Filter" ) OR ( SELECT "F_CUSTOMNUMBER" FROM "Filter" ) IS NULL
Code: Alles auswählen
... OR ... IS NULL
Gruß R
- Dateianhänge
-
- Query.odb
- (71.65 KiB) 198-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
und wenn es Dir hilft die Ergebnisse in Calc zu haben, kannst Du die Datenquellen-Ansicht im Menü öffnen und die Abfrage aus der Datenbank einfach in die Tabelle ziehen.
Dieser Beteich lässt sich dan via Menü Daten->Bereich aktualisieren jederzeit mit aktuellen Daten aktualisieren...
Mfg, Jörn
Dieser Beteich lässt sich dan via Menü Daten->Bereich aktualisieren jederzeit mit aktuellen Daten aktualisieren...
Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Danke F3K. Ich möchte einzelne Zellen aus der Abfrage auslesen. Um deren Inhalt weiter zu verarbeiten reicht filtern leider nicht. Im Base Handbuch S.459 wird beschrieben wie man das macht https://wiki.documentfoundation.org/ima ... ig_V72.pdf.
Ich bekomme das aber nicht hin, da ein Abfrage-Objekt anders adressiert wird wie eine Tabelle.
Ich kenne die Methode, die Abfrage in eine Calc-Tabelle zu kopieren. Habe aber nie verstanden, warum man das machen muss, da die Abfrage selbst ja schon in Tabellenform vorliegt. Auch einfach Abspeichern einer Abfrage geht nicht. Die Abfrage wird mit SQL Befehlen gemacht und das Ergebnis scheint nicht kompatibel mit LO Tabellen zu sein.
Ich bekomme das aber nicht hin, da ein Abfrage-Objekt anders adressiert wird wie eine Tabelle.
Ich kenne die Methode, die Abfrage in eine Calc-Tabelle zu kopieren. Habe aber nie verstanden, warum man das machen muss, da die Abfrage selbst ja schon in Tabellenform vorliegt. Auch einfach Abspeichern einer Abfrage geht nicht. Die Abfrage wird mit SQL Befehlen gemacht und das Ergebnis scheint nicht kompatibel mit LO Tabellen zu sein.
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
ich meine ein 'richtiges' mit Starbasic erzzeugtes Resultset und kein Öffnen einer Abfrage.
Gruß
Stephan
Code: Alles auswählen
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oBaseContext.getByName(DB_name) 'DB_Name = der Name unter dem die DB in OO angemeldet ist (Extras-Einstellungen)
oCon_all = oDataSource.getConnection(sUser, sPassword)
sql_string = "Select * FROM ""Firma"" ORDER BY ""Firmenname"" ASC, ""Abteilung"" ASC"
oStatement = oCon_all.createStatement()
oStatement.ResultSetType = 1005
Resultset = oStatement.executeQuery(sql_string)
Resultset.absolute(5)
Msgbox Resultset.getString(8)
Gruß
Stephan
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
In dem Dokument selbst geht z.b. (schnell zusammenkopiert):
In der anbgehängten DAtei ist das Makro über den Menüeintrag "ZUgriff per StarBasic-Main" startbar.
Gruß
Stephan
Code: Alles auswählen
Sub Main
oDatenquelle = ThisComponent.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oCon_all = ThisDataBaseDocument.CurrentController.ActiveConnection
sql_string = "Select * FROM ""qCustomer_gefiltert"""
oStatement = oCon_all.createStatement()
oStatement.ResultSetType = 1005
Resultset = oStatement.executeQuery(sql_string)
Resultset.absolute(11)
Msgbox "Vorname, Name aus 11. Datensatz:" & CHR(13) & CHR(13) & Resultset.getString(2) & ", " & Resultset.getString(3) ,,""
End Sub
Gruß
Stephan
- Dateianhänge
-
- Query.odb
- (73.8 KiB) 221-mal heruntergeladen
Re: Daten aus einer Base Abfrage auslesen wie aus einer Calc-Tabelle
Es gibt wohl doch noch einen Unterschied zwischen Profis und Wochenendhackern. Es funktioniert - werde noch lernen wie er es gemacht hat.
Danke Stephan und ein schönes Restwochenende
Danke Stephan und ein schönes Restwochenende