Listenfeld im Formular aktualisieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

Listenfeld im Formular aktualisieren

Beitrag von hinki »

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
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
hr.hartwig
***
Beiträge: 52
Registriert: Mi, 09.05.2007 23:25

Re: Listenfeld im Formular aktualisieren

Beitrag von hr.hartwig »

Hallo

Probier mal

Code: Alles auswählen

	oForm.unload()
	oForm.load()
Hab festgestellt, das oForm.reload bei Listboxen nicht funktioniert (OO-Bug?)
Gruß,
Hotti
Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

Re: Listenfeld im Formular aktualisieren

Beitrag von hinki »

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
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
hr.hartwig
***
Beiträge: 52
Registriert: Mi, 09.05.2007 23:25

Re: Listenfeld im Formular aktualisieren

Beitrag von hr.hartwig »

Ö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
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Listenfeld im Formular aktualisieren

Beitrag von DPunch »

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?
Benutzeravatar
hinki
**
Beiträge: 27
Registriert: So, 31.10.2010 06:45

gelöst: Listenfeld im Formular aktualisieren

Beitrag von hinki »

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)
NeoOffice 3.1.2 Patch 2 auf MacBookPro (OS 10.6.6)

If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.
Harold Kroto
Antworten