AbsolutBeginner Geschrieben 14. Oktober 2008 Teilen Geschrieben 14. Oktober 2008 Hallo Community, wer hat eine Idee wo in folgendem Anpassungscode der Fehlerteufel zugeschlagen hat. Ich suche bereits seit mehreren Tagen - vielleicht bin ich aber auch nur zu blind. Es handelt sich um eine bestehende Datenbank für eine Studierendenstatistik, die ich überarbeiten musste. Das Einlesen der Daten aus der ursprünglichen aktiven Datenbank verläuft unproblematisch. Die Bearbeitung des 'statischen' Abklatsch für die amtlichen Statistiken erfolgt als letzter Punkt und läuft einmal durch. Die Wiederholung erfolgt jedoch nicht. ' Dieses VBA-Programm wird im Formular "FrmStudierende" ' unter "4. Daten anpassen" aufgerufen. Es modifiziert ' die Datensätze der Tabelle "StudStat". Sub StudStat_anpassen() Dim db As DAO.Database Dim rstStud As DAO.Recordset Dim strSem, strStg, strAb, strVert, strStgnr, strKzfa, strSpalte As String Dim strStatus As String Dim intStgsem, intRegel As Integer Dim lngI As Long Set db = CurrentDb() ' Fügt in der Tabelle "StudStat" neue Spalten für "stgab", die ' Spaltenzuordnung der Studierendenstatistik und die Regelstudienzeit an. db.Execute ("ALTER TABLE StudStat" & _ " ADD COLUMN stgab TEXT (5), Spalte TEXT (3), regel INTEGER") Set rstStud = db.OpenRecordset("StudStat") ' Daten ändern lngI = 0 With rstStud Do Until .EOF strStg = !stg strAb = !ab strVert = !vert strKzfa = !kzfa strStgnr = !stgnr intStgsem = !stgsem lngI = lngI + 1 ' Statusanzeige Select Case lngI Case Is = 1 strStatus = "1% erledigt" Forms("FrmStudierende").txtStatus.SetFocus Forms("FrmStudierende").txtStatus = strStatus Forms("FrmStudierende").ComDaten4.SetFocus .... End Select ' Ohne beurlaubte Studierende If !Status <> "B" Then Select Case strAb & strStgnr & strVert ' Bachelor Case "8211" intRegel = 6 strSpalte = "S02" strKzfa = "H" If strVert > 700 Then strStg = strVert Else strStg = strStg End If Case "8212" strSpalte = "S06" strKzfa = "N" strAb = "89" If strVert > 700 Then strStg = strVert Else strStg = strStg End If End Select ' Master Select Case strAb & strStgnr & strStg Case "8811" strSpalte = "S03" ' Dramaturgie If strStg = "903" Then intRegel = 4 Else intRegel = 6 End If ' Magister Case "0211" strSpalte = "S04" Case "629" If strKzfa = "N" Then strSpalte = "S06" strAb = "09" intRegel = 10 Else strSpalte = "S04" strKzfa = "H" strAb = "02" intRegel = 10 End If Case "0212" intRegel = 10 If strKzfa = "H" Then strSpalte = "S05" Else strSpalte = "S06" strAb = "09" strKzfa = "N" End If Case "0213" intRegel = 10 strSpalte = "S06" strAb = "09" strKzfa = "N" ' Promotion Case "0611", "0711" strSpalte = "S07" strKzfa = "H" intRegel = 9 ' Staatsexamen Case "0811", "8311", "8511" strSpalte = "S01" ' Medizin: Semester 1-4 = Vorklinik Case "107" intRegel = 13 If intStgsem > 4 Then strAb = "08" Else strAb = "95" End If Case "185" intRegel = 11 ' Rechtswissenschaft Case "135" intRegel = 9 ' Psychotherapie Case "902" intRegel = 4 Case Else intRegel = 8 End Select Select Case strAb & strStgnr & strVert ' L1 Case "2111", "3111" intRegel = 7 If strStg = "254" Then strSpalte = "S11" strStg = strVert strKzfa = "N" strAb = "20" strStgnr = "12" Else strSpalte = "S10" strKzfa = "H" strAb = "21" End If Case "2112", "3112", "2113", "3113" intRegel = 7 strSpalte = "S11" strKzfa = "N" strAb = "20" If strStg = "254" Then strStg = strVert End If End Select Select Case strAb & strStgnr ' L2 Case "2411", "3311" intRegel = 7 strSpalte = "S12" strKzfa = "H" strAb = "24" Case "2412", "3312" intRegel = 7 strSpalte = "S13" strKzfa = "H" strAb = "24" Case "2413", "3313" intRegel = 7 strSpalte = "S14" strKzfa = "H" strAb = "24" ' L3 Case "2511", "3411" intRegel = 9 strSpalte = "S15" strKzfa = "H" strAb = "25" Case "2512", "3412" intRegel = 9 strSpalte = "S16" strKzfa = "H" strAb = "25" Case "2513", "3413" intRegel = 9 strSpalte = "S17" strKzfa = "H" strAb = "25" ' L5 Case "2611", "3511" intRegel = 9 strSpalte = "S18" strKzfa = "H" strAb = "26" Case "2612", "3512" intRegel = 9 strSpalte = "S19" strKzfa = "H" strAb = "26" Case "2613", "3513" intRegel = 9 strSpalte = "S20" strKzfa = "N" strAb = "26" ' HandelslehrerIn Case "1811", "3811" intRegel = 8 strSpalte = "S01" strKzfa = "H" strAb = "18" ' kirchl. Prüfung Case "0411", "9211", "9311", "9411", "9611" intRegel = 9 strSpalte = "S01" strKzfa = "H" ' Diplom Case "1111" strSpalte = "S01" strKzfa = "H" Select Case strStg Case "021", "175", "029" intRegel = 8 Case "026", "128", "032" intRegel = 10 Case Else intRegel = 9 End Select ' Doppelstudium LA Case "2121", "2421", "2521", "2621" strSpalte = "S21" strKzfa = "H" If strStg = "254" Then strStg = strVert strKzfa = "N" strAb = "20" End If Case "3121" strSpalte = "S21" strKzfa = "H" strAb = "21" If strStg = "254" Then strStg = strVert strKzfa = "N" strAb = "20" End If Case "3321" strSpalte = "S21" strKzfa = "H" strAb = "24" Case "3421" strSpalte = "S21" strKzfa = "H" strAb = "25" Case "3521" strSpalte = "S21" strKzfa = "H" strAb = "26" ' Doppelstudium nicht LA Case "0221", "0421", "0821", "1121", "1821", "3821", "8221", "8321", _ "8821", "9221", "9321", "9421", "9521" strSpalte = "S08" strKzfa = "H" intRegel = 99 If strStg = "107" Then If intStgsem > 4 Then strAb = "08" Else strAb = "95" End If End If ' Sonstige Case Else strSpalte = "S01" intRegel = 99 End Select ' Beurlaubte If !Status = "B" Then intRegel = 99 Select Case strStg & strStgnr Case strStg = "107" If intStgsem > 4 Then strAb = "08" Else strAb = "95" End If Case strStg = "254" strStg = strVert strKzfa = "N" strAb = "20" End Select Select Case strStgnr Case "11" strSpalte = "S23" Case Else strSpalte = "S24" End Select End If .Edit !stgab = strStg & strAb !stg = strStg !ab = strAb !kzfa = strKzfa !Spalte = strSpalte !regel = intRegel .Update Debug.Print lngI .MoveNext ' nächster Eintrag Loop .Close End With -Alle Ideen und Hinweise sind willkommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AbsolutBeginner Geschrieben 14. Oktober 2008 Autor Teilen Geschrieben 14. Oktober 2008 Kurzer Hinweis, zu obigem Hilfeersuchen: Geändert wurde vor allem der Bereich zu Bachelor "8211" und "8212", da die Zählung zukünftig (wegen der weiteren Verarbeitung) über die gewählte Vertiefung/Schwerpunkt zu erfolgen hat. Die vorherige Schreibweise If !Status <> "B" Then Select Case strAb & strStgnr ' Bachelor Case "8211" strSpalte = "S02" Select Case strStg Case "918", "136" strStg = strVert Case Else strStg = strStg strKzfa = "H" intRegel = 6 End Select Case "8212" strSpalte = "S24" Select Case strStg Case "918", "136" strStg = strVert Case Else strStg = strStg strSpalte = "S24" strAb = "89" strKzfa = "N" intRegel = 6 End Select hat zu einer fehlerhaften Summe der Studierenden ohne Angabe der gewählten Vertiefung geführt. Vielen Dank an Alle, die bereit sind, sich mit diesem Horrorcode auseinander zu setzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 14. Oktober 2008 Teilen Geschrieben 14. Oktober 2008 Kannst du bitte mal moch die Umrüche an den Zeilenenden entfernen, so ist der Code noch teilweise lesbar ? danke :eek Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AbsolutBeginner Geschrieben 14. Oktober 2008 Autor Teilen Geschrieben 14. Oktober 2008 ' Dieses VBA-Programm wird im Formular "FrmStudierende" ' unter "4. Daten anpassen" aufgerufen. Es modifiziert ' die Datensätze der Tabelle "StudStat". Sub StudStat_anpassen() Dim db As DAO.Database Dim rstStud As DAO.Recordset Dim strSem, strStg, strAb, strVert, strStgnr, strKzfa, strSpalte As String Dim strStatus As String Dim intStgsem, intRegel As Integer Dim lngI As Long Set db = CurrentDb() ' Fügt in der Tabelle "StudStat" neue Spalten für "stgab", die ' Spaltenzuordnung der Studierendenstatistik und die Regelstudienzeit an. db.Execute ("ALTER TABLE StudStat" & " ADD COLUMN stgab TEXT (5), Spalte TEXT (3), regel INTEGER") Set rstStud = db.OpenRecordset("StudStat") ' Daten ändern lngI = 0 With rstStud Do Until .EOF strStg = !stg strAb = !ab strVert = !vert strKzfa = !kzfa strStgnr = !stgnr intStgsem = !stgsem lngI = lngI + 1 ' Statusanzeige Select Case lngI Case Is = 1 strStatus = "1% erledigt" Forms("FrmStudierende").txtStatus.SetFocus Forms("FrmStudierende").txtStatus = strStatus Forms("FrmStudierende").ComDaten4.SetFocus .... End Select ' Ohne beurlaubte Studierende If !Status <> "B" Then Select Case strAb & strStgnr & strVert ' Bachelor Case "8211" intRegel = 6 strSpalte = "S02" strKzfa = "H" If strVert > 700 Then strStg = strVert Else strStg = strStg End If Case "8212" strSpalte = "S06" strKzfa = "N" strAb = "89" If strVert > 700 Then strStg = strVert Else strStg = strStg End If End Select ... .Edit !stgab = strStg & strAb !stg = strStg !ab = strAb !kzfa = strKzfa !Spalte = strSpalte !regel = intRegel .Update Debug.Print lngI .MoveNext ' nächster Eintrag Loop .Close End With Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.