Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

Re: Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

von komma4 » Di, 11.09.2007 22:01

Deine "simple" Lösung ist doch OK. Hier könntest Du etwas Tipparbeit sparen, indem Du die verkürtze Schreibweise nutzt

Code: Alles auswählen

With oForm
 oControl = .getByName( "ComboBox" )
 oControl1 = .getByName( "ComboBox1" )
' u.s.w.
End With
Damit hast Du aber nur die Objekte, noch nicht die markierten Einträge, oder?

Teil2:
Ich weiss von keinem Weg eine Abfrage mit Variablen in BASE zu formulieren, die während der Ausführung von einem Makro besetzt werden (anders, als eine Parameter-Abfrage interaktiv auszuführen).

Deshalb dieses Beispiel:
nach dem Holen der Werte aus Deinen Komboboxen erstellst Du mit Basic die SQL-Abfrage und lässt sie gegen die DB laufen.

Werde Licht?

Re: Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

von smguenther » Di, 11.09.2007 21:37

Hi,
komma4 hat geschrieben:hole Dir die gewählten Werte der 8 controls, baue eine Abfrage zusammen und starte sie.

den gewählten Wert einer Listbox holen:

Code: Alles auswählen

oListe = oDialog.getControl("ListBox1")
' wenn ein Eintrag in der Liste gewählt wurde
if oListe.SelectedItemPos > -1 then
	' gewählten Text holen
	tempSel = oListe.SelectedItem
Da ich erst seit ein paar Tagen mit den Macros spiele, ist meine Lösung is dahin etwas simpler gestrickt;

Code: Alles auswählen

	oForm = ThisComponent.drawpage.forms.getByName("Standard") 
	oControl = oForm.getByName("ComboBox")
	oControl1 = oForm.getByName("ComboBox1")
        oControl2 = oForm.getByName("ComboBox2")	
        oControl3 = oForm.getByName("ComboBox3")	
        oControl4 = oForm.getByName("ComboBox4")	
        oControl5 = oForm.getByName("ComboBox5")	
        oControl6 = oForm.getByName("ComboBox6")	
        oControl7 = oForm.getByName("ComboBox7")
komma4 hat geschrieben: Abfrage gegen eine registrierte Datenquelle

Code: Alles auswählen

' Datenbankverbindung
sSQL = "SELECT " & _
		" r.nummer , " & _
		" k.name " & _
	" FROM " & _
		" t091_rechnung as r, " & _
		" t090_kunde as k " & _
	" WHERE " & _
		" r.t090_id = k.id "& _
	" ORDER BY "& _
		" r.nummer ASC ;"
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )

While oResultSet.Next()
....
Hilft das weiter?
Hm, ich sehe da nicht den Zusammenhang zwischen dem ersten und dem zweiten Teil. Meine Hoffnung/Idee war es, daß ich die Werte der ComboBoxen in Form eines Arrays an eine bereits bestehende Abfrage übergeben könnte. So a la loadComponentFromURL.
Oder wäre es möglich, mit loadComponentfromURL erst die Abfrage zu starten und ihr dann zu sagen, daß sie sich als Kriterien die Werte aus den Komboboxen holen soll?

Gruß,

Stefan

Re: Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

von komma4 » Di, 11.09.2007 16:44

hole Dir die gewählten Werte der 8 controls, baue eine Abfrage zusammen und starte sie.

den gewählten Wert einer Listbox holen:

Code: Alles auswählen

oListe = oDialog.getControl("ListBox1")
' wenn ein Eintrag in der Liste gewählt wurde
if oListe.SelectedItemPos > -1 then
	' gewählten Text holen
	tempSel = oListe.SelectedItem
Abfrage gegen eine registrierte Datenquelle

Code: Alles auswählen

' Datenbankverbindung
' Kontext holen
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = oDatenbankKontext.getByName( "DBName" )  ' Name der Datenquelle

' Verbindung herstellen: benutzer und passwort übergeben !!!
oDatenquelle.setLoginTimeout( 10 ) 

oVerbindung = oDatenquelle.getConnection( "", "" )

sSQL = "SELECT " & _
		" r.nummer , " & _
		" k.name " & _
	" FROM " & _
		" t091_rechnung as r, " & _
		" t090_kunde as k " & _
	" WHERE " & _
		" r.t090_id = k.id "& _
	" ORDER BY "& _
		" r.nummer ASC ;"
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( sSQL )

While oResultSet.Next()
....
Mehr zum Behandeln von Dialogen in meinem Beispiel ATL2 - AutoTextListe2

Hilft das weiter?

Öffnen einer Base-Abfrage über ein Macro & Werteübergabe

von smguenther » Di, 11.09.2007 16:07

Hi,

ich habe trotz eifriger Suche im Forum keinen Hinweis auf eine Lösung für mein folgendes Problem gefunden:

In Base habe ich ein Formular mit 8 Kombo-Boxen, die Werte dieser Boxen sollen als Kriterium für eine Abfrage dienen.
Wie bringe ich es mit einem Makro fertig, diese Abfrage zu öffnen und gleichzeitig die 8 Werte als Kriterium zu übergeben?
Hat eine(r) von Euch so etwas schon einmal realisiert?

Danke für jeden Tipp / Hinweis,

Stefan

Nach oben