{"id":12568,"date":"2023-08-31T16:15:27","date_gmt":"2023-08-31T14:15:27","guid":{"rendered":"https:\/\/www.q-software-solutions.de\/blog\/?p=12568"},"modified":"2023-08-31T16:15:29","modified_gmt":"2023-08-31T14:15:29","slug":"sieht-so-aus","status":"publish","type":"post","link":"https:\/\/www.q-software-solutions.de\/blog\/2023\/08\/sieht-so-aus\/","title":{"rendered":"Sieht so aus"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Als ob ich zum Ende meiner Refaktorierung komme. Es scheint, ich konnte 4 verschiedene Formulare mit 4 verschiedenen Abfragen auf 1 Form mit 1 Abfrage umprogrammieren.  Es ist IMHO hilfreich, das Wissen was man hat, in Objekten\/Strukturen unterzubringen. Der Code ist bislang nicht perfektioniert, aber immerhin statt 4 Formen mit Code von 120 Zeilen ist es nur noch eine Form mit rund 140 +\/- 20 Zeilen.<br><br>So sieht der ersetzte Code aus:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'Dim intAntwort As Integer\n'Dim strNeueZeile As String\n'strNeueZeile = Chr$(10) &amp; Chr$(13)\n'\n'Dim intSchleife As Integer\n'Dim lngNr As Long\n'Dim lngDrucker As Long, strBericht As String\n'\n'Dim WSP1 As Workspace, DB1 As Database, Tabelle1 As Recordset\n'Set WSP1 = DBEngine.Workspaces(0)\n'Set DB1 = WSP1.OpenDatabase(strDatenbankGlo)\n'\n'Set Tabelle1 = DB1.OpenRecordset(\"HT_Nummernkreise\", DB_OPEN_TABLE)     ' Tabelle \u00f6ffnen.\n'\n'If Forms!HF_AuftrAnkErz!AngebotKz = True Then\n'    ' R\u00fcckfrage mit Speicherung der Antwort\n'    intAntwort = MsgBox(\"F\u00fcr diesen Auftrag wurde bereits ein Angebot gedruckt!\" &amp; strNeueZeile &amp; \"Wollen Sie diesen Ausdruck wiederholen?\", 33, \"Angebot drucken?\")\n'    If intAntwort = 2 Then\n'        GoTo Exit_DruckAngebot_Click\n'    End If\n'End If\n'\n'' Firma Beller\n'If strKundeNr = \"143\" Then\n'    strBericht = \"BR_DruckAngebotAnkErz_Bel\"\n'Else\n'    strBericht = \"BR_DruckAngebotAnkErz\"\n'End If\n'\n'ordneDruckerZu \"Angebot\", strBericht, HAUPT_DRUCKER\n'\n'' Pr\u00fcfen ob Kontrollk\u00e4stchen f\u00fcr Seitenansicht aktiviert\n'' wenn aktiviert dann Seitenansicht, ansonsten Ausdruck auf Drucker\n'If Me!Seitenansicht = True Then\n'    DoCmd.OpenReport strBericht, acViewPreview\n'Else\n'    Tabelle1.MoveLast                     ' Letzten Datensatz suchen.\n'    setzeFelder Forms!HF_AuftrAnkErz, Tabelle1, DRUCK_BEREICH_ANGEBOT\n'    erhoeheNummer Tabelle1, \"AngebotNr\"\n'\n'    Forms!HF_AuftrAnkErz!AngebotKz = True   ' Setzen der Druckkennziffer\n'    Forms!HF_AuftrAnkErz.Refresh\n'\n'    ' Logbucheintrag\n'    If DLookup(\"&#91;Benutzerverwaltung]\", \"HT_SysParameter\") = True Then\n'        Call SetzeBenutzerLog(\"Drucke Angebot m. Summen Ankauf Erz.-Preis! Auftrag Nr: \" &amp; CStr(Forms!HF_AuftrAnkErz!AuftragNr) &amp; \", Angebot Nr: \" &amp; CStr(Forms!HF_AuftrAnkErz!AngebotNr))\n'    End If\n'End If<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Also grob 4 * 120 = 480 (es kommen wahrscheinlich noch ein paar Zeilen dazu, wegen eines Berichts, der genau auf die Anforderungen eines Kunden zugeschnitten war, die  Logik \u00e4ndert sich aber nicht, auf, sagen wir mal 160 LOC, 60 &#8211; 70 % weniger Code. Macht bei 500 000 Loc rund 600 \/ 500 000 * 100 = 0,12 % \ud83d\ude09  und 3 Formulare weniger &#8230; Nicht beeindruckend, wenn man aber betrachtet, in wie vielen Bereichen man das erreichen k\u00f6nnte. W\u00e4re eine erste Sch\u00e4tzung, da\u00df man den Code auf 160 \/ 600 = 26,6 % runter br\u00e4chte, was dann auf gerade mal 125 000 Zeilen von Code hinausliefe, ohne Einbu\u00dfen bei der Funktionalit\u00e4t.  Wenn man dann noch die extrem aufwendige \u00dcbergabe an diverse Buchhaltungssysteme auf Datev herunterschraubte (was wohl jede Fibu in D einlesen kann) &#8230; Da kann man mal sehen, was  nur eine andere Strukturierung an Vorteilen br\u00e4chte und wie viel weniger Fehler g\u00e4be es  und wie viel einfacher w\u00e4re eine Korrektur? Sollte ich mal einen Fehler in den Angeboten finden, br\u00e4uchte ich nur eine Methode \u00e4ndern statt &#8230; Mal sehen wie&#8217;s weitergeht. Es kommt wohl etwas dazu, weil es das Ziel ist, alle Reports auch als Email versenden zu k\u00f6nnen. Mal schauen&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als ob ich zum Ende meiner Refaktorierung komme. Es scheint, ich konnte 4 verschiedene Formulare mit 4 verschiedenen Abfragen auf 1 Form mit 1 Abfrage umprogrammieren. Es ist IMHO hilfreich, das Wissen was man hat, in Objekten\/Strukturen unterzubringen. Der Code ist bislang nicht perfektioniert, aber immerhin statt 4 Formen mit Code von 120 Zeilen ist [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7979],"tags":[8432,8434,8433,8435],"class_list":["post-12568","post","type-post","status-publish","format-standard","hentry","category-programmierung","tag-aufraeumen","tag-ms-access","tag-refactoring","tag-vba"],"_links":{"self":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts\/12568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/comments?post=12568"}],"version-history":[{"count":0,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts\/12568\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/media?parent=12568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/categories?post=12568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/tags?post=12568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}