Guten Tag,
ich habe ein Problem bei einer Abfrage die als Suche fungieren soll. Ich habe ein Formular welches über ein Textfeld verfügt und einen Button der die Abfrage ausführt. In dem Textfeld gebene ich einen ColorCode ein (besteht nur aus Zahlen) und möchte dann mit der Abfrage nur den Datensatz ausgegeben bekommen der diesen Code enthält. Dafür habe ich in der Abfrage die Tabelle mit diesem Code ausgewählt und als Kriterium folgendes eingegeben, da ich bei meiner Rechere herausgefunden habe, dass so der Wert aus dem Textfeld als Kriterium bei der Abfrage verwendet wird:
[Formulare]![Formular]![Textfeld]
Führe ich nun diese Abrage aus oder klicke auf den Button um diese Auszufüllen erscheint ein Eingabefeld und ich muss den ColorCode manuell eingeben. Ich hoffe mir kann jemand helfen.
Hallo,
du musst schon die richtigen Namen einsetzen, also "Formular" = Name des Formulars und "Textfeld" = Name des Textfeldes mit dem Farbcode.
Hi,
sorry das war auch nur als Beispiel gedacht. Meine Formular heißt: "ColorCode Artikel suchen" und das Textfeld "txtSuche". Und das habe ich dementsprechend auch für Formular und Textfeld eingesetzt.
Hallo,
sorry, aber wie soll man nach einem Fehler suchen wenn man nicht sieht was DU gemacht hast ? Zeige also bitte den Text exakt. Und kopieren, nicht abschreiben.
Hi
das hier ist die SQL-Ansicht:
SELECT Artikel.Artikelnummer, Artikel.Artikelname, ColorCode.Artikelfarbe
FROM Artikel INNER JOIN ColorCode ON Artikel.[Artikelnummer] = ColorCode.[Artikelnummer]
WHERE (((ColorCode.ColorCode)=[Formulare]![ColorCode Artikel suchen]![txtSuche]));
Hallo,
schreibe zunächst
....)=[Forms]![ColorCode Artikel suchen]![txtSuche]));
wobei das Formular natürlich auch im Anzeigemodus geöffnet sein muss.
Hallo,
mich wundert die Verknüpfung über die Artikelnummer.
Sollte das nicht eher so ausssehen:
SELECT Artikel.Artikelnummer, Artikel.Artikelname, ColorCode.Artikelfarbe
FROM Artikel INNER JOIN ColorCode ON Artikel.[ColorCode] = ColorCode.[ColorCode]
WHERE (((ColorCode.ColorCode)=[Forms]![ColorCode Artikel suchen]![txtSuche]));
Wonach genau wirst du denn bei Ausführung der Abfrage gefragt?
Hi
"Forms" hat leider nichts verändert. Es öffnet sich weiterhin ein Eingabefeld über dem folgendes steht:
Formulare!ColorCode Artikel suchen!codesuche
Wenn ich dort nun nochmal die Nummer eingebe wird die Abfrage auch ganz normal ausgeführt. Bloß ich möchte ja wenn es geht dieses Eingabefenster vermeiden.
Hi,
dann gibt es das Textfeld "CodeSuche" wohl nicht im Formular.
ZitatMeine Formular heißt: "ColorCode Artikel suchen" und das Textfeld "txtSuche".
BTW:
Auf Sonder- und Leerzeichen in den Bezeichnungen solltest du besser verzichten.
Zitat von: MaggieMay am Dezember 02, 2014, 13:20:34
Hi,
dann gibt es das Textfeld "CodeSuche" wohl nicht im Formular.ZitatMeine Formular heißt: "ColorCode Artikel suchen" und das Textfeld "txtSuche".
das ist der Name des Buttons
BTW:
Auf Sonder- und Leerzeichen in den Bezeichnungen solltest du besser verzichten.
Ich habe ehrlich gesagt keine Ahnung was du damit aussagen willst.
Ist der von dir gezeigte SQL-Code aus Antwort #4 noch gültig?
Dort ist nichts zu sehen von "codesuche"... ???
SELECT Artikel.Artikelnummer, Artikel.Artikelname, ColorCode.Artikelfarbe, ColorCode.ColorCode
FROM Artikel INNER JOIN ColorCode ON Artikel.[Artikelnummer] = ColorCode.[Artikelnummer]
WHERE (((ColorCode.ColorCode)=[Forms]![ColorCodeArtikelsuchen]![codesuchefeld]));
Auch hier findet man nicht das angeblich nachgefragte Formulare!ColorCode Artikel suchen!codesuche
???
Du solltest langsam einsehen, dass die Fehlersuche absolut keinen Sinn macht, wenn du stets aufs Neue deine tatsächlichen Feldnamen "verschleierst".
Hi
ich habe immer wieder Probleme mit der übergabe von Formularwerten :(
Ich habe nun mal die Datenbank hochgeladen.
Zum Prozedere:
Über das Formular "Rechnunganlegen" erzeuge ich einen Datensatz in der Tabelle Rechnung. Ich kann in dem Formular alle Bestllnummern auswählen die den status 2 haben. Mit dem klick auf Datensatz hinzufügen füge ich wie gesagt den Datensatz hinzu und öffne die Abfrage "statusnachrechnung". Diese Abfrage soll den status von 2 auf 3 setzen, damit ich in dem Formular Rechnunganlegen nicht nochmal einen Rechnung für die Bestellung anlegen kann. Bei dieser Abfrage wird die Tabelle "Bestellung" nach der Bricklink_Nr durchsucht welche den Wert "Bestell_Nr" aus dem Formular "Rechnunganlegen" erhalten soll.
Daher habe ich als Kriterium diese Form eingegeben:
[Formulare]![Formular]![Textfeld]
allerdings kommt wieder eine Parametereingabe und erst dann wird alles so gemacht wie es soll.
Diese Problematik zieht sich eigentlich durch meine ganze Datenbank das ich nicht wirklich mit dem Befehl auf Texfelder aus Formularen zugreifen kann :(
EDIT: Leider ist die DB zu groß, deswegen habe ich es über Dropbox zur Verfügung gestellt.
https://www.dropbox.com/s/3ydzhgw67cgqc5g/testDB.accdb?dl=0
Hallo,
-- ich würde grundsätzlich immer Forms!Formularname!Textfeldname schreiben...auch wenn Access das wieder in "Formulare!.." umbenennt. Zu überprüfen wäre das in der SQL-Ansicht im Abfrageentwurf.
-- das Formular muss, wenn schon darauf referenziert wird, auch geöffnet sein.
-- suspekt ist auch, eine Aktionsabfrage mit "Öffnen Abfrage" zu starten.
Bei geöffneten Formular erhalte ich kein Parameterabfragefenster...
Hallo,
stimmt es öffnet sich kein Parameterabfragefenster da habe ich mich wohl versehen weil das war nur wenn ich die Abfrage alleine aufrufe. Allerdings wird der status 2 nicht zu status 3 geändert.
Hallo,
du springst zuerst auf einen neuen Datensatz und führst erst dann die Abfrage aus.
Da hast du aber keine aktuelle Bestellnummer mehr im Formular stehen.
Hi
ja das war der Fehler. Nun habe ich ein Problem mit dem Formular Rechnunganlegen. Dieses soll die Daten in die Tabelle Rechnung speichern. Es werden mir auch alle Werte im Formular richtig angezeigt aber es kommt dann ein Fehler, dass Rechnung.Kunde_Nr ausgefüllt sein muss. Dieses ist aber ausgefüllt! Daten genauso manuell in die Tabelle Rechnung eintragen funktioniert.
Hier die DB:
https://www.dropbox.com/s/l1j8vo2wyewvi78/DB.accdb?dl=0
Hi,
das Feld ist an kein Tabellenfeld gebunden, da du einen Ausdruck als Steuerelementinhalt eingetragen hast. Versuche mal, diesen Ausdruck als Standardwert einzutragen.
Evtl. musst du das Steuerelement dann nach Eintrag/Auswahl der Bestell-Nr. aktualisieren.
Da du somit eh VBA-Code dazu brauchst, kannst du auch gleich die Kundennummer direkt zuweisen.
Hi,
wo müsste ich das denn mit der aktualisierung anklicken? Oder wo genau muss ich einen Code dazu schreiben. Mit dem Ausdruck als Standardwert steht dort #Fehler.
Wenn das nicht funktioniert mit dem Standardwert, bleibt dir nur die VBA-Lösung.
Die könnte folgendermaßen aussehen:Private Sub Bestell_Nr_AfterUpdate()
Me.Kunde_Nr = DLookup("Kunde", "Bestellung", "[Bestell_Nr] = " & Me!Bestell_Nr)
End Sub
Hi
ok und wo müsste ich den COde ganz genau einfügen? Komme ich da über Rechtsklick auf das Textfeld hin ?
Du gehst im Formularentwurf auf das Feld mit der Bestellnummer, lässt dir die Eigenschaften anzeigen, gehst auf Register "Ereignisse" -> "Nach Akltualisieren" und wählst dort "Ereignisprozedur". Dann gehst du über die drei Punkte in den VBA-Editor.
Danke
aber leider kommt immer noch der Fehler
Hast du denn auch den Ausdruck aus dem Standardwert entfernt?
... oder welchen Fehler meinst du?
Hi
ja habe ich. Meine den gleichen Fehler den ich zuvor genannt hatte.
Zitat von: ide89 am Dezember 19, 2014, 17:21:30Mit dem Ausdruck als Standardwert steht dort #Fehler.
Zitat von: ide89 am Dezember 19, 2014, 23:18:18Meine den gleichen Fehler den ich zuvor genannt hatte.
Sorry, aber damit kann ich nichts anfangen, das passt nicht zu den vorgeschlagenen Aktionen.
Beschreibe bitte ganz genau
was du tust und was zu
welchem Fehler führt.