{"id":1154,"date":"2017-12-01T19:20:05","date_gmt":"2017-12-01T18:20:05","guid":{"rendered":"http:\/\/blog.systemconnect.dk\/?p=1154"},"modified":"2017-10-18T10:51:02","modified_gmt":"2017-10-18T08:51:02","slug":"ingen-primo-og-ultimodatoer-i-klassisk-dynamics-c5","status":"publish","type":"post","link":"https:\/\/scblog.lynge.org\/?p=1154","title":{"rendered":"Manglende primo- og ultimodatoer i Klassisk Dynamics C5?"},"content":{"rendered":"<p>Vi har lige haft en &#8220;spooky&#8221; sag hvor der ikke fandtes &#8211; og det heller ikke var muligt at lave primo- og ultimo-datoer i en Klassisk Dynamics C5. Det var godt nok p\u00e5 en C5 2010 p\u00e5 SQL, men efter at have fundet fejlen vil jeg tro det umiddelbart vil kunne ske p\u00e5 alle C5-versioner til og med 2012 p\u00e5 SQL.<\/p>\n<p>I C5 s\u00e5 finansperioderne s\u00e5dan her ud:<\/p>\n<div id=\"attachment_1155\" style=\"width: 337px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/Finansperioder.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1155\" class=\"size-full wp-image-1155\" src=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/Finansperioder.png\" alt=\"Finansperioder\" width=\"327\" height=\"281\" srcset=\"https:\/\/scblog.lynge.org\/wp-content\/uploads\/2017\/10\/Finansperioder.png 327w, https:\/\/scblog.lynge.org\/wp-content\/uploads\/2017\/10\/Finansperioder-300x258.png 300w\" sizes=\"auto, (max-width: 327px) 100vw, 327px\" \/><\/a><p id=\"caption-attachment-1155\" class=\"wp-caption-text\">Finansperioder unde PR- og UL-datoer<\/p><\/div>\n<p>Som det fremg\u00e5r er der ingen PR.- og UL.-datoer og hver gang man lukkede billedet, fik man m\u00e6rkelige fejl fra C5.<\/p>\n<p>Efter at have pr\u00f8vet det oplagte med at genovers\u00e6tte alt og s\u00e5dan noget, fik jeg sagen omtalt og mit umiddelbare g\u00e6t var at datatypen for datofelterne var forkerte p\u00e5 SQL-serveren (DATE fremfor DATETIME) &#8211; hvis du undrer dig over den konklusion, s\u00e5 handler det om hvordan Klassisk Dynamics C5 gemmer primo- og ultimodatoer &#8211; se evt. <a href=\"http:\/\/blog.systemconnect.dk\/?p=219\">dette blogindl\u00e6g<\/a>, der kort beskriver det.<\/p>\n<p>Det viste sig at det ikke n\u00f8jagtigt var det der var galt, men noget i den stil. Kan du spotte den\u00a0<strong>LILLE<\/strong> (hint, hint) fejl \ud83d\ude42<\/p>\n<div id=\"attachment_1158\" style=\"width: 315px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-wrong.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1158\" class=\"size-full wp-image-1158\" src=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-wrong.png\" alt=\"Forkert LEDPERIOD hos kunden\" width=\"305\" height=\"219\" srcset=\"https:\/\/scblog.lynge.org\/wp-content\/uploads\/2017\/10\/LEDPERIOD-wrong.png 305w, https:\/\/scblog.lynge.org\/wp-content\/uploads\/2017\/10\/LEDPERIOD-wrong-300x215.png 300w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><\/a><p id=\"caption-attachment-1158\" class=\"wp-caption-text\">Forkert SQL tabeldefinition for LEDEPERIOD p\u00e5 kundens installation (Klassisk Dynamics C5 version 2010)<\/p><\/div>\n<p>For en ordens skyld f\u00e5r du lige her screenshot af hvordan de korrekte tabeldefinitioner ser ud p\u00e5 SQL p\u00e5 hhv. Klassisk Dynamics C5 3.0 SP3 (som jo er p\u00e5 dansk)&#8230;:<\/p>\n<div id=\"attachment_1156\" style=\"width: 304px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-30sp3.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1156\" class=\"size-full wp-image-1156\" src=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-30sp3.png\" alt=\"FINPERIODE C5 3.0sp3\" width=\"294\" height=\"181\" \/><\/a><p id=\"caption-attachment-1156\" class=\"wp-caption-text\">SQL tabeldefinition for FINPERIODE p\u00e5 Klassisk Dynamics C5 version 3.0 SP3<\/p><\/div>\n<p>&#8230;og Klassisk Dynamics C5 2012:<\/p>\n<div id=\"attachment_1157\" style=\"width: 304px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-2012.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1157\" class=\"size-full wp-image-1157\" src=\"http:\/\/blog.systemconnect.dk\/wp-content\/uploads\/2017\/10\/LEDPERIOD-2012.png\" alt=\"LEDPERIOD C5 2012\" width=\"294\" height=\"190\" \/><\/a><p id=\"caption-attachment-1157\" class=\"wp-caption-text\">SQL tabeldefinition for LEDEPERIOD p\u00e5 Klassisk Dynamics C5 version 2012<\/p><\/div>\n<p>For dem der ikke kender den n\u00f8jagtige forskel p\u00e5 en smalldatetime og en datetime p\u00e5 SQL, kan jeg fort\u00e6lle at den vigtigste i denne forbindelse er at smalldatetime afrundes til hele minutter (se evt. andre forskelle her:\u00a0<a href=\"http:\/\/sqlhints.com\/tag\/datetime-vs-smalldatetime\/\" target=\"_blank\" rel=\"noopener\">http:\/\/sqlhints.com\/tag\/datetime-vs-smalldatetime\/<\/a>). Det g\u00f8r en k\u00e6mpe forskel p\u00e5 netop primo- og ultimodatoer da disse lagers som hhv. kl. 00:00:58 dagen f\u00f8r den p\u00e5g\u00e6ldende dato eller som 00:00:02 p\u00e5 den p\u00e5g\u00e6ldende dato &#8211; og dermed sorteres naturligt. Andre tidspunkter end 00:00:58 (primo) og 00:00:02 (ultimo) ignores mig bekendt helt af C5.<\/p>\n<p>Hvordan pokker og hvorn\u00e5r datetime er blevet til smalldatetime i kundens installation er uvist, men det er noget v\u00e6rre rod! Det kan v\u00e6re nogen har pillet med C5s interne mapning af datatyper da databasen i sin tid blev oprettet eller at nogen efterf\u00f8lgende har k\u00f8rt noget p\u00e5 SQL-serveren, der har rettet det. Kunden har jf. backup&#8217;erne k\u00f8rt med dette i \u00e5revis uden at have bem\u00e6rket problemer.<\/p>\n<p>Vores bedste bud p\u00e5 at komme videre var derfor multiexport af data, oprettelse af ny SQL database med check af at datoer bliver gemt som datetime og endelig multiimport af data. Og naturligvis derefter en grundig oprydning alle de steder hvor primo\/ultimo er blevet gemt som &#8220;rigtige&#8221; datoer.<\/p>\n<p>Det er f\u00f8rste gang jeg har set denne fejl &#8211; og jeg har arbejde med Klassisk Dynamics C5 i over 20 \u00e5r, men forh\u00e5bentligt ogs\u00e5 den sidste&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vi har lige haft en &#8220;spooky&#8221; sag hvor der ikke fandtes &#8211; og det heller ikke var muligt at lave primo- og ultimo-datoer i en Klassisk Dynamics C5. Det var godt nok p\u00e5 en C5 2010 p\u00e5 SQL, men efter &hellip; <a href=\"https:\/\/scblog.lynge.org\/?p=1154\">L\u00e6s resten <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37,6,4],"tags":[30,15,43,13,22,11,54,29,23,53,14,28,7],"class_list":["post-1154","post","type-post","status-publish","format-standard","hentry","category-klassisk-c5","category-klassisk-c5-support","category-klassisk-c5-teknik","tag-bug","tag-business-solutions","tag-c5","tag-damgaard-data","tag-database","tag-dynamics","tag-dynamics-c5","tag-fejl","tag-hint","tag-klassisk-c5","tag-microsoft","tag-sql","tag-versioner"],"_links":{"self":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1154"}],"version-history":[{"count":5,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1154\/revisions"}],"predecessor-version":[{"id":1163,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=\/wp\/v2\/posts\/1154\/revisions\/1163"}],"wp:attachment":[{"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scblog.lynge.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}