Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: dan21 am Juli 14, 2010, 08:37:21

Titel: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: dan21 am Juli 14, 2010, 08:37:21
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.
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: MzKlMu am Juli 14, 2010, 09:39:53
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.
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: dan21 am Juli 14, 2010, 10:10:30
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
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: MzKlMu am Juli 14, 2010, 10:15:44
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.
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: dan21 am Juli 14, 2010, 10:53:03
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?
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: MzKlMu am Juli 14, 2010, 10:57:16
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
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: dan21 am Juli 14, 2010, 12:00:53
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.
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: MzKlMu am Juli 14, 2010, 12:09:46
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.
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: database am Juli 14, 2010, 14:35:05
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
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: dan21 am Juli 15, 2010, 10:46:01
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)
Titel: Re: Neuer Datensatz auf mehere Tabellen verteilt
Beitrag von: database am Juli 15, 2010, 11:38:30
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