Dialog-Filter ohne Ergebnis

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: Dialog-Filter ohne Ergebnis

Re: Dialog-Filter ohne Ergebnis

von DPunch » Mi, 06.07.2011 20:17

Aloha

Den Fehler kann ich reproduzieren und er war mir bislang auch gar nicht bekannt.
Warum dem so ist - keine Ahnung.

Wenn Dir die Sache am Herzen liegt, kannst Du das im Issue Tracker hinterlegen, bzw. möglicherweise ist der Fehler dort schon gemeldet, ebenfalls keine Ahnung.

Davon abgesehen hier mal ein angepasster, rudimentärer Beispielcode, wie Du den Filter nachstellen kannst, kommt ursprünglich aus einer Extension für Base-Tabellen, die ich mal geschrieben hatte, weil die integrierte GUI-Suche so elendig langsam ist.
(Im geöffneten TableDataView unter Extras->Anpassen zum Beispiel an ein Tastaturkürzel hängen)

Code: Alles auswählen

	If NOT thisComponent.supportsService("com.sun.star.sdb.DataSourceBrowser") Then Exit Sub
	oRowSet = thisComponent.SlaveDispatchProvider.RowSet
	aCols = oRowSet.Columns.ElementNames
	
	oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel") 
	oDlgModel.PositionX = 300
	oDlgModel.PositionY = 300
	oDlgModel.Width = 120
	oDlgModel.Height = 100
	oDlgModel.Title = "Filter"
		
	oListbox = oDlgModel.createInstance("com.sun.star.awt.UnoControlListBoxModel")
	oListbox.Width = 100
	oListbox.Height = 20
	oListbox.PositionX = 10
	oListbox.PositionY = 10
	oListbox.StringItemList = aCols
	oListbox.Dropdown = True
	oListbox.SelectedItems = Array(0)
	oDlgModel.insertByName("lboSelection",oListbox)
	
	oNfValue = oDlgModel.createInstance("com.sun.star.awt.UnoControlNumericFieldModel")	
	oNfValue.Width = 60
	oNfValue.Height = 20
	oNfValue.PositionX = 30
	oNfValue.PositionY = 40
	oDlgModel.insertByName("nfValue",oNfValue)
		
	oButton = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
	oButton.Width = 50
	oButton.Height = 20
	oButton.Label = "OK"
	oButton.PositionX = 35
	oButton.PositionY = 70
	oButton.DefaultButton = True
	oButton.PushButtonType = com.sun.star.awt.PushButtonType.OK
	oDlgModel.insertByName("btnOK",oButton)	

	oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
	oWindow = CreateUnoService("com.sun.star.awt.Toolkit")	
	oDlg.setModel(oDlgModel)
	oDlg.createPeer(oWindow, Null)

	nResult = oDlg.execute
	If nResult <> 0 Then
		nValue = oNfValue.Value
		If NOT isEmpty(nvalue) Then
			sValue = Replace(nValue,",",".")
			nSel = oListbox.SelectedItems(0)
			sField = oListbox.StringItemList(nSel)
			oRowSet.Filter = """" & sField & """ = " & sValue
			oRowSet.ApplyFilter = True
			oRowSet.execute
		End If
	End If

Re: Dialog-Filter ohne Ergebnis

von MaddinR » Di, 05.07.2011 09:47

DPunch hat geschrieben:Ich kann das leider nicht reproduzieren (OOo 3.2.1), eventuell wäre eine kleine Beispieldatenbank mit diesem Verhalten aufschlussreicher.
Guten Morgen,

das ist aber merkwürdig. Ich habe gerade mal rumgespielt.... und es macht gar keinen Unterschied, ob ich eine SQLite-DB habe oder die interne DB verwende - bei beiden klappts gleichermaßen nicht. Bemerkenswert ist, dass der Filter bei "glatten" negativen Werten funktioniert, aber sobald der Filter-Wert mit Nachkommastellen eingegeben wird, eben nicht mehr. Und noch bemerkenswerter ist, dass er nicht nur nicht filtert, sondern den Dialog bei Enter (bzw. OK) sogar einfach abbricht, genau so, als ob ich ESC gedrückt hätte. Und danach sind auch die Dialogfelder des Filters leer. Habe ich jedoch einen positiven Wert eingegeben, bleiben sie gefüllt und der Filter arbeitet sauber.

vg, Maddin

ps
Anlage
Dateianhänge
Werte.odb
(9.37 KiB) 140-mal heruntergeladen

Re: Dialog-Filter ohne Ergebnis

von DPunch » Mo, 04.07.2011 22:39

Aloha

Ich kann das leider nicht reproduzieren (OOo 3.2.1), eventuell wäre eine kleine Beispieldatenbank mit diesem Verhalten aufschlussreicher.

Dialog-Filter ohne Ergebnis

von MaddinR » Mo, 04.07.2011 09:54

Hallo Leute

Jetzt ist mir schon mehrfach aufgefallen, dass ich irgendwie beim Filtern einer angezeigten Tabelle manchmal kein Ergebnis hinkriege. Und zwar immer dann, wenn es es sich um negative Filter-Beträge handelt. Also, ich öffne normal die Tabelle (enthält ein paar Tausend Sätze), um dann einen oder mehrere bestimmte fehlerhafte Sätze zu suchen. Sobald ich aber unter Standardfilter ein Feld auswähle, einen negativen Betrag eingebe, findet das Programm keinen Satz... eigentlich macht es gar nix. Die Reatkion ist die gleiche, als hätte ich statt Enter die Esc-Taste gedrückt.

Wenn ich jedoch beispielsweise das negative Feld mit der Maus auswähle und Autofilter wähle, klappt es fehlerfrei. Er zeigt mir alle Sätze mit gleichem negativen Wert an. Ich habe mal aus Spass den "Standardfilter" geöffnet, den Filterwert kopiert, Dialog geschlossen, Filter gelöscht und dann den zuvor kopierten Wert wieder in Standardfilter eingefügt... nix.... keine Reaktion. Positive Werte werden problemlos gesucht und gefunden, negative nicht.... Ist das ein bekanntes Problem?

vg, Maddin

Nach oben