Neuigkeiten:

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

Mobiles Hauptmenü

Neuer Datensatz auf mehere Tabellen verteilt

Begonnen von dan21, Juli 14, 2010, 08:37:21

⏪ vorheriges - nächstes ⏩

dan21

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.

MzKlMu

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.
Gruß Klaus

dan21

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

MzKlMu

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.
Gruß Klaus

dan21

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?

MzKlMu

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
Gruß Klaus

dan21

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.

MzKlMu

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.
Gruß Klaus

database

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

dan21

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

database

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