[GELÖST] findfirst() abfangen

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

Moderator: Moderatoren

rbernhardt
Beiträge: 2
Registriert: Do, 28.03.2013 12:43
Wohnort: Bremen

[GELÖST] findfirst() abfangen

Beitrag von rbernhardt »

Hallo,

ich beschäftige mich erst seit kurzem mit Basic-Programmierung in OOo. Mir ist bisher noch nichts eingefallen wie ich ein Findfirst programmtechnisch abfangen kann, oder anders gesagt, wenn ein Findfirst zu keinem Ergebnis kommt bekomme ich, völlig richtig, eine Fehlermeldung.

Die Meldung, die ich bei der Ausführung erhalte ist: BASIC-Laufzeitfehler. Objektvariable nicht belegt.
Markiert ist die Zeile "If not oCell2 = null then"

Mein bisheriger Code sieht so aus:

Code: Alles auswählen

Sub Test
	Dim oDoc as Object
	Dim oSheet as Object
	Dim oCell as Object
	Dim oSheet2 as Object
	Dim oCell2 as Object
	Dim oCell3 as Object
	Dim oSearchDescriptor as Object
	Dim iAnzahl as Integer
	Dim i as Integer
	
	oDoc = ThisComponent
	If oDoc.supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) then
		oSheet = oDoc.Sheets.getByName("Sendungssummen")
		oSheet2 = oDoc.Sheets.getByName("Daten")
		for i=1 to 20000
			oCell = oSheet.getCellByPosition(3,i)
			oSearchDescriptor = oSheet2.createSearchDescriptor
			oSearchDescriptor.SearchString = ocell.string
			oCell2 = oSheet2.FindFirst(oSearchDescriptor)
			If not oCell2 = null then
				oCell3 = oSheet2.getCellByPosition(oCell2.row,oCell2.Column + 11)
				msgbox oCell3.string
			EndIf 
		next i 
		
	End If

end Sub
Der Teil innerhalb der zweiten if-Abfrage ist erstmal nicht so wichtig. Ist nur ein Test

Wenn es Verbesserungsvorschläge gibt bitte immer her damit.

Gruß
René
Zuletzt geändert von rbernhardt am Do, 28.03.2013 14:07, insgesamt 1-mal geändert.
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: findfirst() abfangen

Beitrag von juetho »

rbernhardt hat geschrieben:Mein bisheriger Code sieht so aus:

Code: Alles auswählen

			oCell2 = oSheet2.FindFirst(oSearchDescriptor)
			If not oCell2 = null then
				oCell3 = oSheet2.getCellByPosition(oCell2.row,oCell2.Column + 11)
				msgbox oCell3.string
			EndIf 
Du musst einfach die Art der Abfrage benutzen, die OO-Basic dafür vorgesehen hat:

Code: Alles auswählen

			If not isNull(oCell2) then
			EndIf 
Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: findfirst() abfangen

Beitrag von Karolus »

Hallo

Ich bezweifele ob in dem Kontext ein ..SearchDescriptor die sinnvollste Methode ist? -Vor allem solltest du die einmalige Initialisierung von dem Ding vor der Schleife tätigen und nicht 20000 mal in der Schleife.

Kannst du erstmal detailliert erläutern was am Ende rauskommen soll ?

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
rbernhardt
Beiträge: 2
Registriert: Do, 28.03.2013 12:43
Wohnort: Bremen

Re: findfirst() abfangen

Beitrag von rbernhardt »

Das isNull kannte ich nicht, wird eingesetzt, und die Zuweisung verschiebe ich auch.

Sinn und Zweck des Makros ist es, in einer bestehenden Calc-Datei ein paar Daten aus einer SQL-Datenbank einzufügen und dann zwei Tabellen in der Calc-Datei zusammenzuführen. Dann muss noch eine bedingte Formatierung rein und ich bin fertig.

Diejenige, die damit arbeiten muss, hat nicht wirklich Ahnung wie man mit dem Programm umgeht und da wurde mir gesagt, bau mal was :?
Antworten