[GELĂ–ST] SETRANGE nach einem FINDFIRST

Bild Microsoft Dynamics NAV 4.xx
(ehem. Microsoft Business Solutions-Navision)

[GELĂ–ST] SETRANGE nach einem FINDFIRST

Beitragvon MSNAVLerner » 28. Juli 2016 16:15

Hallo Zusammen,

angenommen folgender Code ...

Code: Alles auswählen
Inventory.RESET;
Inventory.SETRANGE("Item No.","Item No.");
Inventory.SETRANGE("Location Code","Location Code");
IF codreserviertfuerAuftrag <> ' ' then begin
  Inventory.SETRANGE("res. Auftragsnr.", "codreserviertfuerAuftrag"); 
  IF Inventory.FINDFIRST THEN BEGIN
    Inventory.SETRANGE("res. Auftragsnr.", "codreserviertfuerAuftrag");
  END ELSE BEGIN
    Inventory.SETRANGE("res. Auftragsnr.", ' ');
  END;
end else begin
  Inventory.SETRANGE("res. Auftragsnr.", '');
end;
Inventory.SETRANGE("Source No.",'');
Inventory.SETRANGE(blabla, blablabla);
...


Zur Erläuterung:
Ich möchte eine Zwischenprüfung machen, ob es denn einen Inventory-Eintrag mit der reservierten Auftragsnummer gibt und falls ja, dann sollen weitere Filterkriterien kommen.
Ich möchte verhindern, dass codreserviertfuerAuftrag befüllt, aber dann später in der Inventory-Tabelle gar nicht ein Eintrag vorhanden ist, deswegen diese kurze Zwischenprüfung.

Geht es denn, dass ich - obwohl ein FINDFIRST durchgefĂĽhrt wurde - ich einfach weiter durch Filterkriterien eingrenze?
Zuletzt geändert von MSNAVLerner am 1. August 2016 11:19, insgesamt 1-mal geändert.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: SETRANGE nach einem FINDFIRST

Beitragvon Kowa » 28. Juli 2016 16:40

Bei Filterung von mehreren Datensätzen immer FINDSET statt FINDFIRST verwenden. Ansonsten kann man nach Bedarf immer weiter eingrenzen.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: SETRANGE nach einem FINDFIRST

Beitragvon Anxt » 28. Juli 2016 16:52

Hallo,

wie wäre es mit IF NOT Inventory.ISEMPTY THEN BEGIN?

Das sollte eigentlich funktionieren.


Viele GrĂĽĂźe
Jan
Anxt
 
Beiträge: 2
Registriert: 23. Dezember 2015 10:41
Realer Name: Jan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009 R2, 2013 R2

Re: SETRANGE nach einem FINDFIRST

Beitragvon Kowa » 28. Juli 2016 17:26

Wenn man die Datensätze weiterverarbeiten möchte, ist NOT ISEMPTY genau das falsche :!: . Mit ISEMPTY hat man nämlich nie einen mit einen Werten gegriffen und dem Record zugewiesen. Das ist nur zum performanten Sondieren, ob etwas vorhanden ist, die Felder des Datensatzes werden aber nicht ausgewertet.
http://www.navision-blog.de/blog/2007/06/03/navision-performance-optimierung-auf-dem-sql-server/
Danach muss also dann immer noch FINDSET/FINDFIRST/FINDLAST kommen.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: SETRANGE nach einem FINDFIRST

Beitragvon Anxt » 28. Juli 2016 17:32

Ich habe wohl die "kurze ZwischenprĂĽfung" falsch verstanden.

Meine Idee war, perfomant abzuklappern, ob ĂĽberhaupt weitergemacht wird :-)
Anxt
 
Beiträge: 2
Registriert: 23. Dezember 2015 10:41
Realer Name: Jan
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009 R2, 2013 R2

Re: SETRANGE nach einem FINDFIRST

Beitragvon MSNAVLerner » 29. Juli 2016 12:23

@Kowa: Mir geht es nur darum, ob überhaupt ein einziger vorhanden ist, deswegen FINDSET ... können natürlich ruhig mehrere sein, deswegen kommt an späterer Stelle auch ein FINDSET ...

Ich denke in meinem Fall wäre NOT ISEMPTY nicht falsch ... er soll nämlich in jedem Fall weiter filtern ... er wird auch was finden, die Frage ist nur ob er einen reservierten Eintrag findet oder einen frei verfügbaren ...

Das Problem ist, wenn ich hier keine Prüfung einbaue, wird er - da übergangsmäßig bei bestimmten Einträgen IMMER codreserviertfuerAuftrag befüllt sein wird, obwohl es keinen Inventory-Eintrag hierzu gibt - keinen finden ... in diesem Fall soll er frei verfügbare Einträge ziehen, denn sonst zieht er keinen aus dem Lager.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 4.xx

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Bot und 1 Gast

cron