Seite 1 von 1
Dialog-Filter ohne Ergebnis
Verfasst: Mo, 04.07.2011 09:54
von MaddinR
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
Re: Dialog-Filter ohne Ergebnis
Verfasst: Mo, 04.07.2011 22:39
von DPunch
Aloha
Ich kann das leider nicht reproduzieren (OOo 3.2.1), eventuell wäre eine kleine Beispieldatenbank mit diesem Verhalten aufschlussreicher.
Re: Dialog-Filter ohne Ergebnis
Verfasst: Di, 05.07.2011 09:47
von MaddinR
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
Re: Dialog-Filter ohne Ergebnis
Verfasst: Mi, 06.07.2011 20:17
von DPunch
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