collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 70
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13808
  • stats Beiträge insgesamt: 64128
  • stats Themen insgesamt: 8676
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: DLookup-Problem  (Gelesen 7038 mal)

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
DLookup-Problem
« am: Mai 30, 2010, 19:14:13 »
Hallo,
ich habe folgendes Problem in der selben Datenbank.

Ich habe eine Abfrage mit ALLEN Fächern, die JEDER EINZELNE Student schreiben darf.
Matrikel-Nr wird aufgelistet, daneben die Fach-Nr von den Fächern, die er schreiben darf.

Bei der Anmeldung soll er schauen, ob beide Nr in dieser Kombination in der Abfrage vorhanden sind.
Ich habe es bislang versucht mit dlookup und folgenden Zeilen:

Dim test As Variant
test = DLookup([Matrikel-Nr] And [Fach-Nr], "kopie", "[Matrikel-Nr] = " & Me![Matrikel-Nr] & " and [Fach-Nr] = " & Me![Fach-Nr])

If IsNull(test) Then
MsgBox "Anmeldung nicht OK!"
Me.Undo
Cancel = True
Else
MsgBox "Anmeldung OK!"
end if

Allerdings sagt er mir, dass jeder Student die Kriterien erfüllt und jeder Student darf sich anmelden...
 :-\
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7014
Re: DLookup-Problem
« Antwort #1 am: Mai 30, 2010, 19:20:31 »
Hallo,
analog zu Deinem anderen Beitrag solltest Du das auch mit DCount() machen und nicht mit DLookup().
Gruß
Klaus
 

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #2 am: Mai 30, 2010, 19:23:15 »
Mit DCount habe ich es schon probiert, da habe ich aber das selbe Problem...
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7014
Re: DLookup-Problem
« Antwort #3 am: Mai 30, 2010, 19:31:17 »
Hallo,
und wie sah Dein DCount() Versuch aus?
Der DLookup() Versuch ist schon mal ganz falsch aufgebaut, Du kannst diese Funktion aber nicht verwenden.
Du brauchst Ja eine Anzahl, nähmlich 0 (noch nicht angemeldet) oder 1 (angemeldet).
Ich würde mal annehem, dass das funktioniert:

If DCount("*", "Teilnahme", "[Matrikel-Nr]= " & Me![matrikel-nr] & " and [Fach-Nr] = " & Me![Fach-Nr]) = 1 Then
Ist direkt aus dem anderen beitrag kopiert, versuche es mal.
Wenn es nicht klappt, zeieg bitte den kompletten Code den Du mit DCount() versucht hast.
Gruß
Klaus
 

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #4 am: Mai 30, 2010, 19:45:16 »
If DCount("*", "Teilnahme", "[Matrikel-Nr]= " & Me![Matrikel-Nr] & " and [Fach-Nr] = " & Me![Fach-Nr]) = 1 Then
    MsgBox "Anmeldung OK!"
    Else
    MsgBox "Anmeldung nicht OK!"
    Me.Undo
    Cancel = True
    End If


Das ist mein Code, bei dem jeder sich anmelden darf...
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7014
Re: DLookup-Problem
« Antwort #5 am: Mai 30, 2010, 19:53:44 »
Hallo,
lasse Dir mal mit Debug.Print den Wert ausgeben (im Direktbereich), vor dem If einfach mal diese beiden Zeilen einfügen:
Debug.Print DCount("*", "Teilnahme", "[Matrikel-Nr]= " & Me![Matrikel-Nr] & " and [Fach-Nr] = " & Me![Fach-Nr])
Stop
Wie ist der Wert, wenn die Person nicht angemeldet ist und wenn angemeldet.
« Letzte Änderung: Mai 30, 2010, 22:38:24 von MzKlMu »
Gruß
Klaus
 

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #6 am: Mai 30, 2010, 20:32:07 »
Ich kann ihn im private sub nicht ausgeben.
Oder bin ich einfach nur intellent genug?  ???
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23143
Re: DLookup-Problem
« Antwort #7 am: Mai 30, 2010, 20:53:35 »
Hallo,

wieso nicht?  (Frage zum ersten Satz  ;D ;)  )


Ich sehe auch nicht, in welcher Ereignisprozedur das stattfinden soll. Ich vermute, Du willst es etwa so machen:

Sub Form_BEFOREUPDATE(Cancel as Integer)

If isnull (Me![Matrikel-Nr] ) or isNull(Me![Fach-Nr]) then
Msgbox "Matrikel-Nr oder Fach-Nr fehlt"
Exit Sub
End if

If DCount("*", "Teilnahme", "[Matrikel-Nr]= " & Me![Matrikel-Nr] & " and [Fach-Nr] = " & Me![Fach-Nr]) > 0  Then
    MsgBox "Anmeldung nicht OK!"
    Me.Undo
    Cancel = True
    End If
End Sub




MatrikelNr und FachNr sind von Datentyp Zahl,Long

Die Textfelder im Form müssen natürlich die entspr. Werte auch anzeigen, bzw. es muß dort etwas eingetragen sein

Und:  Auf Sonderzeichen und Leerzeichen DRINGEND verzichten, ich wiederhole mich...   ::)

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #8 am: Mai 31, 2010, 16:49:36 »
Alle Varianten schon probiert, =1, >0 und auch von der anderen Seite her.
Ich habe fast den selben Code für die Anzahl der Versuche, da gibt er mir richtig wieder, wenn man mehr als 3 Versuche hat.
Allerdings greift er auf eine andere Abfrage zu. Hier ist er so nett zu den Studenten, dass sich ALLE anmelden dürfen...

Daten sind im selben Formular vorhanden, allerdings ausgeblendet.
Gibt es noch eine andere Funktion, bei der er nach den Werten in der Abfrage schaut?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23143
Re: DLookup-Problem
« Antwort #9 am: Mai 31, 2010, 17:03:40 »
Hallo,

wir reden aneinander vorbei.


Ich spreche von der Tabelle "Teilnahme"..

Welche Abfrage willst Du denn benutzen ? Wie heißt deren SQL-String?

Du solltest aber besser den akt. Lösungsweg beschreiten, und nicht mitten drin umkehren und eine andere Route suchen, die dann auch nicht zum Ziel führt...

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #10 am: Mai 31, 2010, 17:16:38 »
SELECT *
FROM [4 Studenten mit möglichen Anmeldungen] AS A
WHERE (((Exists (SELECT * FROM [0 - Student Fach bestanden] AS B WHERE B.[Matrikel-Nr] = A.Matrikelnummer AND B.[Fach-Nr] = A.[Fach-Nr]))=False));


Das ist der SQL-Code von der Abfrage. Die Abfrage "4" sagt, welche Studenten sich anmelden können, also die Voraussetzungen erfüllt haben. Sie ist eine Union-Abfrage, aus vier anderen Abfragen.
Die Abfrage "0" schließt die Studenten aus, die das Fach schon bestanden haben.

Sonst noch Informationen notwendig?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23143
Re: DLookup-Problem
« Antwort #11 am: Mai 31, 2010, 17:23:33 »
Hallo,


mhmm,  bin geneigt zu sagen:  Überdenke Dein Tabellenmodell eingehend...

Solche Abfragemonster (dazu noch Union-Abfragen) trüben eher den Blick als dass sie nützlich sind.

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #12 am: Juni 01, 2010, 12:14:42 »
Die Werte, die die Abfrage liefert, sind 100%ig richtig.
Allerdings kommt halt bei der Dcount-Funktion nur Mist raus.
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: DLookup-Problem
« Antwort #13 am: Juni 01, 2010, 13:01:32 »
Hallo,

wieso Mist - was gibt denn die DCount-Funktion aus?
Die Funktion zählt kompromisslos die Anzahl der Datensätze, die den eingegebenen Kriterien entsprechen und nichts anderes!
Leider hast du nach MzKlMu in #5 keine Angaben gemacht.
Hast du das Direktfenster angezeigt - dann wird der Wert auch nach MzKlMu's Funktion ausgegeben.

Abber dennoch ...
Wenn also in deiner Tabelle 'Teilnahme' (und ich gehe davon aus, dass es sich um eine Tablle handelt) die Kombination Matrikel-Nr und Fach-Nr wie sie aus deinem Formular kommen existiert, wird sie die Anzahl der Übereinstimmungen liefern - da fährt die Eisenbahn drüber.

Kann es sein, dass sie deshalb fehlerhaftes bzw. nichts liefert, weil die Feldnamen nicht stimmen?
Ich frage das wegen...
Zitat
...SELECT * FROM [0 - Student Fach bestanden] AS B WHERE B.[Matrikel-Nr] = A.Matrikelnummer ...
... weil mir die unterschiedliche Schreibweise des Feldnamens f. Matrikel-Nr aufgefallen ist.


Greets
Peter
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline Klausurenverwaltung

  • Newbie
  • Beiträge: 18
Re: DLookup-Problem
« Antwort #14 am: Juni 01, 2010, 16:00:31 »
TATSÄCHLICH!
Bei der Abfrage ist es ohne Bindestrich, jetzt funktioniert es!
Seit WOCHEN bin daran am arbeiten, vielen Dank!  :)