Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access - Programm Kinderferienprogramm

Begonnen von sebi95, Juni 08, 2015, 12:30:39

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
wenn Du einen Button einfügst, kommt der Assi automatisch. Dann kannst Du die gewünschte Aktivität (für den Button) auswählen.

Hast Du noch nie einen Button erstellt ?
Gruß Klaus

sebi95

Zitat von: MaggieMay am Juli 17, 2015, 11:21:32
Formularentwurf -> Register Entwurf -> Steuerelemente: Schaltfläche.
Der Assistent kommt dann von ganz allein - jedenfalls bei mir. ;-)

Check das grad net mit dem Assistenten, weis net was ich da eingeben muss.
nunja des ist jetzt erstmal net so wichtig wichtiger ist dies:

Wenn man eine Aktivität auswählt, bei der sich aber schon bis zur Maximalteilnehmerzahl Kinder angemeldet haben sollte ein Popup "Hinweis: Höchstteilnehmerzahl ist überschritten! Bitte den Teilnehmer auf die Warteliste schreiben!" erscheinen, das man mit "OK" wegklicken kann.

Das ist ja schon so halb fertig drin, aber wenn ich im formular auf die schaltfläche drücke passiert nichts.

MaggieMay

ZitatCheck das grad net mit dem Assistenten, weis net was ich da eingeben muss.
Wie sieht das denn bei dir aus, was bietet dir der Assistent an, wenn du einen Button ins Formular einfügst?

ZitatDas ist ja schon so halb fertig drin
Das Change_Ereignis ist hier nicht geeignet, nimm statt dessen das Ereignis BeforeUpdate, das lässt sich mit Hilfe der Cancel-Option abbrechen, sodass die Auswahl mit UnDo rückgängig gemacht werden kann.
Zitataber wenn ich im formular auf die schaltfläche drücke passiert nichts
Welche meinst du?
Freundliche Grüße
MaggieMay

sebi95

Zitat von: MaggieMay am Juli 17, 2015, 11:36:13
ZitatCheck das grad net mit dem Assistenten, weis net was ich da eingeben muss.
Wie sieht das denn bei dir aus, was bietet dir der Assistent an, wenn du einen Button ins Formular einfügst?

ZitatDas ist ja schon so halb fertig drin
Das Change_Ereignis ist hier nicht geeignet, nimm statt dessen das Ereignis BeforeUpdate, das lässt sich mit Hilfe der Cancel-Option abbrechen, sodass die Auswahl mit UnDo rückgängig gemacht werden kann.
Zitataber wenn ich im formular auf die schaltfläche drücke passiert nichts
Welche meinst du?

Sorry ich versteh nur Bahnhof .... ich kenne die ausdrücke nicht ....
meine die schaltfläche im Unterformular "Teilnehmer_Aktivitaet_UF"

MaggieMay

Im Unterformular gibt es nur eine Schaltfläche (=Button) zum Löschen eines Eintrags - mehr nicht. Ich weiß also immer noch nicht was du gemeint hast.

Du musst konkrete Fragen stellen, mit "versteh nur Bahnhof" kommen wir nicht weiter.
Freundliche Grüße
MaggieMay

sebi95

Zitat von: MaggieMay am Juli 17, 2015, 11:44:33
Im Unterformular gibt es nur eine Schaltfläche (=Button) zum Löschen eines Eintrags - mehr nicht. Ich weiß also immer noch nicht was du gemeint hast.

Du musst konkrete Fragen stellen, mit "versteh nur Bahnhof" kommen wir nicht weiter.

Kenne diese Begriffe nicht:  BeforeUpdate, das lässt sich mit Hilfe der Cancel-Option abbrechen, sodass die Auswahl mit UnDo

sebi95

Hier mal die bisherige Datenbank, vllt, kannst du mal das was ich eingepflegt hab überprüfen.

MzKlMu

Hallo,
ich würde mich ja auch gezielter beteiligen, aber ich habe nur A2003 (MDB) kann also die ACCDB nicht ansehen bzw. öffnen.
Gruß Klaus

MaggieMay

Mit "BeforeUpdate" ist das Ereignis "Vor Aktualisierung" des Kombifeldes im Unterformular gemeint.
Der Code dazu könnte folgendermaßen aussehen:
Private Sub AktivitaetenID_F_BeforeUpdate(Cancel As Integer)
    'Wenn die Aktivität ausgebucht ist Meldung ausgeben
    Dim MaxAnzahl As Long
    Dim IstAnzahl As Long
   
    'Wieviele können teilnehmen?
    MaxAnzahl = Nz(DLookup("Maximalteilnehmerzahl", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F), 0)
    'wieviele sind angemeldet?
    IstAnzahl = Nz(DCount("*", "Teilnehmer_Aktivitaet", "AktivitaetenID_F=" & Me.AktivitaetenID_F), 0)
   
    If IstAnzahl < MaxAnzahl Then
        If Me.Parent.txtAlter < 6 Or _
            DLookup("?????", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F) = -1 Then
            Me.txtPreis = 0
        Else
            Me.txtPreis = DLookup("PreisKind", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F)
        End If
        DoCmd.GoToRecord , , acNext
    Else
        MsgBox "Diese Aktivität kann nicht mehr gebucht werden," & vbCrLf & _
                "da die Höchstteilnehmeranzahl erreicht ist!", vbCritical, "Teilnehmeranzahl überschritten"
        Cancel = True
        Me.Undo
    End If
End Sub

Am Ende wird mit "Cancel=True" das Speichern verhindert und mit "UnDo" der aktuelle Eintrag zurückgesetzt.

Fragen:
- Was willst du da mit DLookUp auslesen, ein Datenfeld was es noch gar nicht gibt?
- Ist es tatsächlich so, dass wenn die Maximalanzahl fehlt, keine Anmeldung möglich sein soll?
Freundliche Grüße
MaggieMay

sebi95

Zitat von: MaggieMay am Juli 17, 2015, 11:56:41
Mit "BeforeUpdate" ist das Ereignis "Vor Aktualisierung" des Kombifeldes im Unterformular gemeint.
Der Code dazu könnte folgendermaßen aussehen:
Private Sub AktivitaetenID_F_BeforeUpdate(Cancel As Integer)
    'Wenn die Aktivität ausgebucht ist Meldung ausgeben
    Dim MaxAnzahl As Long
    Dim IstAnzahl As Long
   
    'Wieviele können teilnehmen?
    MaxAnzahl = Nz(DLookup("Maximalteilnehmerzahl", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F), 0)
    'wieviele sind angemeldet?
    IstAnzahl = Nz(DCount("*", "Teilnehmer_Aktivitaet", "AktivitaetenID_F=" & Me.AktivitaetenID_F), 0)
   
    If IstAnzahl < MaxAnzahl Then
        If Me.Parent.txtAlter < 6 Or _
            DLookup("?????", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F) = -1 Then
            Me.txtPreis = 0
        Else
            Me.txtPreis = DLookup("PreisKind", "Aktivitaeten", "AktivitaetenID=" & Me.AktivitaetenID_F)
        End If
        DoCmd.GoToRecord , , acNext
    Else
        MsgBox "Diese Aktivität kann nicht mehr gebucht werden," & vbCrLf & _
                "da die Höchstteilnehmeranzahl erreicht ist!", vbCritical, "Teilnehmeranzahl überschritten"
        Cancel = True
        Me.Undo
    End If
End Sub

Am Ende wird mit "Cancel=True" das Speichern verhindert und mit "UnDo" der aktuelle Eintrag zurückgesetzt.

Frage:
Was willst du da mit DLookUp auslesen, ein Datenfeld was es noch gar nicht gibt?

Ich weis grad lebst nich was ich damit wollte. ok danke.

MaggieMay

#55
Zitat von: sebi95 am Juli 17, 2015, 11:51:34vllt, kannst du mal das was ich eingepflegt hab überprüfen.
Dies hast du noch nicht umgesetzt:
ZitatHabe gerade gesehen, dass bei Änderung des Alters die Datensatzherkunft des Kombifeldes geändert wird, das muss raus, stattdessen kannst du mit:
Code: [Auswählen]

Me.Teilnehmer_AktivitaetUF.AktivitaetenID_F.Requery

das Kombifeld aktualisieren. (Gleiches gilt für das Ereignis "Beim Anzeigen".)
Und auch das sollte bei Änderung des Alters noch beachtet werden:
ZitatAllerdings müssten dann auch die bereits vorhandenen Aktivitäten geprüft werden, ob sie noch gültig sind.

PS:
Dem neuen Button solltest du noch einen sinnvollen Namen geben. Dann kannst du in der Ereignisprozedur zum Klick-Ereignis folgende Codezeile einfügen:
DoCmd.GoToRecord , , acNewRecord
Freundliche Grüße
MaggieMay

sebi95

Zitat von: MaggieMay am Juli 17, 2015, 12:19:49
Zitat von: sebi95 am Juli 17, 2015, 11:51:34vllt, kannst du mal das was ich eingepflegt hab überprüfen.
Dies hast du noch nicht umgesetzt:
ZitatHabe gerade gesehen, dass bei Änderung des Alters die Datensatzherkunft des Kombifeldes geändert wird, das muss raus, stattdessen kannst du mit:
Code: [Auswählen]

Me.Teilnehmer_AktivitaetUF.AktivitaetenID_F.Requery

das Kombifeld aktualisieren. (Gleiches gilt für das Ereignis "Beim Anzeigen".)
Und auch das sollte bei Änderung des Alters noch beachtet werden:
ZitatAllerdings müssten dann auch die bereits vorhandenen Aktivitäten geprüft werden, ob sie noch gültig sind.

PS:
Dem neuen Button solltest du noch einen sinnvollen Namen geben. Dann kannst du in der Ereignisprozedur zum Klick-Ereignis folgende Codezeile einfügen:
DoCmd.GoToRecord , , acNewRecord


Was ist ein Kombifeld ....????

MzKlMu

Hallo,
Kombifeld = Kombinationsfeld = DropDown = Ein Feld zum Aufklappen mit dem Pfeil.

PS:
Warum wiederholst Du komplette Beiträge als Zitat, das ist ziemlich sinnfrei und verlängert nur unnötigerweise die Themen.
Gruß Klaus

sebi95

sorry ok. wo henau musst das mit dem kombifeld hin? kannst du mir den gesamten code hier rein stellen?

Warum werden die Preise jetzt nicht mehr angezeigt  ???, und der Button zum löschen einer aktivität funktioniert auch net?!

MzKlMu

Hallo,
wie ich bereits in #52 schreib, kann ich keine ACCDBs öffnen. ich habe nur Access2003 (MDB).
Gruß Klaus