PDA

Vollständige Version anzeigen : Bestimmte DS anzeigen


tränendes.herz
23.10.2003, 10:46
Hallo!

Habe mal wieder ein kleines Problem.

Ich möchte in einem Formular nur die DS angezeigt haben, die zu einem bestimmten Namen (den ich vorher aus einem Textfeld ausgelesen habe) gehören...

Ich dachte, das kann ich in der SQL-Abfrage zum Öffnen des DS mit der WHERE - Klausel machen... Aber irgendwie kann man da ja keine Variablen einbeziehen...

Weiß jemand Rat? Wäre echt schön...

Gruss
Diana

WMS
23.10.2003, 10:50
Wieso kann man in eine Sql-Abfrage keine Variablen einbeziehen?? :confused:

Zeig uns doch mal dein Sql-String und welches Feld(er) soll einbezogen werden.

tränendes.herz
23.10.2003, 10:55
dim benutzer as string
benutzer = form_anmeldung.txtName.text

With rs_test
.ActiveConnection = Access.CurrentProject.Connection
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = "SELECT * FROM Bestellung WHERE Name=benutzer"
.Open
End With

Dachte, so könnte es gehen...
Kommt aber ein Laufzeitfehler: "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben" :confused:

Den Namen liest es aber richtig aus...

Arne Dieckmann
23.10.2003, 10:57
Versuche mal
.Source = "SELECT * FROM Bestellung WHERE Name='" & benutzer & "'"

"Name" ist ein ungünstig gewählter Feldname - s. dazu FAQ 1.5 (2. Link in meiner Signatur).

tränendes.herz
23.10.2003, 11:01
Schonmal besten Dank, Arne!

Den Laufzeitfehler bringt er jetzt nichtmehr... Aber es werden immer noch alle DS angezeigt...

Irgendwie verzweifel ich langsam an solchen Kleinigkeiten...

Mit dem Feldnamen hast du natürlich auch Recht... :D

Gruss
Diana

tränendes.herz
23.10.2003, 11:31
... noch ein Zusatz...

Ich öffne das Recordset dann ganz normal mit der von Arne beschriebenen SQL-Abfrage.

Dann habe ich halt den normalen Code.

rs_test.MoveFirst
.... 'Funktionalitäten


Und das alles unter FormCurrent()

Kann ja vielleicht auch sein, dass ich einen Denkfehler habe... ;)

Gruss
Diana

Arne Dieckmann
23.10.2003, 11:39
Was genau hast Du denn überhaupt vor?

racoon0506
23.10.2003, 11:41
Klingt eher danach, als sollte das SQL-Statement nicht als Recordset geöffnet werden, sondern eher an die Datenherkunft des Forms übergeben werden.....

tränendes.herz
23.10.2003, 11:43
Ich habe eine Bestelldatenbank.
Man meldet sich mit seinem Namen an und kommt dann zu einem Formular mit zwei Button:
"Bestellung bearbeiten" und "Neue Bestellung"

Bei "Neue Bestellung" ist es jetzt so, dass halt ein neuer Datensatz angehängt wird, das Bestellformular geöffnet wird und man seine Bestellung eingeben kann... Da steht dann auch schon der Name drin, den man bei der Anmeldung eingegeben hat...

Das Problem bei "Bestellung bearbeiten" ist, dass ja Herr XY nicht sehen soll, was Frau ZS bestellt hat... Also nur seine eigenen Bestellungen bearbeiten kann...

Deshalb die SQL-Abfrage beim Öffnen des Recordsets... Nur scheint das zwar jetzt keinen Laufzeitfehler mehr zu bringen, aber funktionieren tut es trotzdem nicht... :confused: Ich kann immer noch alle Datensätze sehen...

Gruss
Diana

Arne Dieckmann
23.10.2003, 11:45
@Jan: Stimmt, das hat Diana ja auch ganz am Anfang geschrieben. :o

@Diana: Verzichte mal auf das Recordset-Gedöns und probiere:

DoCmd.OpenForm "FormularName",,,"[Namensfeld]='" & Me!Benutzer & "'"

Das zu öffnende Formular muss als Datenherkunft dann die Tabelle "Bestellungen" haben.

WMS
23.10.2003, 12:05
ich möchte nicht klusch... aber darf ich mal nachfragen, was du in dem zu öffnenden Formular als Datenbasis stehen hast? Klingt bald so, als hättest du dort deine Tabelle stehen. :confused:

tränendes.herz
23.10.2003, 13:36
@Arne:
habe alles gemacht, was du geschrieben hast... Die Tabelle war schon die Datenherkunft für das Formular...

Nun scheint es (fast) zu funktionieren. Das Problem ist jetzt allerdings, dass mir das Formular nur einen leeren DS anzeigt und nicht den, der übereinstimmt...

Das sollte IMO nur dann passieren, wenn es keine Übereinstimmung gibt, oder? :(

Gruss und besten Dank für die bisherige Hilfe
Diana

racoon0506
23.10.2003, 14:11
...wenn es keine Übereinstimmung gibt...
Das passiert eigentlich dann, wenn das Formular so eingestellt ist, dass nur neue DS zugelassen werden....
Bei keiner übereinstimmung sollte das Form nicht einmal die Steuerelemente anzeigen.
Es gibt dafür verschiedene Ursachen.
vielleicht kannst du uns das Form und die zugehörige Tabelle mit ein paar Spieldaten mal hochladen. Auf diese Weise kann der Fehler wohl schneller lokalisiert werden....

tränendes.herz
23.10.2003, 14:20
Kann leider keine Anhänge schicken...

Woran könnte es denn liegen? Außer an der Formular - Einstellung, denn die ist IMO richtig...

Gruss
Diana

racoon0506
23.10.2003, 14:23
Kann leider keine Anhänge schicken...
Dazu must du deine Registrierung bestätigen....(Siehe den Link in der Begrüssungsmail, die dir nach der Erstanmeldung zugesandt wurde!)

Woran das wirklich liegt, ...... rätselrat......wo ist die Glaskugel..... (noch! keine Ahnung!)

Arne Dieckmann
23.10.2003, 14:24
Warum kannst Du keine Anhänge schicken? Evtl. liegt es daran (klick mich) (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=102899#fprobs)?


Die Formulareinstellung "Daten eingeben" muss auf "Nein" stehen! "Ja" bedeutet nämlich, dass nur neue Datensätze eingegeben werden können.

Cisco
29.10.2003, 09:51
Also ich hatte ein ähnliches Problem und hab es so mit Arne Vorschlag fast gelöst

hier meine Version

DoCmd.OpenForm "FormularName",,,"[Benutzer_ID]=" & Me!BenutzerID

so eben einfach über die ID des Benutzers... weiß nicht warum - aber über einen Namen ging es bei mir auch nicht!

Arne Dieckmann
29.10.2003, 09:53
Bei Textfeldern musst Du den Filterwert in Hochkommata setzen:

DoCmd.OpenForm "FormularName",,,"[BenutzerName]='" & Me!BenutzerName & "'"

Cisco
29.10.2003, 10:54
Ja, das hattest du ja schon vorher so beschrieben... aber leider hat er dann auch bei mir immer ein leeres Formular geöffnet --> selbes Problem wie bei Diana

Nun scheint es (fast) zu funktionieren. Das Problem ist jetzt allerdings, dass mir das Formular nur einen leeren DS anzeigt und nicht den, der übereinstimmt...

weiß leider nicht warum es nicht geht - aber über die ID ließ sich da Problem lösen :)