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.