Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Formularfeld Wert automatisch eintragen, in festem bereich
zurück: Synchronisierung Unterformular weiter: Formular zum Datensatz eintragen erkennt die Beziehung nicht Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
thaclone
Einsteiger


Verfasst am:
07. Jun 2011, 16:40
Rufname:

Formularfeld Wert automatisch eintragen, in festem bereich - Formularfeld Wert automatisch eintragen, in festem bereich

Nach oben
       Version: Office 2010

Hallo Zusammen,

ich habe ien Formular kreirt, dieses trägt logischerweise Daten in eine Tabelle ein.
Es ist eine Kursdatenbank.

Es gibt die Tabelle Teilnehmer und Kurs. Über ein Formular wird ein Teilnehmer eingetragen und einem Kurs zugeordnet und der Kurs dann in der Tabelle Teilnehmer eingetragen.
Pro Kurs dürfen maximal 20 Teilnehmer angemeldet sein.

Das Formular dient zur Erfassung der Teilnehmer und hat auch das Feld mit der zurordnung zum Kurs enthalten.
Man trägt zuerst Name, Vorname usw. ein. Dann wählt man aus einem Dropdown Menü den Kurs.
Nun soll dem Teilnehmer also eine Platznr. zuegeteilt werden. Zwischen 1-20. Wie bekomme ich es hin, dass mir das Access automatisch macht, indem er sozusagen immer die Platznr. des letzten Teilnehmers nimmt und + 1 addiert.

Am tollsten, aber kein must-have wäre dann noch eine Warnung, wenn ich versuche einen 21. Teilnehmer einzutragen. Aber das wäre wirklich nur nice-to-have.

Kann mir jemand helfen. ICh vermute es wird eine Schleife in VBA sein, aber mir ist die Logik nciht ganz klar um so eine Schleife aufzubauen.

Gruß thaclone
Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
07. Jun 2011, 17:10
Rufname: David
Wohnort: Bremer Speckgürtel


AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Hi,

vorab sollte vielleicht noch geklärt werden, ob ein Teilnehmer auch aus dem Kurs wieder "rausfliegen" kann und somit seinen Platz verliert, die Platznummer aber wieder frei ist.

Wenn nicht, könnte über ein DCount ermittelt werden, wieviele Teilnehmer der Kurs hat (Da wäre dann auch eine Warnung möglich für Nr. 21 ff) oder mit DMax die höchste Teilnehmer Nummer innerhalb des Kurses ermittelt werden.

Bei beiden gibt es allerdings Probleme mit Lücken.
Problem bei DCount:
Teilnehmernummern: 1, 2, 3, 5, 6
Der nächste Teilnehmer bekommt die Nummer 6, weil bisher 5 Teilnehmer eingetragen sind (Teilnehmer 4 hat sich wieder abgemeldet)

Problem bei DMax:
Teilnehmernummern: 1, 2, 3, 5, 6
Der nächste Teilnehmer bekommt die Nummer 7, weil die höchste Teilnehmernummer 6 ist.

Das ganze in einer Schleife zu machen und bei jeder einzelnen Nummer zu kontrollieren ob es sie schon gibt könnte recht lange dauern.

Brauchst du denn unbedingt Teilnehmernummern oder würde es auch ausreichen die Teilnehmerzahl im Formular anzeigen zu lassen und beim Versuch einen 21. Teilnehmer dem Kurs hinzuzufügen eine Fehlermeldung auszuspucken?

Etwas wie
Code:
Private Sub Form_Current()
    If Me.NewRecord And DCount("DeinFeld", "DeineTabelle" _
                             , "KursID = " & Me.KursID) = 20 Then
        MsgBox "Der Kurs ist voll!"
    End If
End Sub
(ungetestet einfach mal so hingekritzelt)
_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
07. Jun 2011, 17:46
Rufname:

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Es wäre schön, wenn es so funktionieren, würde, da diese Nummer mitsamt der Kursnummer, dann auf die Teilnahmebescheinigung muss, die ich dann mit Hilfe der Tabelle oder einer Abfrage rauslassen will.
Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
07. Jun 2011, 17:59
Rufname: David
Wohnort: Bremer Speckgürtel

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

und was ist nu mit
Zitat:
vorab sollte vielleicht noch geklärt werden, ob ein Teilnehmer auch aus dem Kurs wieder "rausfliegen" kann und somit seinen Platz verliert, die Platznummer aber wieder frei ist.
? Wink
_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
07. Jun 2011, 18:11
Rufname:


AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

hi,

sry, wollte grad noch was editieren.
Wie füge ich deinen Code ein, also was für ein Feld muss ich mit was einfügen, dass er mir die aktuelle Teilnehmerzahl anzeigt.

Also wenn ein Teilnehmer rausfliegt sollte die Nummer wieder frei werden.
Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
07. Jun 2011, 20:06
Rufname: David
Wohnort: Bremer Speckgürtel

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Zitat:
Also wenn ein Teilnehmer rausfliegt sollte die Nummer wieder frei werden.
Das Freiwerden ist auch nicht das Problem. Teilnehmer raus = Nummer raus.
Das Problem ist die Wiedervergabe der (kleinsten freien) Nummer.
Ich grüble, wie man Access beibiegt die kleinste Zahl zu nehmen, die kleiner oder gleich 20 ist ohne mit einem DLookup innerhalb einer Schleife, die 20mal durchläuft, zu prüfen ob die Teilnehmernummer schon belegt ist. So 20 DLookups dauern schon etwas...

Möglicherweise ließe sich da etwas mit einer Tabelle machen, die nur die Zahlen von 1 bis 20 enthält (so stupide es auch klingt) und dann mit einer kleinen SQL-Abfrage ermitteln welche Teilnehmernummer die kleinste noch nicht vergebene ist.

Etwas in der Art wie
Code:
SELECT Min(zahl)
FROM zahlen
WHERE  zahl Not In (SELECT Teilnehmernummer
                    FROM   DeineTabelle
                    WHERE  Kurs = " & Me!Kurs & ")"
Dabei wäre zahlen die Tabelle, in der im Feld zahl die Zahlen von 1 bis 20 stehen.
Vielleicht kannst du das als Denkanstoß weiterverwenden. Es würde mich wundern wenn die Abfrage, wie sie oben steht schon funktioniert. Getestet habe ich es aber auch nicht. Laughing

Um in einem Feld deines Formulares die Anzahl der Kursteilnehmer anzuzeigen, versuch es mal mit einem neuen Textfeld, in das du als Steuerelementinhalt
Code:
=DomAnzahl("*";"DeineTabelle";"[KursfeldInTabelle] = " & [KursfeldInFormular])
eingibst.

Namen müssen angepasst werden. Sollte ja ersichtlich sein, was ich meine.
So (oder so ähnlich) solltest du zumindest die Anzahl der Teilnehmer rauskriegen.

_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
07. Jun 2011, 20:27
Rufname:

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Also deine ersten Lösungsansatz nehme ich mir mal vor.

Der für das Zählen der Teilnehmer, zeigt mir leider nur eine 0 an.
Kann das damit zusammenhängen, dass ich das Feld Kurs_Nr in der Tabelle: Tabelle_TN in der Tabellendefinition über ein Listenfeld aus der Tabelle: Tabelle_Kurs ziehe?
Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
07. Jun 2011, 20:36
Rufname: David
Wohnort: Bremer Speckgürtel

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Die eine Tabelle holt sich Daten aus dem Listenfeld einer anderen Tabelle?
1. Tabellen holen sich nichts aus anderen Tabellen (Abfragen schon)
2. Seit wann gibt es Listenfelder in Tabellen?
Shock
Das musst du nochmal erklären...

Noch was positives zum Schluss: Dass er 0 anzeigt und nicht #Fehler ist schonmal gut! Er hat was gefunden, aber es passt nichts zum Kriterium. Smile

_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
07. Jun 2011, 20:49
Rufname:

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Sry für doppelpost,

Ich habe jetzt folgende Abfrage in den Steuerelementinhalt des Formular feldes TN_Platz in der Tabelle: Tabelle_TN reingepackt.

Ich habe wie du sagtest eine zusätzliche Tabelle (Tabelle_zahlen) mit der Spalte zahl und dem zeilen 1-20 eingefügt.
Allerdings keine Beziehungen zwischen den Tabellen. Weiß nicht, ob man das machen muss.
Code:
= SELECT Min(zahl) FROM Tabelle_zahlen WHERE zahl Not In (SELECT TN_Platz FROM Tabelle_TN WHERE Kurs_Nr = " & Me!Kurs_Nr & ")"
Fehlermeldung:
Zitat:
Sytaxfehler in der UNterabfrage: Schreiben sie die Unterabfrage in Klammern.
Wenn ich als Steuerelementinhalt TN_Platz und in VBA des Formulars dann folgendes eintrage:
Code:
Private Sub TN_Platz_GotFocus()
SELECT Min(zahl) FROM Tabelle_zahlen WHERE zahl NOT IN (SELECT [TN_Platz] FROM [Tabelle_TN] WHERE [Kurs_Nr] = " & Me!Kurs_Nr & ")"
End Sub
Sagt er mir: Syntaxfehler: Erwartet: Case

Kenne mich leider mit der Programmiersprache von vba nur sehr rudimentär aus.
Deswegen verstehe ich nicht was er mit Case meint.
Nachtrag: thaclone am 07. Jun 2011 um 20:55 hat folgendes geschrieben:
Zu der Tabelle die sich daten holt. Doch das geht. War auch sehr erstaunt als mir ein Kollege das gezeigt hat.
Bei der Tabellendefinition, gibt es unten immer noch den Reiter Nachschlagen und dort kann ich dann Listenfeld eintragen und dann kann ich eine Quelltabelle und die einzutragende Spalte holen. Läuft wahrscheinlich über eine interne Abfrage.



Tabelle.jpg
 Beschreibung:
 Dateigröße:  89.3 KB
 Angeschaut:  245 mal

Tabelle.jpg


Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
07. Jun 2011, 21:43
Rufname: David
Wohnort: Bremer Speckgürtel

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Zitat:
Allerdings keine Beziehungen zwischen den Tabellen.
Brauch auch nicht.
Zitat:
Syntaxfehler: Erwartet: Case
Er meint Select Case, aber das ist ne ganz andere Nummer als wir wollen. Select Case ist eine VBA-Anweisung
Code:
= SELECT Min(zahl) FROM Tabelle_zahlen WHERE zahl NOT IN (SELECT TN_Platz FROM Tabelle_TN WHERE Kurs_Nr = " & Me!Kurs_Nr & ")"
dagegen ist ein SQL-String

2 verschiedene Sprachen die mit ein wenig gut zureden auch einigermaßen miteinander arbeiten.

Dieser SQL-String hat allerdings nichts in einem Steuerelementinhalt zu suchen, da dann immer nur sozusagen temporär die kleinste freie Teilnehmernummer ermittelt würde (wenn er denn funktionieren würde). Da würde bei allen Teilnehmern eines Kurses die gleiche Zahl stehen.

Erstell mal eine neue Abfrage, öffne diese in der SQL-Ansicht und schreibe dort
Code:
SELECT Min(zahl)
FROM   Tabelle_zahlen
WHERE  zahl Not In (SELECT TN_Platz
                    FROM   Tabelle_TN
                    WHERE  Kurs_Nr = Forms![deinFormular]![Kurs_Nr];
[deinFormular] musst du noch anpassen. Einfach den Namen des Formulares reinsetzen.

Die Abfrage speichern und wenn dein Formular offen ist und du die Abfrage öffnest sollte sie die kleinste freie Nummer darin stehen.

Die kannst du dir dann mit VBA rausfischen und beim Eintragen eines neuen Teilnehmers in das Feld Teilnehmernummer eintragen lassen.

_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
08. Jun 2011, 13:53
Rufname:

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Also die Abfrage funktioniert schon mal. Das ist echt super. riesen Dank.

Kann man diese Abfrage bzw. des ausgegebenen Wert jetzt in ein gesondertes Textfeld anzeigen lassen, sodass man sozusagen gesagt bekommt, welches Wert man in des Feld Platz_Nr eintragen muss.
Noch besser natürlich, dass sich der Wert automatisch in das Feld Platz_Nr einträgt,
wenn der Fokus im Formular auf das Feld Platz_Nr kommt, dass er den Wert automatisch einträgt.
Gallo24
Meistens klappt's (nur tlw. zu umständlich)


Verfasst am:
10. Jun 2011, 12:16
Rufname: David
Wohnort: Bremer Speckgürtel

AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

Hi,

Du könntest ein DLookup auf die Abfrage in das GotFocus Ereignis des PlatzNr-Feldes machen, aber das ist ja eigentlich unsinnig, weil du dafür eben den Fokus auf das Feld legen müsstest. Ich würde es eher in das AfterUpdate von Kurs_Nr legen. Dann wird die Platznr eingetragen nachdem klar ist um welchen Kurs es geht.
Code:
    Me!Platz_Nr = DLookup("FeldInAbfrage", "DeineAbfrage")

_________________
LG
David
Bitte um Feedback! Will ja wissen, ob ich helfen konnte. Auch so lernt man.
thaclone
Einsteiger


Verfasst am:
10. Jun 2011, 17:45
Rufname:


AW: Formularfeld Wert automatisch eintragen, in festem berei - AW: Formularfeld Wert automatisch eintragen, in festem berei

Nach oben
       Version: Office 2010

wooooohoooooo,

sehr geil. Es funktioniert wirklich. Ein riesen, riesen großes Dankeschön an dich.

Dieses Thema lag mir schon seit Wochen auf dem Herzen und nun ist es fertig.

Danke vielmals.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Automatisch nächste freie Nummer aus einem Nummerkreis? 4 derBovie 3325 08. Mai 2005, 20:03
'n Access User Automatisch nächste freie Nummer aus einem Nummerkreis?
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen verbinden trotz Auto Wert ID 3 Miss Ahnungslos 7788 06. Mai 2005, 22:57
Dalmatinchen 2 Tabellen verbinden trotz Auto Wert ID
Keine neuen Beiträge Access Tabellen & Abfragen: Hochzählen ab bestimmten Wert 3 vitalik 893 06. Mai 2005, 12:47
stpimi Hochzählen ab bestimmten Wert
Keine neuen Beiträge Access Tabellen & Abfragen: Überprüfen ob Wert in Tabelle = NULL 3 Cossack 1498 18. Apr 2005, 17:52
Gast Überprüfen ob Wert in Tabelle = NULL
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragen im Formular aufrufen, automatisch bestätigen 3 Calvin22 1606 12. Apr 2005, 12:12
Willi Wipp Abfragen im Formular aufrufen, automatisch bestätigen
Keine neuen Beiträge Access Tabellen & Abfragen: WHERE Wert Is manchmal Null 1 JTR 606 11. Feb 2005, 17:50
lothi WHERE Wert Is manchmal Null
Keine neuen Beiträge Access Tabellen & Abfragen: Lagerstellplätze automatisch zuweisen in Datenbank 1 Sastian 1404 01. Feb 2005, 09:20
stpimi Lagerstellplätze automatisch zuweisen in Datenbank
Keine neuen Beiträge Access Tabellen & Abfragen: Zahl eintragen mit "mm" am Ende. Formatfrage 1 webnaex 499 04. Jan 2005, 19:02
Skogafoss Zahl eintragen mit "mm" am Ende. Formatfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Datum und Uhrzeit automatisch speichern 3 peinberger 1119 30. Dez 2004, 10:33
mapet Datum und Uhrzeit automatisch speichern
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit sum, max Wert und verhätnis summe/max anzeigen? 1 IV 2531 04. Nov 2004, 18:14
Skogafoss Abfrage mit sum, max Wert und verhätnis summe/max anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: SQL - Abfrage ob ein Wert in der Tabelle enthalten ist 1 notausgang 1301 23. Sep 2004, 09:42
stpimi SQL - Abfrage ob ein Wert in der Tabelle enthalten ist
Keine neuen Beiträge Access Tabellen & Abfragen: Einen Wert per Abfrage in mehreren Tabellenspalten suchen 2 Danny G. 606 10. Sep 2004, 18:22
Danny G. Einen Wert per Abfrage in mehreren Tabellenspalten suchen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Editoren Forum