Listenfeld im Formular aktualisieren

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: Listenfeld im Formular aktualisieren

gelöst: Listenfeld im Formular aktualisieren

von hinki » Mo, 01.11.2010 21:14

Hallo,

das ist ja super. Ich bin ja völlig hin und weg.... :D

Vielen Dank für diese tollen Tipps und Hilfestellungen.

Der Ansatz mit

oListboxModel.refresh()

funktioniert bei mir ganz wunderbar.

Danke schön und viele, liebe Grüße an

DPunch und hr.hartwig (Hotti)

Re: Listenfeld im Formular aktualisieren

von DPunch » Mo, 01.11.2010 19:24

Aloha

Bringt

Code: Alles auswählen

	oDoc = thisComponent
	oDrawpage = oDoc.Drawpage
	oForm = oDrawpage.Forms(0)
	oListboxModel = oForm.getByName("Listenfeld 1")
	oListboxModel.refresh()
nicht das gewünschte Ergebnis?

Re: Listenfeld im Formular aktualisieren

von hr.hartwig » Mo, 01.11.2010 19:03

Öffne den Formular-Navigator und erzeuge ein zweites Formular.
In dem Navigator ziehst Du die Listbox von einem Formular zum Anderen.
Das ist dann unabhängig von dem ersten Formular.
Hier ein kleiner Ausschnitt aus meinem Programm:

Code: Alles auswählen

Option Explicit

Dim oMainForm As Object
Dim oListForm As Object
Dim oListCtrl As Object

Sub Land_auswaehlen
	oMainForm = ThisComponent.DrawPage.Forms.getByName("MainForm")
	oListForm = ThisComponent.DrawPage.Forms.getByName("ListForm")	' Formular der Listbox
	oListCtrl = ThisComponent.CurrentController.GetControl(oListForm.getByName("lst_Land")	' Objekt der Listbox erstellen
	oMainForm.Filter = "( ""Land"" = '" + oListCtrl.SelectedItem + "' )"	' Filter mit dem Inhalt der Listbox setzen
	oMainForm.reload()	' Formular neu einlesen
	oListForm.reset()	' ListBox soll nach der Aktion nichts mehr anzeigen
End Sub

Sub Listbox_refresh	' Nach Datensatzaktionen 'Neu' bzw. 'Löschen' die Listbox wieder neu einlesen
	oListForm = ThisComponent.DrawPage.Forms.getByName("ListForm")
	oListForm.unload()	' ".reload()" funktioniert nicht bei der Listbox (OO-Bug?)
	oListForm.load()
End Sub
Vielleicht konnt ich Dir damit helfen.
Viele Grüße,
Hotti

Re: Listenfeld im Formular aktualisieren

von hinki » Mo, 01.11.2010 14:14

Hallo Hotti,

vielen Dank für diesen Hinweis. Es funktioniert.

Ich bin völlig begeistert. :D

Gibt es einen Weg nur das Listenfeld zu aktualisieren, ohne die ggf. bereits eingetragenen Werte der anderen Felder mit dem erneuten Laden des Formulars zu verlieren?

Kennst Du Dich da auch aus?

Danke sehr für die Mühe

Uli

Re: Listenfeld im Formular aktualisieren

von hr.hartwig » Mo, 01.11.2010 10:55

Hallo

Probier mal

Code: Alles auswählen

	oForm.unload()
	oForm.load()
Hab festgestellt, das oForm.reload bei Listboxen nicht funktioniert (OO-Bug?)
Gruß,
Hotti

Listenfeld im Formular aktualisieren

von hinki » Mo, 01.11.2010 08:44

Hallo,

mir wurde hier schon einmal super geholfen, was mich hoffnungsvoll eine weitere Frage stellen lässt. (Hoffentlich nerve ich niemanden :? )

Zur Situation:
Ich habe ein Formular zum Eintragen von Ereignissen (4_Ticket_Eingabe).
In diesem Formular gibt ein Listenfeld (Kundenauswahl), mit welchem ich Kunden auswählen kann, denen das zu erfassende Ereignis zugeordnet wird (Pflichtfeld). Diese Liste wird durch eine Abfrage gefüllt (Abfrage_1_Knd).
In diesem Formular (4_Ticket_Eingabe) habe ich, für den Fall das der Kunde noch nicht existiert, per Schaltfläche eine Möglichkeit geschaffen ein Kundenerfassungsformular aufzurufen. Hier können neue Kundendaten erfasst werden und man gelangt nach dem Schließen zurück in das Formular (4_Ticket_Eingabe).
So weit, so gut - funktioniert prächtig.

Problem:
Wenn ich aber, nachdem ein neuer Kunde erfasst wurde, mein Listenfeld (Kundenauswahl) anklicke, erscheint der gerade aufgenommene Kunde nicht in der Liste.

Lösungsversuch:
Ich habe eine weitere Schaltfläche eingesetzt, mit der ich versuche das Formular (4_Ticket_Eingabe) zu aktualisieren, um damit auch das Listenfeld zu aktualisieren.

Frage:
Wie aktualisiere ich nur das Listenfeld im aktuellen Formular? (Beim Aktualisieren des gesamten Formulars gehen alle bisherigen Eintragungen ja verloren)

Zur Zeit versuche ich es mit folgendem Code:

Code: Alles auswählen

Sub Ticket_aktualisieren

oDoc = ThisComponent
       oForm = oDoc.drawpage.forms(0)    
    oForm.updateRow()
    oForm.reload
    
End Sub
dann erhalte ich folgende Fehlermeldung (en):

Fehler beim Schreiben des aktuellen Datensatzes.Fehler in der Funktionsfolge

mit nachfolgendem

Basic-Laufzeitfehler. Es ist eine Exception aufgetreten. Type: com.sun.star.sdbc.SQLException Message:Fehler in der Funktionsfolge..

und das Makro steht in der Zeile ---> oForm.updateRow() <----

Ich bin ratlos und benötige bitte Hilfe.

Danke schön im Voraus

Nach oben