{"id":97,"date":"2006-09-23T10:40:10","date_gmt":"2006-09-23T08:40:10","guid":{"rendered":"http:\/\/www.forksoft.de\/blog\/2006\/09\/23\/navision-unntiges-count-vermeiden\/"},"modified":"2006-10-05T15:20:42","modified_gmt":"2006-10-05T13:20:42","slug":"navision-unntiges-count-vermeiden","status":"publish","type":"post","link":"http:\/\/www.navision-blog.de\/blog\/2006\/09\/23\/navision-unntiges-count-vermeiden\/","title":{"rendered":"Navision: Unn&ouml;tiges Count vermeiden"},"content":{"rendered":"<p>Wenn man im Navision pr&#252;fen will ob beispielsweise nur genau ein Datensatz auf den Filterausdruck passt. Schreibt man das oft so:<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:f921082c-d86e-431d-9a9e-8a1ceae7e64b\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px\">\n<pre style=\"background-color:White;\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #000000; \">SETCURRENTKEY(Field);\nSETFILTER(Field,Filter);\n\n<\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF00FF; \">COUNT<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #808080; \">\/\/<\/span><span style=\"color: #000000; \"> Do something\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">ELSE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #808080; \">\/\/<\/span><span style=\"color: #000000; \"> Do something <\/span><span style=\"color: #0000FF; \">else<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n<\/span><\/div><\/pre>\n<\/div>\n<p>Wenn tats&#228;chlich nur ein Datensatz in der Menge liegt ist dieser Ausdruck auch schon optimal und gut lesbar. Wenn jedoch viele Datens&#228;tze in der Menge liegen bekommt man schnell ein Performance-Problem. Mit dem folgenden Trick kann man das relativ einfach umgehen: <\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:f16e196b-8335-448a-9929-d6c7efc1c272\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px\">\n<pre style=\"background-color:White;\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #000000; \">SETCURRENTKEY(Field);\nSETFILTER(Field,Filter);\n\n<\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \"> FIND(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">-<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">) <\/span><span style=\"color: #808080; \">AND<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">NEXT<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800000; font-weight: bold; \">0<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n   FIND(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">-<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">);\n  <\/span><span style=\"color: #808080; \">\/\/<\/span><span style=\"color: #000000; \"> Do something\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">ELSE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #808080; \">\/\/<\/span><span style=\"color: #000000; \"> Do something <\/span><span style=\"color: #0000FF; \">else<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n<\/span><\/div><\/pre>\n<\/div>\n<p>Man macht zwar an der Stelle 2 Find&#8217;s und 1 Next, aber wenn die Datenmenge gro&#223; ist, dann macht das einen enormen Unterschied.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn man im Navision pr&#252;fen will ob beispielsweise nur genau ein Datensatz auf den Filterausdruck passt. Schreibt man das oft so: SETCURRENTKEY(Field); SETFILTER(Field,Filter); IF COUNT = 1 THEN BEGIN \/\/ Do something END ELSE BEGIN \/\/ Do something else END; Wenn tats&#228;chlich nur ein Datensatz in der Menge liegt ist dieser Ausdruck auch schon optimal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/97"}],"collection":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/comments?post=97"}],"version-history":[{"count":0,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/97\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/categories?post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/tags?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}