Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Brusellise am März 23, 2017, 10:43:24

Titel: Ungebundene Felder / Formular aktualiseren
Beitrag von: Brusellise am März 23, 2017, 10:43:24
Hi,

ich bräuchte mal wieder eure Hilfe.

Ich habe ein Formular in dem sich ungebundene Felder befinden.
In Zukunft soll es so sein, dass der User hier seine Eingaben macht und der Datensatz dann per Speicher Button erzeugt wird.

Der Code lautet:

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb()
Set rs = db.OpenRecordset("tblBue_Entladeschein", DB_OPEN_DYNASET)

rs.AddNew
rs!Datum = Me!Datum
rs!Kunde = Me!cboKunde
rs!Spediteur = Me!Spediteur
rs!LKWKennzeichen = Me!Kennzeichen
rs!Zollpapiere = Me!Zollpapiere
rs!EingangEuroFP = Me!EUROFP
rs!EingangEuroGP = Me!EUROGP

rs.Update
rs.Close: Set rs = Nothing
Set db = Nothing

Response = acDataErrAdded
End Sub


Dies klappt auch soweit. Nun habe ich jedoch noch ein Problem.
Ich möchte nach dem Anlegen des Datensatzes noch einen Report ausführen. Dabei soll automatisch der Report mit dem neu erzeugten Datensatz ausgedruckt werden.

Dies wollte ich wie folgt realisieren:

DoCmd.OpenReport "rpt_WE_Entladeschein", , , "Entladescheinnummer =" & Me!ID

Mein Problem ist nun, dass im Formular das Feld "ID" nach dem speichern nicht aktualisiert wird. Bei dem Feld "ID" handelt es sich um ein gebundenes Feld derzeit. Trotzdem wird die Erstellung des neuen Datensatzes nicht automatisch erkannt.

Wie kann ich dies realisieren? Me!ID.Requery funktioniert nicht.

Danke für eure Tipps...
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: DF6GL am März 23, 2017, 10:53:23
Hallo,

sag mir bitte den Grund, warum Du ungebundene Textfelder und ein gebundenes Formular benutzt... 

ZitatBei dem Feld "ID" handelt es sich um ein gebundenes Feld derzeit.

Warum hier nun gebunden?


ZitatDim lngID as Long
.
.
rs!EingangEuroFP = Me!EUROFP
rs!EingangEuroGP = Me!EUROGP
   lngID = rs!ID
rs.Update
rs.Close: Set rs = Nothing
.
.
.
.
DoCmd.OpenReport "rpt_WE_Entladeschein", , , "Entladescheinnummer =" & lngID
.
.
.



Ist "Entladescheinnummer"   nun das ID- (Primärschlüssel-) Feld in der Tabelle?
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: Brusellise am März 23, 2017, 11:26:02
Hi,

danke für deine Hilfe.

Es gibt keinen Grund. Das Feld kann auch ungebunden bleiben.
War halt nur ein Versuch.

Ja, Entladescheinnummer = Primärschlüssel (Autowert).
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: DF6GL am März 23, 2017, 12:13:48
Hallo,

dann wirf dieses Form in die Tonne.

Erstell ein (gebundenes) Form auf Basis (Datenherkunft) der Tabelle und baue alle Tabellenfelder in den Detailbereich des Formulars (z. B. aus der Feldliste)  ein..  (Es gibt dafür auch einen Assistenten).

Dann erübrigt sich die ganze VBA-Geschichte bzgl. der Feld-Eingaben und Zuweisungen.

Das Öffnen des Berichtes könnte dann so aussehen:

Sub btnAktDSDrucken_Click()
DoCmd.OpenReport "rpt_WE_Entladeschein", , , "Entladescheinnummer =" & Me!Entladescheinnummer
End Sub
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: Brusellise am März 23, 2017, 12:22:07
Hi,

das ist mir klar, dass ich diese Möglichkeit hätte, aber ich würde dies sehr gerne mit den Button lösen.

Gibt es keine Möglichkeit dies per VBA zu lösen? Ich frage dies weil zu mir eine Empfehlung gibt, dies mit Gebundenen Felder zu lösen.

Gruß
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: Brusellise am März 23, 2017, 12:29:34
Hi,

es klappt doch so  :)

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim lngID As Long

Set db = CurrentDb()
Set rs = db.OpenRecordset("tblBue_Entladeschein", DB_OPEN_DYNASET)

rs.AddNew
rs!Datum = Me!Datum
rs!Erfasser = Me!Erfasser
rs!Buchungsart = Me!Buchungsart
rs!Kunde = Me!cboKunde
rs!Spediteur = Me!Spediteur
rs!LKWKennzeichen = Me!Kennzeichen
rs!Zollpapiere = Me!Zollpapiere
rs!EingangEuroFP = Me!EUROFP
rs!EingangEuroGP = Me!EUROGP

lngID = rs!Entladescheinnummer

rs.Update
rs.Close: Set rs = Nothing
Set db = Nothing

Response = acDataErrAdded
DoCmd.OpenReport "rpt_WE_Entladeschein", , , "Entladescheinnummer =" & lngID



Danke für deine Hilfe  ;D
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: DF6GL am März 23, 2017, 13:11:44
Hallo,

hast Du bezweifelt, dass es wie gepostet geht?    8) ;) :)

Trotzdem verstehe ich deine Vorgehensweise, bzw. Vorstellung nicht:

ZitatIch frage dies weil zu mir eine Empfehlung gibt, dies mit Gebundenen Felder zu lösen.

Das, was Du mit dem Recordset machst, sind keine gebundenen Felder...


"Gebundene Felder" sind es dann, wenn das Formular selber und ohne VBA die Eingabewerte speichert.
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: derArb am März 26, 2017, 15:46:10
Hallo,
@Brusellise: Lass den Quatsch und lass Dir im einfachsten Fall vom Formularassistenten
ein Formular erstellen, dessen Datenquelle dann Deine Tabelle oder Abfrage oder SQL-Code ist.
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: markusxy am März 27, 2017, 08:22:21
@Brusellise,
ungebundene Formulare haben nicht nur Nachteile, sondern auch Vorteile.
Access zeichnet sich in der Regel dadurch aus, dass man ohne viel Wissen eine DB erstellen kann, dann aber später bei höheren Anforderungen ansteht, sobald Access nicht mehr alles automatisch im Hintergrund durchführt.
Es ist daher ganz gut so eine Vorgehensweise zu beherrschen.

LG Markus
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: MzKlMu am März 27, 2017, 08:28:31
Hallo,
Zitatungebundene Formulare haben nicht nur Nachteile, sondern auch Vorteile.
Nenne mal einige Vorteile. Ich wüsste keine, auch bei höheren Anforderungen.
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: Frank77 am März 27, 2017, 22:52:19
Hallo!

Mann könnte auch sowas zusammen basteln fals du sowas suchst
Private Sub Click_1()
    Dim strSQL As String
    strSQL = "INSERT INTO tblBue_Entladeschein(Datum, Erfasser, Buchungsart, Kunde, Spediteur, LKWKennzeichen," & _
           " Zollpapiere, EingangEuroFP, EingangEuroGP )" & _
           " VALUES(" & Format$(Me!Datum, "\#yyyy\/mm\/dd hh\:nn\:ss\#") & ", " & Me!Erfasser & " ," & Me!Buchungsart & "" & _
             ", " & Me!cboKunde & " , '" & Me!Kennzeichen & "', '" & Me!Spediteur & "', '" & Me!Zollpapiere & "'" & _
             ", " & CInt(Me!EUROFP) & "," & CInt(Me!EUROGP) & ")"
    CurrentDb.Execute strSQL, dbFailOnError
    DoCmd.OpenReport "rpt_WE_Entladeschein", , , "Entladescheinnummer =" & CurrentDb.OpenRecordset("SELECT @@IDENTITY")
Exit_ErrHandler:
    Exit Sub
Err_ErrHandler:
    Select Case Err.Number
    Case 3022    'Fängt Indiziertes feld ab / Doppelte eingabe
    Case Else
        MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical
    End Select
    Resume Exit_ErrHandler
End Sub


Gruß Frank
Titel: Re: Ungebundene Felder / Formular aktualiseren
Beitrag von: markusxy am März 28, 2017, 08:13:50
Zitat von: MzKlMu am März 27, 2017, 08:28:31
Hallo,
Zitatungebundene Formulare haben nicht nur Nachteile, sondern auch Vorteile.
Nenne mal einige Vorteile. Ich wüsste keine, auch bei höheren Anforderungen.

Bei mir war der Auslöser, dass ich eine Access Anwendung machen wollte, ich von außen "sicher" ist. Also kein DAO, keine gebundenen Formulare - damit der Zugriff auf die Recordsets nicht über die Forms Auflistungen erfolgen kann uvm.

Jedes Konzept hat logischerweise seine Grenzen - bei einem Textfeld kannst du Zahlen nach einem Gebietsschema formatieren. Es gab mal die Anforderung in einem Formular für Zahlen verschiedene Formatierungen (Kommazeichen) zu ermöglichen. Ungebunden geht das einfach. Immer wenn es heißt geht nicht ...
LG M