protool string archivieren?

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Pascal,
wenn ich das richtig verstanden habe, dann suchst du einen Eintrag (einer Zeile). Die nächste Zeile stimmt doch dann wieder nicht mehr überein ...
Bau doch mal die Anweisung Exit Loop ein, wenn du die gewünschte Zeile gefunden hast ...
 
Ja richtig, jede Zeile wird (sollte) eingelesen werden, dann hol ich mir die position an der, in diesem Fall die 10stellige Materialnummer anfängt, wander 11 Stellen nach vorne (Materialnummer + Semikolon) und lass mir die darauf folgende Rezeptnummer wiedergeben.

Verstehe jetzt aber nicht ganz was du genau meinst..
Ich habe mich schon gefragt wo diese Rückgabe des Strings aufhört, aber da es ohne murren funktioniert hat habe ich mich nicht weiter damit beschäftigt.. Vielleicht kannst du nochmal kurz anschneiden wie du das meinst

edit:
ich beziehe mich doch immer nur auf eine Zeile, eben die Zeile die ich gerade eingelesen hab, also sollte es doch eigentlich laufen, in dem Fall würde ich von Anfang de Rezeptnummer lesen bis zum Ende des Strings

edit edit:
ich guck mir derweil mal die Geschichte mit der ExitLoop funktion an!

edit edit edit:
Bist nen Schatz ;)
Ein exit unter die "normale" Rückgabe und die Kiste läuft!
Kann aber trotzdem nicht nachvollziehen warum, vielleicht könnteste noch ein zwei Worte darüber verlieren!

Gruß

Pascal
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
"Exit Loop" solltest du in dem IF .. THEN -Abschnitt mit einbauen ...

Das heißt :
Wenn gefunden was gesucht wurde, dann Abbruch ... sonst weitersuchen und wenn am Ende nicht gefunden dann "999" ausgeben ...
 
habs jetzt so:

If .... then
position = instr(1,Stringzeile,Mat_nr)
position = position+11

Auftragsnr_verarbeiten = Mid(Stringzeile, position)
Exit Do

Else
Auftragsnr_verarbeiten = 999

End If

Optimal ist das natürlich auch nicht (wenn auch ohne Folgen), jetzt würde ja bei jedem mal wo es nicht gefunden würde ne 999 in die Variable geschrieben und beim letzten Durchgang dann die Tatsächliche Rezeptnummer bzw. die 999 bleibt stehen wenn nichts gefunden wird
 
soll denn nicht 999 drin stehen wenn nix gefunden wird?

aber wie LF schon schreibt muss da natürlich der exit rein (da hatte ich gar nicht drauf geachtet :???:), denn die else anweisung wird ja immer ausgeführt wenn die mat_nr nicht gefunden wurde.
also klappt das ohne das exit nur, wenn die richtige mat_nr in der letzten zeile steht.

edit:
jetzt würde ja bei jedem mal wo es nicht gefunden würde ne 999 in die Variable geschrieben
lass den else-teil weg und weise der var vor der loop-schleife 999 zu
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oh man ich hatte die ganze Zeit nen Brett vorm Kopf, wollte gerade eigentlich meine Frage zum Abbruch schreiben, da ist mir klar geworden wieso es nur in der letzten Zeile funktionieren konnte... ;)

edit:

halbe stunde zu spät, danke Volker ;)
 
Zuletzt bearbeitet:
Eine Frage hätte ich aber noch:

Mal angenommen die Übereinstimmung wird in Zeile 5 gefunden, das würde doch dann heissen das 4mal die 999 zurückgegeben wird und am Schluss erst die richtige Rezeptnummer oder?

Das Script ist jetzt so gekoppelt das wenn eine 999 in die Rezeptvariable geschrieben wird, eine Fehlermeldung generiert wird.
Folgerichtig müssten ja dann eigentlich 4 Fehlermeldungen auftauchen, tun sie aber nicht..

Ist zwar schön das es Funktioniert, aber könnte es da nicht eventuell zu unvorhergesehenen Fehlern kommen?
 
... wenn du gemäß Volker's Beispiel weitergemacht hast, dann wird zwar deine Variable zunächst mit 999 initialisiert, dein Script ist aber erst abgearbeitet, wenn die Schleife zu Ende ist (entweder wirklich Ende oder über Exit). Hast du im Script keine Übereinstimmung gefunden, dann bleibt der Init-Wert erhalten, ansonsten der gefundene Eintrag.
Du must dir da also m.E. keine Sorgen machen ...:-D

Gruß
LL
 
Zurück
Oben