Huhu Nena,
also dann lass uns mal weitermachen.
q1 = DLookup("[Benutzername]", „ErsteTabelle“,"[Benutzername]
= ‚" & Benutzername & "‘")
Was würde das denn bewirken? Leider funktionierts auch nicht. Ich habs per copy&paste
rüberkopiert und bekomme wieder die gleiche schon bekannte Meldung, daß die Eingabe falsch
sei. Sie ist aber richtig und betrifft den 3. Datensatz meiner Tabelle.
Der obige Befehl funktioniert aber. Er liefert dir den Benutzernamen, der in deiner Tabelle
„ErsteTabelle“ steht, den du eingegeben hast und nach dem du gesucht hast (wirklich eine
überaus nützliche Funktion ).
Vielleicht heisst deine Tabelle ja „Erste Tabelle“ ?? oder irgend ein anderer Tippfehler??
und auch die spitzigen Bemerkungen deinerseits bezüglich der
bereits angelegten Tabelle waren berechtigt.
Oh oh, da ist wohl was falsch rübergekommen.
Nö,nö, schon Okay.
Okay, das funktioniert soweit. Aber da ich ja verstehen und lernen will, um es ggf. auf
andere Sachen anwenden zu können, noch ein paar Verständnisfragen, falls Du Zeit und Lust
hast, es mir zu erklären:
Ei sischer doch.
Warum definierst Du in dem Abschnitt ‚Hier wird das Suchkriterium zusammengebastelt‘ die
Variable a$ erst nur mit dem Benutzernamen und dann gleich nochmal neu mit
a$=a$ + Kennwort?
Verstehe ich es richtig, daß mit der zweiten Zeile die erste einfach nur
überschrieben wird?
Deine Vermutung ist fast richtig 
In der ersten Zeile lade ich die Variable a$ mit
a$ = "[Benutzername] = " + CHR(39) + Benutzername
und dann lade ich die gleiche Variable a$ mit
a$ = a$ + CHR(39) + " AND [Kennwort] = " + CHR(39) + Kennwort + CHR(39)
…I…I…I
…I…I…I
…±------------------------------ dem alten Wert von a$
…I…I
…I…I
…±------------±------- und zusätzlich das ganze restliche Zeugs
Ich bastle mir also die Variable a$ nach und nach zusammen. Ich überschreibe sie nicht, sondern
ich füge Stück für Stück was hinzu.
Ich hätte es noch viel mehr aufteilen können, was die Übersichtlichkeit des Aufbaus von a$ noch
erhöht oder aber ich hätte auch auf die Variable a$ verzichten können und den ganzen Sermon direkt
in den DLookup-Befehl schreiben können.
Spätestens das führt dann auch bei mir zum blackout und ich verstehe nur noch Bahnhof.
Ich finde, durch die Verwendung von a$ sieht doch der DLookup-Befehl sehr viel übersichtlicher
aus, oder ??
Es ist also nicht immer sinnvoll den Weg des minimalen Tippaufwands zu gehen, sondern es dient der
Lesbarkeit des Programms, wenn man auf Übersichtlichkeit achtet. Wenn man ein Fuchs im Programmieren
ist, kann man dann auf solche Umwege verzichten.
Hätte man dann nicht auch genauso nur die eine Zeile
a$ = "[Benutzername] = " + Chr(39) + Benutzername + Chr(39) + " AND [Kennwort] = " + Chr(39) + Kennwort + Chr(39)
nehmen können? Funktionieren tuts jedenfalls so auch. Was ist der Sinn, die Anweisung, auf
2 Zeilen aufzuteilen?
Völlig richtig erkannt. Sinn und Unsinn siehe oben
Warum muß man das Apostroph mit Chr(39) umschreiben und kann es nicht einfach tippen?
Muss man nicht und BINGO, dass du es auch einfach Tippen kannst.
Wie fast immer, gibt es mehrere Möglichkeiten, was richtig (falsch) zu machen.
Ich wollte einfach nur sicher gehen, dass nicht aus versehen ein Tippfehler auftritt.
„’“ und ‚"‘ sieht doch verdammt gleich aus, oder ??
Und wie ist es hier richtig „’ oder '“ ??
Wozu wird der ganze String zusammengebastelt
siehe oben
und vor allem warum lautet die if-Abfrage auf „“? Ist denn nicht immer was in q1 drin?
Oder nur dann, wenn es den Datensatz gibt?
Richtig !! Nur wenn was gefunden wurde steht in q1 was drin (Beschreibung von DLookup-Befehl
siehe weiter unten).
Also die Entscheidung bei der IF-Anweisung ob q1"" ist, ist dann Okay, wenn in q1 was drin
steht, also was gefunden wurde. Dann erhälst du die Meldung in welcher Zeile die Einträge
gefunden wurden.
Wenn q1="" ist, dann wurde nichts gefunden, ergo bekommst du den entsprechenden Rüffel.
Ich kapier leider auch die DLookup-Funktion und deren Syntax überhaupt nicht. Die Hilfe
die mir das Buch und die Online-Hilfe von Access anbieten, sind mir leider zu hoch ;-(.
Wie Okinaptz Uglwf ( einen besonders schönen Gruss an alle Klingonen und an alle anderen Treki’s)
auch schon erwähnt, ist es ziemlich beknackt von dem Autor in einem Grundlagenbuch gleich auf
Seite 3 einen so komplexen Befehl wie „DLookup“ zu verwenden.
Aber keine Angst vor grossen Tieren !!
Okay, dann mal langsam, was der Befehl macht.
DLookup("[Index]",„Erste Tabelle“,a$) macht folgendes
…I…I…I
…I…I…I
…I…I…I
…I…±-------------- In der Tabelle „Erste Tabelle“ wird das gesucht,
…I…I
…I…I
…I…±---- was in a$ angegeben ist.
…I
…I
…±---------------------- Wenn das gefunden wurde, dann gibt der Befehl
…DLookup das zurück, was in der gefundenen Zeile in
… der Spalte Index steht ( […] bedeutet Inhalt der
…Zelle in Spalte … ).
…Das ist dann die fortlaufende Ziffer der Zeile oder
…aber goar nischts ( „“ = leerer string ).
also
q1=DLookup("[Index]",„Erste Tabelle“,a$) bewirkt, dass q1 entweder
q1=„1“ oder q1=„2“ oder … wird, wenn Benutzername und Kennwort gefunden wurde
oder aber
q1="" wird, wenn Benutzername und Kennwort nicht richtig war.
Ich hoffe, der Nebel lichtet sich.
Wenn du weitere Fragen hast, wäre es vielleicht sinnvoll per E-Mail weiter zu machen, man
kann dann nämlich die Programme anhängen und muss nicht alles in den WWW-Editor
rüberkopieren. Darübenhinaus spart das auch Plattenkapazität auf dem WWW-Server und wir
riskieren nicht einen Anschiss vom Moderator.
Aber vielleicht lesen ja noch ein paar andere mit und korrigieren mich, wenn ich Mist verzapfe.
Gruss
)
Hans