Zum Inhalt springen

Loop ohne Do-Fehlermeldung


AbsolutBeginner

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

' 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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...