Neuigkeiten:

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

Mobiles Hauptmenü

Daten aus einem ungebundenem Formular in eine Tabelle speichern

Begonnen von Chris777777, Dezember 05, 2017, 11:36:20

⏪ vorheriges - nächstes ⏩

Chris777777

Hallo zusammen,

dieses Thema wurde sicherlich schon öfter behandelt, allerdings habe ich beim Durchforsten des Forums nicht die richtige Lösung meines Problems gefunden.

Ich habe ein ungebundenes Formular erstellt und möchte nun, dass die Daten, nachdem auf den Button "Datensatz speichern", geklickt wurde, die eingetragenen Daten in eine Tabelle gespeichert werden.

Mein Formular habe ich angehängt.

Vielen Dank für Eure Hilfe
Gruß,
Chris777777

MzKlMu

Hallo,
warum tust Du Dir das an und arbeitest mit einem ungebunden Formular?
Das kann Access mit einem gebunden Formular viel besser.

Welchen Grund siehst Du ungebunden zu arbeiten ?
Gruß Klaus

Chris777777

Ich bin ein absoluter Anfänger was Access betrifft. Ich dachte, dass ich bei einem ungebundenem Formular das Layout frei gestalten kann und dies bei einem gebundenem Formular nicht geht

MzKlMu

#3
Hallo,
Du kannst auch mit einem gebundenen Formular das Layout völlig frei gestalten, ohne Einschränkung.
Gruß Klaus

Lachtaube

Wollte ich mir eine Route bei Google Maps berechnen lassen oder die Wetterdaten für einen Ort bei OpenWeather.com erfahren, ist ein ungebundenes Formular bestimmt für die Eingabe von Parametern geeignet. Um neue Daten in eine definierte Struktur (Tabelle) einzutragen, nutze ich aber lieber ein gebundenes Formular, in dem ich typensicher meine Daten (oft sogar ohne jeden weiteren Code) einpflegen kann. Frei nach dem Motto: soviel Code wie nötig - aber nicht soviel Code wie möglich.

Wäre dem nicht so, hätte Access als GUI für mich keinen Wert und könnte auch durch ein beliebiges anderes Framework ersetzt werden, wo ich meine Datenbankzugriffe dann auch selbst programmieren müsste.
Grüße von der (⌒▽⌒)

Chris777777

ok, danke Euch für Eure Rückmeldungen :)
Das habe ich nun soweit gemacht. Die Einträge werden automatisch gespeichert. Ich möchte trotzdem noch zwei Schaltflächen in das Formular einfügen:
1. "Datensatz speichern": Ich weiß, dass die Einträge auch ohne diesen Button gespeichert werden, aber dieses Formular wird von vielen Leuten ausgefüllt. Daher möchte ich einen sichtbaren Button zur Speicherung einbauen
2. "Anwendung beenden": Damit soll das Formular geschlossen werden, ohne dass bereits eingegebene Daten gespeichert werden. Zusätzlich soll noch ein Fenster aufpoppen mit dem Text "Anwendung wirklich beenden?"

Ist das möglich?
Viele Grüße,
Chris777777

Beaker s.a.

Hallo Chris,
1.
Private Sub cmdSave_Click()
    If Me.Dirty Then Me.Dirty = False
End Sub

2.
Private Sub cmdQuit_Click()
    If MsgBox( _
               Prompt:="Anwendung wirklich beenden?", _
               Buttons:=vbYesNo) = vbYes Then
        If Me.Dirty Then Me.Undo
'Form schliessen
        DoCmd.Close acForm, Me.Name
'Programm beenden
        Application.Quit
    End If
End Sub

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris777777

Etwas verspätet, aber klappt wunderbar. Danke :)

Gruß,
Chris

Chris777777

Hallo zusammen,

ich habe noch ein Problem mit dem Speichern der Daten. Ich hatte ja bereits erwähnt, dass ich gerne einen Button zum speichern habe möchte, auch wenn der Datensatz auch so gespeichert wird. Das ist jetzt aber gerade mein Problem. Ich habe folgenden Code eingegeben:

Private Sub Datensatz_speichern_Click()
If MsgBox( _
           Prompt:="Datensatz speichern?", _
           Buttons:=vbYesNo) = vbYes Then
        If Me.Dirty Then Me.Dirty = False
     End If
DoCmd.GoToRecord acDataForm, "frmWE", acNewRec
End Sub

Das klappt soweit auch alles wunderbar. Allerdings werden alle Datensätze gespeichert. Auch diese, wenn der Benutzer auf "Nein" klickt. Diese Daten sollen jedoch nicht gespeichert werden. Hat jemand eine Lösung dafür?

Viele Grüße,
Chris

Beaker s.a.

#9
Hallo Chris,
Du musst den Wechsel zu einem neuen Datensatz mit in den True-Part einfügen.

Edit: habe noch eine bessere Variante gefunden
Private Sub Datensatz_speichern_Click()
    If Me.Dirty Then
        If MsgBox( _
                   Prompt:="Datensatz speichern?", _
                   Buttons:=vbYesNo) = vbYes Then
            DoCmd.GoToRecord acDataForm, "frmWE", acNewRec
            'löst das Speichern wieder automatisch aus da Datensatzwechsel
        Else
           Me.Undo
        End If

End Sub

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris777777

Da erhalte ich nun ich Fehlermeldung:

If-Block ohne End If...

Chris777777

Ahh es fehlte nur ein End If in der Formel.

Der Rest klappt super!

Danke :)

Viele Grüße,
Chris

Beaker s.a.

Sorry, kann passieren
           Me.Undo
        End If
    End If
End Sub
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Chris777777

Hallo zusammen,

ich habe nun noch folgendes Problem. Nachdem die Daten in dem Formular gespeichert wurden, soll wieder ein Blanko-Formular erscheinen.
Dafür sollte ja dieser Code: 
DoCmd.GoToRecord acDataForm, "frmWE", acNewRec
verantwortlich sein.
Das klappt auch soweit. Sobald ich das Formular geschlossen habe und wieder öffne, erscheinen die Einträge der letzten Speicherung. Daher habe ich im Ereignisblatt unter "beim Öffnen" nochmal denselben Code eingesetzt. Das klappt soweit auch. Kann man diese beiden Schritte vielleicht auch zusammenfassen?
Sobald ich das Formular öffne, erscheinen unten links die Anzahl der Datensätze. Klicke ich mit den Pfeilen auf vorherige Datensätze, können diese abgeändert werden. Dieses soll unterbunden werden. Sobald ein Datensatz gespeichert wurde, soll dieser nicht mehr abgeändert werden können.
Dafür soll es jedoch möglich sein, einen bereits abgespeicherten Datensatz mit einem Button wieder zu löschen.
Kennt da jemand eine Lösung?
Danke Euch und viele Grüße,
Chris

Beaker s.a.

Hallo Chris,
ZitatSobald ich das Formular geschlossen habe und wieder öffne, erscheinen die Einträge der letzten Speicherung. Daher habe ich im Ereignisblatt unter "beim Öffnen" nochmal denselben Code eingesetzt. Das klappt soweit auch. Kann man diese beiden Schritte vielleicht auch zusammenfassen?
Das habe ich nicht verstanden! Welchen gleichen Code beim Öffnen?
Ging doch ums Speichern.
ZitatSobald ein Datensatz gespeichert wurde, soll dieser nicht mehr abgeändert werden können.
Das kannst du beim Ereignis "Beim Anzeigen" (VBA: Form_Current) steuern
Private Sub Form_Current()
    If Not Me.Record Then Me.AllowEdits = False
End Sub

Zitateinen bereits abgespeicherten Datensatz mit einem Button wieder zu löschen.
Dafür ist die Eigenschaft "Löschen zulassen" (VBA: .AllowDeletions) zuständig
(Standard ist True).

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)