Search liefert nicht alle Ergebnisse

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Search liefert nicht alle Ergebnisse

Beitrag von serr03 »

benutze Apache OpenOffice 4.1.5

Hallo,
bei der Search Methode solle Ergebnisse kopiert werden.
dieses geht gut, solange der Begriff nicht direkt hintereinander in der nächsten Zeile steht.
Der Supportsservice("com.sun.star.table.Cell") ist dann scheinbar fehlerhaft???
Wird zwischen den beiden Zeilen eine Leerzeile eingefügt, werden diese wieder korrekt kopiert.

Code: Alles auswählen

sub Searchxx
sCol = 0
oSuche = "Begriff"
    sSpalte = oSheet.getColumns.getByIndex(sCol)
    oSearch = sSpalte.createSearchDescriptor       'Zeile die durchsucht werden soll
    oSearch.SearchString = oSuche                  'Begriff nach dem gesucht wird
    oSearch.SearchRegularExpression = False
    oResult = sSpalte.findAll(oSearch)  
                'nächsten Begriff suchen, falls öfters vorkommt. 
    For n = 0 To oResult.Count - 1   
           oFound = oResult(n)                                                                        <--- z.b. n=11  aber bei n=5 und 6 wird nicht kopiert aus obigen Grund
           If oFound.supportsservice("com.sun.star.table.Cell") Then
             frow =oFound.Celladdress.row
          'copy
        sRange = oSheet.getCellRangeByPosition(0,frow,9,frow).getRangeAddress()
        zRange = zSheet.getCellByPosition(Ca,Ra+n).getCellAddress
        zSheet.copyRange(zRange, sRange)
           End If 
       Next n 
 end sub
vielen Dank fall jemand einen Tip hat.

_________________
Moderationshinweis
Zur übersichtlichen Darstellung des Textes und vom Programmcode im Text [​​code][​/code] Tags gesetzt.
lorbass, Moderator
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Search liefert nicht alle Ergebnisse

Beitrag von Stephan »

Der Supportsservice("com.sun.star.table.Cell") ist dann scheinbar fehlerhaft???
nicht fehlerhaft sondern zwei Zellen sind ein Zellrange-Objekt (com.sun.star.sheet.SheetCellRange) und kein Zellobjekt (com.sun.star.table.Cell), weswegen folgende Abfrage FALSE liefert:

Code: Alles auswählen

If oFound.supportsservice("com.sun.star.table.Cell") Then
Du musst also sowohl auf Zell-Objekte als auch auf Zellrange-Objekte prüfen und beim Auftreten von ZellRange-Objekten entweder durch alle Zellen des Rangeobjekts interieren oder das Zellrange-Objekt als Solches behandeln (z.B. mit .getDataArray() und .setDataArray() arbeiten).

Für das Unterscheiden von Zellen und Zellbereichen kannst Du den Code aus:
http://www.calc-info.de/files/Calc_StarBasic.pdf

und dort "7.1 Selektionen behandeln" sinngemäß verwenden.


Gruß
Stephan
serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Re: Search liefert nicht alle Ergebnisse

Beitrag von serr03 »

Danke, habe leider keinen Zugriff auf das Kapitel
Fehlercode: INET_E_RESOURCE_NOT_FOUND
serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Re: Search liefert nicht alle Ergebnisse

Beitrag von serr03 »

Vielen Dank, mit prüfen auf Range klappt es jetzt. Super...
Antworten