suchfunktion selber bauen

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

Moderator: Moderatoren

inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

suchfunktion selber bauen

Beitrag von inqui »

hallo, ich bins schon wieder

nachdem ich ja eben schon gefragt habe, wie das mit der teilstring suche funktionierte, hänge ich nun an einer (meinung nach noch kniffligeren) anderen stelle.

ich möchte, wie ich schon beschrieben habe, in einer gui für eine kleine datenbank eine suchfunktion einbauen.
hierbei soll nun, wenn ein treffer häufiger auftaucht, nach dem ersten treffer abgebrochen werden und erst bei erneutem betätigen des buttons an dieser stelle weitergesucht werden.
weiss nicht ob da ein bischen viel will, aber ich habe folgenden code geschrieben und verstehe ehrlichegsagt nicht so recht warum der nicht funktioniert:

Code: Alles auswählen

start = 3
spalte = 0

if suchen.text = letztesuche then
	start = neuerstart
	spalte = neuespalte
end if

i = 3
do while mysheet.getcellbyposition(5,i).string <> ""
	i=i+1
loop

for s = spalte to 64
	for z = start to i
		if instr(mysheet.getcellbyposition(s,z).string , suchen.text) then
			counter.value = z - 2
			call aktualisieren
			neuerstart = z
			neuespalte = s
			letztesuche = suchen.text
			goto stoppen
		end if
		start = 3
	next
next

stoppen:

end sub
neuerstart, neuespalte und letztesuche sind dabei globel definiert und sollte doch deshalb auch beim nächsten start des subs noch vorhanden sein?

das makro funktioniert sauber, bis zum zweiten durchlauf.
der erste treffer wird einwandfrei gefunden, und die suche abgebrochen. aber bei erneutem auslösen des makros passiert nichts - wobei ich nicht sagen kann ob nichts passiert, oder einfach das gleiche nochmal.


ob von euch jemand so nett wäre da mal drüberzuschaun?


irgendwie seh ich nicht was da nicht hinhaut :O



danke schonmal

inqui
inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

Re: suchfunktion selber bauen

Beitrag von inqui »

es scheint darauf hinauszulaufen, dass der inhalt der 3 globalen variablen beim nächsten anstoßen des "subs" nicht mehr drin steht.


muss ich da auf irgendwas bestimtmes achtenß abgesehen davon, sie global zu definieren?
inqui
**
Beiträge: 26
Registriert: Di, 09.12.2008 08:16

Re: suchfunktion selber bauen

Beitrag von inqui »

ich habe das probblem nun gelöst, indem ich die werte der letzten suche statt in variablen in ein neues sheet schreibe. so sind sie beim nächsten aufruf des makros noch vorhanden.


mit der lösung wird in der spalte des lezten treffers weiter gesucht, ab der zeile+1 des letzten treffers.
ab der darauf folgenden spalte wird dann wieder ab der ersten zeile gesucht



damit der thread nen vernünftigen abschluss hat, hier mal der code des subs:

Code: Alles auswählen

sub subsuchen

dim i as integer
dim z as integer
dim s as integer
dim start as integer
dim spalte as integer

mydoc = thiscomponent
mysheet = mydoc.sheets(0)


start = 3
spalte = 0


i = 3
do while mysheet.getcellbyposition(5,i).string <> ""
	i=i+1
loop


if suchen.text = mydoc.sheets(1).getcellbyposition(0,0).string then
	start = mydoc.sheets(1).getcellbyposition(0,1).value
	spalte = mydoc.sheets(1).getcellbyposition(0,2).value
	
	for z = start to i
		if instr(mysheet.getcellbyposition(spalte,z).string , suchen.text) then
			counter.value = z - 2
			call aktualisieren
			mydoc.sheets(1).getcellbyposition(0,1).value = z + 1
			mydoc.sheets(1).getcellbyposition(0,2).value = spalte
			mydoc.sheets(1).getcellbyposition(0,0).string = suchen.text
			goto stoppen
		end if
	next
	
	start = 3
	spalte = mydoc.sheets(1).getcellbyposition(0,2).value + 1
end if


for s = spalte to 64
	for z = start to i
		if instr(mysheet.getcellbyposition(s,z).string , suchen.text) then
			counter.value = z - 2
			call aktualisieren
			mydoc.sheets(1).getcellbyposition(0,1).value = z + 1
			mydoc.sheets(1).getcellbyposition(0,2).value = s
			mydoc.sheets(1).getcellbyposition(0,0).string = suchen.text
			goto stoppen
		end if
	next
next

stoppen:

end sub

grüße

inqui
Antworten