Moin,
ich bin relativ neu in Access, aber es klappt ganz gut bist jetzt. Nun zu meinem Problem.
Meine Datenbank besteht aus ca. 15 Tabellen.
Davon hängen 8 zusammen udn sind miteinander verbunden.
Ich möchte nun einen neuen Datensatz erstellen, am liebsten im mehreren Schritten.
Als erstes habe ich verschiedene Formualre probiert, hier hat die Weitergabe eines eindeutigen Schlüssels nicht funktioniert. Kurz zum Aufbau:
Formular 1:
Eingabe von:
- Projektname
- Beschreibung
- Kunden(nummer aus Kombinationsfeld)
- Start
- Ende
Formular 2:
Eingabe von Projektdetails. Dazu müssen mehrere Datensätze zu einer Projektnummer erstellt werden. Ich wollte über Endlosformulare gehen.
Ich hatte die Projktnummer über eine Abfrage aus dem ersten Formular extrahiert (ID aus Projekttabelle, Abfragekriterium Inhalt der EIngabe im Feld Projektname). Das klapt auch im Entwurf ganz gut, aber zur Laufzeit leider nicht mehr. Wie kann ich am Besten die Projektnummer (die ich eigentlich noch nicht kenne) an das zweite Formular übergeben?
Danke für die Tips.
Hallo,
das Formular2 sollte als Unterformular im Formular1 verwendet werden. Dann lösen sich Deine Probleme in Luft auf, weil dann die Übergabe der ID automatisch von Access gesteuert wird. Du kannst das Formular2 einfach auf das Formular1 ziehen. Wenn im Beziehungsfenster die Beziehungen angelegt sind (was sie unbedingt sein sollten) werden die notwendigen Verknüpfungen zwischen den Formularen automatisch gesetzt. Es ist weder VBA noch sind spezielle Abfragen erforderlich. Das beherscht Access serienmäßig.
Wie erstelle ich denn ein Unterforular, bzw. verknüpfe die Formulare?
Ich arbeite mit Access 2007 und unter Beziehungen kann ich keine Formulare verknüpfen.
Danke
Hallo,
Zitatunter Beziehungen kann ich keine Formulare verknüpfen.
Das habe ich auch nicht geschrieben.
ZitatWie erstelle ich denn ein Unterforular, bzw. verknüpfe die Formulare?
Das habe ich bereits geschrieben:
Zitat von: MzKlMu Du kannst das Formular2 einfach auf das Formular1 ziehen. Wenn im Beziehungsfenster die Beziehungen angelegt sind (was sie unbedingt sein sollten) werden die notwendigen Verknüpfungen zwischen den Formularen automatisch gesetzt.
Das ist ganz einfach zu Handhaben.
super. jetzt hab ich es verstanden. klappt soweit auch ganz gut.
ein problem noch. wenn ich in einem endlosformular (im unterformular) eine neue Zeile einfüge, wird die Projektnummer leider nicht automatisch gesetzt, auch nicht beim speichern in die Datenbank. Habt ihr da noch nen Tip?
Hallo,
wenn alles richtig gemacht ist, geht das alles automatisch.
Was steht in den Dateneigenschaften des Ufos bei Verknüpfen von/nach ?
Dort müssen die Schlüsselfelder stehen.
Verknüpfen von = Fremdschlüssel
Verknüpfen nach = Primärschlüssel
so, ichhab gesucht, die verknüpfungen hatte er nicht übernommen. jetzt klappt es aber.
dafür imemr neue Probleme:
Ich erstelle auf der Startseite ein Kombinationsfeld, die Daten holt es sich aus einer Tabelle, einfach alle vorhandenen Projekte. Das Ausgewählte Objekt soll er im Feld ID speichern. Danach kann ich aber nur noch das erste Element auswählen, die anderen Elemente kann man sehen, aber nicht auswählen.
Die ID will ich später weiterverwenden, um sie an verscheidene Formulare zu übergeben. Das ist meiner Ansicht anch die sauberste Lösung, oder wie würdet Ihr vorgehen?
Also: Startseite bietet die Möglichkeit der Projektauswahl. Dann gibt es verschiedene Formulare, mit denen ich verschiedene Daten bearbeiten oder auch neu erstellen kann.
Hallo,
die ID aus dem Startformular solltest Du in eine globale Variable schreiben. Dann kannst Du von jedem Formular darauf zugreifen. Das Kombi des Startformulars muss ungebunden sein.
Hallo,
wenn das Kombifeld nach Auswahl die Projekt-ID beinhaltet, brauchst du das Gewürge mit der globalen Variablen nicht.
Blende nach Formularaufruf (Bearbeitungsformular) das Startform aus (Forms!Startformular.Visible = False) du kannst jederzeit auf das Kombifeld im Startform zugreifen und den ausgewählten Wert auslesen.
z.B.:
Dim x as Long
x = Forms!Startformular!Kombifeld
Warum keine globalen Variablen bzw. Gewürge mit selbigen? ???
Weil sie Fehlerquellen darstellen, besonders dann, wenn die Werte nicht konsequent gelöscht werden sobald sie nicht mehr gebraucht werden. >:(
Greets
Peter
ich glaub langsam ich stell michein bisschen blöd an.Ichbekomm es nicht hin das ausgewählte Projekt von frmStart an frmPorjektBearbeiten zu übergeben, so dass der entsprechende Datensatz sofort geöffnet wird. Es wird immer DAtensatz 1 angezeigt.
Einen neues Datensatz erstellen geht mit dem gleichen Formular.
Ich hänge meinen Entwurf mal an, vielleicht habt ihr einen Tip für mich.
1000mal Danke!
http://rapidshare.com/files/407057461/Daten.zip (http://rapidshare.com/files/407057461/Daten.zip)
Hallo,
du kannst die Datei in gezippter Form auch hier direkt anhängen und musst niemand auf die rapidshare-Seite quälen.
Ins Klick-Ereignis des Befehl47 (Aufruf des Bearbeitungsformulars) baust du folgendes ein:
Dim stDocName As String
Dim stLinkCriteria As String
stLinkCriteria = "ID=" & Me.ProjektID
stDocName = "frmProjektBearbeiten"
DoCmd.OpenForm stDocName, , , stLinkCriteria
...und diese Zeile schmeißt du weg, die brauchst du nicht
Forms(frmProjektBearbeiten).Recordset.FindFirst "ID = " & Me!ProjektID
HTH
Peter