Formular für wiederkehrende Prüfung

Ich hab jetzt hin und her probiert. Selbst wenn ich eine neue Schaltfläche einfüge, ohne Assistent, und nur eine MsgBox bei click haben will, passiert nichts.
 
Werbung:
So, meine DB hat irgendwo ne Macke. Ich hab grade einfach eine ganz Frische aufgemacht. Ein Formular mit einem Button erstellt der ne MsgBox ausgeben soll, und was soll ich sagen, das geht. Alles doof :(
 
Hast Du schon mal unter Datei/ Datenbank komprimieren und reparieren ausgeführt? Das wirkt oft Wunder. Der Unterschied kann auch darin liegen, dass sich die eine Datenbank für Windows/Office an einem vertrauenswürdigen Ort befindet und die Andere nicht.
 
Ich hab tatsächlich komprimieren und reparieren probiert, allerdings auch ohne Erfolg. Die neue DB liegt im gleichen Folder nur in einem Subfolder
 
Moin, der Fehler wurde gefunden und scheinbar behoben. Der Speicherort musste von der IT als sicher eingestuft werden. @andyfau, dein Speicher Code klappt auch, danke noch mal für deine Geduld. Jetzt muss ich den Code nur noch umstricken, so dass ich den Ausgabename dynamisch aus der Berichtsüberschrift generieren lasse. Aber da fummel ich mal bisschen.
 
So, ich vermelde Erfolg! 🥳
Bis zum nächsten Problem läuft grade alles super.
Ich danke sehr für die grandiose Hilfe und hoffe ich darf weiter fragen, wenn noch was ist.
Anbei mal der Code zum speichern und umbenennen wie er jetzt grade läuft.

On Error GoTo err_pdf
Dim Dateiname As String
Dim Zieldatei As String

Dateiname = Application.CurrentProject.Path & "\repTEMP.PDF"
Zieldatei = "D:\" & [Reports]![repBefundung]![txt_headline_rep] & "_" & [Reports]![repBefundung]![Befundungs_Jahr] & ".PDF"
DoCmd.OutputTo acOutputReport, "repBefundung", acFormatPDF, Dateiname
FileCopy Dateiname, Zieldatei
Kill Dateiname
MsgBox ("Report wurde als PDF exportiert: " & Zieldatei)
GoTo noerr
err_pdf:
MsgBox "Fehler PDF-Ausgabe" & " " & Err.Number & " " & Err.Description
noerr:
On Error GoTo 0
 
Hallo, ich bins wieder. Ich arbeite im Moment an der Bedienbarkeit und DB. Dazu hab ich noch ein bis zwei Fragen.

Zu erst, ich habe ein "StartFormular" erstellt in dem die anderen Formulare per Schaltfläche "sichtbar" werden. Hab ich soweit auch hinbekommen und klappt auch. Leider ist es mir noch nicht gelungen, den Code so zu gestallten, dass sich Formular1 "versteckt", wenn ein anderes aufgerufen wird.
Me![fm_add_fzgtyp].Visible = Not Me![fm_add_fzgtyp].Visible
Diesen Code benutze ich.

Als nächstes habe ich Eingabeformulare erstellt, in denen Daten hinzugefügt werden können sollen (Standort, Land oder dergleichen). Diese Formulare habe ich mit einem Textfeld ausgestattet, welches die entsprechende Tabelle als Steuerelement hinterlegt hat, und zwei Schaltflächen mit macros (einmal Datensatz neu und einmal Datensatz speichern). Beim Öffnen der Formulare wird in dem Textfeld allerdings immer ein Wert angezeigt, den man leider auch ändern könnte. Kann ich die Änderung der Daten irgendwie unterbinden ohne auf das hinzufügen neuer Daten zu verzichten bzw wie bekomme ich das Feld einfach leer angezeigt?

Klingt alles einfach, aber ich hab schon wieder so viel probiert und komme einfach keinen Schritt weiter
 
Moin,
zu Frage 1: Ich würde die Formulare nicht nur verstecken, sondern schließen und bei Bedarf wieder öffnen.
Grund: Wenn Du ein Formuar nur in den Hintergrund stellst, behält es seinen Recordset. Ändern sich nun in anderen Formularen Daten, die auch das Recordset des vorigen Formulars beeinflussen, kann es, wenn man nicht akribisch aufpasst, zu verwirrenden Datenzuständen kommen. Öffnest Du ein Formular neu, wird das Recordset, also die zugrundeliegenden Daten, neu aufgebaut und alle Berechnungen in ungebundenen Feldern neu durchgeführt.
Man kann jeweils im Folgeformular "beim Laden" das vorige Formular schließen mit:
Code:
DoCmd.Close acForm, "Formularname"
Natürlich ist darauf zuachten, dass, wenn man Direktverweise zum alten Formular hat, diese vor dem Schließen in Variablen zwischenspeichert um sie dann weiter benutzen zu können.

zu Frage 2:
Du kannst das Formular im Ereignis "Beim Öffnen" (Ereignisprozedur) veranlassen direkt zum "neuen Datensatz" zu springen. Dann dürften alle Felder leer sein. Es sei denn, Du hast für einzelne Felder in den Feldeigenschaften der Tabelle oder im Formular Standardwerte hinterlegt.
Code:
  DoCmd.GoToRecord , ,acNewRec
 
Code:
DoCmd.Close acForm, "Formularname"
Wenn ich diesen Code verwende, würde es bedeuten, ich weiß, welches Formular vorher offen war. Kann man "Formularname" mit "Formularoffen" oder dergleichen ersetzen?
 
Es gibt in Access das Objekt "Forms". Dies ist die Auflistung aller geöffneten Formulare. Man kann sie durchlaufen um z.B. alle geöffneten Formulare zu schließen oder ihre Namen zu ermitteln.
Der folgende Code listet Dir alle zur Zeit geöffneten Formulare im Direktfenster auf, unabhängug davon, welches Formular gerade den Fokus hat.
Code:
Public Sub listforms()
   Dim obj As Form
   For Each obj In Application.Forms
       Debug.Print obj.Name
   Next
End Sub
 
Moin Leute, ihr habt mir echt super weiter geholfen und ich bin auch echt allein gut weiter gekommen, aber ein einem Problem beiße ich mir nach wie vor die Zähne aus.
Ich hab ein Formular um neue Standorte hinzufügen zu können. Der Standort selbst besteht aus dem Ort und einem Land. Ort und Land sind in separaten Tabellen untergebracht die mit einer 1:n Beziehung über die Land_Id verbunden sind.
Wenn ich jetzt einen neuen Standort anlegen will, scheitere ich am übermitteln der Daten in die Tabelle Standort.

Eingabe Standort soll über ein Textfeld erfolgen, Land wird per Combobox ausgewählt. Gespeichert werden soll über eine Schaltfläche.

Ich bedanke mich sehr artig für die Hilfe
 
Vermutlich ist bei der Combobox in den Eigenschaften die gebundene Spalte falsch gewählt. In der Standorttabelle steht ja hoffentlich die LandID als Fremsschlüssel.
 
Werbung:
Die Beziehung stimmt schon, aber schau mal in die Eigenschaften der Combobox unter gebundene Spalte. Das muss Spalte 1 (ID) sein die dann bei der Erfassung des Standortes dort gespeichert wird und über die Du bei späteren Abfrage die passenden Landbezeichnung zuspielst.
 
Zurück
Oben