Januar 26, 2021, 12:11:39

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


VBA oder SQL?

Begonnen von Klausurenverwaltung, Mai 26, 2010, 10:32:49

⏪ vorheriges - nächstes ⏩

Klausurenverwaltung

Hallo!  :)
Ich habe zur Zeit ein Access-Projekt am laufen, zu dem Thema Klausurenverwaltung.
Dabei habe ich eine wichtige Frage, wo ich Unterstützung gebrauchen könnte.

Die Ausgangslage:

Ich habe folgende Tabellen:

Fach
Fach-Nr.
Fachname
usw

Prüfung
Prüfungs-Nr.
Fach-Nr.
usw

Teilnahme
Matrikel-Nr
Prüfungs-Nr
Note

Daraus habe ich folgende Abfrage mit folgenden Ergebnis:
[Die Matrikel-Nr wird am Anfang der Abfrage eingegeben und alle Noten werden aufgelistet]

Matrikel-Nr - Prüfungs-Nr - Fach-Nr - Fachname - Note
1100             108                100         Mathe 1      5,0
1100             400                100         Mathe 1      5,0
1100             450                100         Mathe 1      2,0
1100             500                101         Mathe 2      3,0

Ich versuche jetzt eine neue Spalte zu erstellen, bei denen der Versuch gezählt wird.
Sie sollte also anzeigen, jetzt bei dem Beispiel:

Versuch
1
2
3
1

Ist das mit SQL realisierbar, oder muss ich VBA benutzen?
Und wie setze ich es am besten um?

Vielen Dank für Eure Hilfe! :)

DF6GL

Hallo,



welche Aussagekraft (Bedeutung) soll der Wert "Versuch" denn haben?

In Deinem Beispiel bedeutet der lediglich eine laufende Nr innerhalb der Gruppe "Fachnummer" ( und bezogen auf eine Martikelnummer).


Eine solche laufende Nr wäre am einfachsten in einem Bericht realisierbar.


www.donkarl.com/?FAQ5.16


(btw: 
-- auf Leer- und Sonderzeichen in Objektnamen DRINGEND verzichten.
-- SQL (Abfragen, die auf Tabellenwerte zugreifen) brauchst Du IMMER, VBA (nur) dann, wenn Du die durch SQL gelieferten Werte in solcher Weise noch weiterverarbeiten willst, die SQL an sich nicht gleich erledigen kann. )

Klausurenverwaltung

Vielen Dank für die Antwort!

Aber in einem Bericht kämen die Versuche zu spät.
Gebraucht werden sie vorher schon, da man z.B. gewisse Klausuren nur 3x schreiben darf.
Wenn sich jemand für eine Klausur anmelden möchte, muss vorher geschaut werden, um den wievielten Versuch es sich handelt.
Wenn er schon 3x durchgefallen ist, darf er sich nicht anmelden.

Geplant war halt die oben genannte Abfrage, allerdings habe ich die Versuchsanzahl noch nicht so zu meinen Wünschen hinbekomen...

accessundich

Das wäre mir eine weitere Spalte "Versuche" in der Tabelle "Teilnahme" wert, die ich während der Formulareingabe automatisiert ausfüllen würde.
Ein einfaches DLookUp mit den entsprechenden Kriterien würde dann genügen, diese Spalte automatisiert auszufüllen.
Entsprechend könnte man in der Tabelle "Fach" noch eine Spalte "ZulaessigeVersuche" einbauen, so dass man nach Eingabe in die Tabelle "Teilnahme" automatisiert eine Prüfung vornehmen könnte.

Nur mal so gedacht.

Viel Erfolg
Andi
---
Ich stelle keine komischen Fragen: Ich bin komisch.

DF6GL

Hallo,

die Spalte "ZulässigeVersuche" wäre m. E. in Tabelle "Fach" sinnvoll(er), wenn denn dieser Wert tatsächlich unterschiedlich pro "Fach" sein kann.

Weiterhin: Woher weiß man, bei welcher Note ein Fach (bzw. eine Prüfung) nicht bestanden wurde?


"Wenn sich jemand für eine Klausur anmelden möchte, muss vorher geschaut werden, um den wievielten Versuch es sich handelt. "

etwa so mit diesen  Tabellen/Daten:




Dim lngMatrikelnr as Long, lngFachNr as Long

lngMatrikelnr =1100

lngFachNr  =100
if Dcount("*","Teilnahme","[Matrikel-Nr]= " & lngMatrikelnr & " and [Fach-Nr] = " & lngFachNr) >=3 Then
Msgbox "keine weitere Anmeldung für FachNr " & lngFachr   & " von MatrikelNr & lngMatrikelNr & " erlaubt" 
End If

accessundich

ZitatWeiterhin: Woher weiß man, bei welcher Note ein Fach (bzw. eine Prüfung) nicht bestanden wurde?

Ich denke mal, dass 5 und 6 als nicht bestanden gelten. Ansonsten müsste sich hier der TO zu äußern.

Zitatdie Spalte "ZulässigeVersuche" wäre m. E. in Tabelle "Fach" sinnvoll(er), wenn denn dieser Wert tatsächlich unterschiedlich pro "Fach" sein kann.

Hatte ich ja geschrieben. Wenn er dies tut, braucht es dann auch keine Änderung in der Tabelle "Teilnahme", da man dann rechnerisch sich einen Überblick verschaffen kann.

Hoffe, dass es am Bodensee schöner ist als bei uns um verregneten Frankfurt.
Grüß Dich Franz
Andi
---
Ich stelle keine komischen Fragen: Ich bin komisch.

Klausurenverwaltung

zulässige Fachversuche sind in der Tabelle "Fach" realisiert.
Habe halt erstmal die wichtigsten Attribute der einzelnen Tabellen aufgelistet.
Oder besser gesagt die, die in der Abfrage gebraucht werden.

Unser Projekt hatte auch erst das Attribut "Versuch" in der Tabelle Teilnahme.
Wurde allerdings von unserem Prof nicht erwünscht, sollte anders realisiert werden...

Zum bestehen muss eine bessere Note als 5,0 erreicht werden,
also mindestens 4,0.
Ich versuche gerade die Dcount-Funktion zu erstellen.
Nochmals danke für die promte Hilfe! :)

Klausurenverwaltung

Mit der Dcount-Funktion, das sieht schon gar nicht so verkehrt aus.
Allerdings habe ich noch ein Problem:

Die Fach-Nr ist nicht in der Tabelle "Teilnahme", sondern in "Fach".
Kann ich die Dcout-Funkton so benutzen, dass er beide Werte aus den verschiedenen Tabellen zählt.
Oder wie ist das mit einer Abfrage realisierbar?

accessundich

Hi,

erstelle Dir doch eine entsprechende Abfrage mit dem für Dich wichtigen Kriterienteil und dann:
XYZ = Dcount("*","qrygespeichert") Der Kriterienteil wurde ja bereits in der gespeicherten Abfrage vollzogen, so dass hier der Kriterienteil entfallen kann.

Ansonsten Abfrage ohne Kriterienteil und dann abspeichern und den Kriterienteil dann immer an DCOUNT ranhängen.

Viel Erfolg
Andi
---
Ich stelle keine komischen Fragen: Ich bin komisch.

DF6GL

Hallo,

@Andi:  grüß Dich..

Habe mich verlesen und "Teilnahme" mit "Fach" in Deinem Posting verwechselt.   Das kommt daher, dass ich es nur mit Sonnenbrille lesen kann, weil bei uns die Sonne scheint und mir die Hitze meine Gedanken bremst  .. ;D

@Klausurenverwaltung:

Erstell eine Tabelle über die beteiligten Tabellen und mit passender Verknüpfung. Diese Abfrage benutzt Du in der DCount-Funktion.

accessundich

@Franz
Na dann genieße mal die Sonne.

Mit einer gespeicherten Grundabfrage hätte er ja eine entsprechende Tabelle mit der gewünschten Ergebnismenge und darauf kann er ja dann den DCount entsprechend anwenden und durch weitere Kriterien dessen Ergebnismenge einschränken. Nur mal so angedacht, da ich Abfragen in dieser Form sehr flexibel finde. Meine Meinung  ;D

Viele Grüße an den hoffentlich noch sonnigen Bodensee
Andi
---
Ich stelle keine komischen Fragen: Ich bin komisch.

DF6GL

Hallo,

ja, so ist es, mit der Abfrage wie auch mit der Sonne..    :D

OT:
Ich geh jetzt einen Kaffee trinken. Einen Kuchen gibt es auch noch. Die Sonne scheint mir auf den Bauch und somit ist der Tag gerettet.    8)