Hallo,
im Folgenden schildere ich kurz mein Promlem.
Danke vorab für die Hilfe!
Ausgangssituation:
Ein Teil der Werte (zumindest die ,,Projektbezeichnung") wurde bereits Eingegeben und steht in der zugehörigen Tab. Nun kann per Button ein (Ergänzungs-)Form geöffnet werden, in dem die ,,Projektbezeichnung" (s.u.) ein Auswahlfeld ist. Neben den im u.g. VB-Text beschriebenen Eingabewerten gibt es zudem einen Index (=Primärschlüssel/AutoWert), der bereits seit Anlegen jedes neuen Projekts existiert.
Beim Öffnen des Dokuments werden alle Werte auf ,,Anfang" (s.u.) gestellt – bis auf den Index. Letzteres funktioniert nämlich nicht, da Me![Index] = ,," einen Fehler produziert und den Debugger öffnet.
Problem:
Es wird beim Öffnen immer automatisch der erste Index (kleinster Wert) aus meiner Tab ausgewählt. Durch das automatische ,,leer-Setzen" beim Öffnen des Form werden dann immer direkt alle u.g. Inhalte dieses ersten Index in der Tab gelöscht. Das möchte ich vermeiden.
Frage:
Wie bekomme ich beim Öffnen des Form ein leeres Indexfeld (damit nichts altes zerstört wird), das sich erst mit dem zugehörigen Index-Wert füllt, nachdem ich im offenen Form per Auswahl eine Projektbezeichnung gewählt habe.
Hier die VB:
Beim Laden (!):
Private Sub Form_Load()
Me![Ort] = ""
Me![Klasse] = ""
Me![Nummer] = ""
Me![Projektbezeichnung] = ""
Me![Zusatz] = ""
Me![Technische Spezifizierung] = ""
Me![Kommentar] = ""
Me![B-Projekt] = False
Me![Ruhend] = False
End Sub
Hallo,
da muss ich mal nachfragen...
ZitatNun kann per Button ein (Ergänzungs-)Form geöffnet werden
Was bitte verstehst du unter einem 'Ergänzungs-Form'?
Ist das ein Formular, das auf die gleiche Tabelle zugreift wie dein geöffnetes Formular
oder ist es ein Formular mir dem du Detailinformationen zur Eingabe im geöffneten Formular erledigen möchtest
und auf einen andere Tabelle als die des Hauptformulars zugreift?
ZitatLetzteres funktioniert nämlich nicht, da Me![Index] = ,," einen Fehler produziert
Solltest du tatsächlich ein Feld verwenden, das den Namen 'Index' trägt, solltest du das augenblicklich ändern!
'Index' ist ein reserviertes Wort und darf weder für Tabellenfelder noch für Formularfelder oder Variablennamen verwendet werden!
Allgemein gilt es KEINE reservierten Worte, KEINE Leer- oder Sonderzeichen und KEINE Umlaute in Feld-, Variablen- und / oder Objektnamen zu benutzen!
ZitatWie bekomme ich beim Öffnen des Form ein leeres Indexfeld (damit nichts altes zerstört wird)
In dem du die angezeigten Werte nicht löschst sondern einen neuen Datensatz anforderst.
In Etwa so:
Beim Öffnen....:
DoCmd.GoToRecord , , acNewRec
Dann liest du den Eintrag in Projektbezeichnung des Hauptforms aus und fügst ihn in den neuen Datensatz ein:
Me!Projektbezeichnung = Forms!Dein Hauptformular!Projektbezeichnung
Je nach Definition des Tabellenkonstrukts KÖNNTEST du auch den Primärschlüssel des Hauptformulars in das Fremdschlüsselfeld des 'Ergänzungsformulars' nach obigem Muster eintragen.
HTH
Hallo Peter,
zunächst mal Danke für die ausführliche Beschreibung.
Nun zu den Fragen:
1.: "Ergänzungs-"Form ist ein Mitarbeitertool. D.h. in der DB geht anfangs nur ein "Aktionsformular" mit Eingabe- und Abfragebutton auf. Die Ersteingabe (Anlegen eines Projektnamens) ist "Chefsache" und erfolgt im Verborgenen - i.d.R. gibt es hier außer dem Namen noch keine weiteren Informationen. Somit ist die Ausgangssituation die, dass es eine Tabelle mit Index (heißt bei mir "ID") und Projektnamen gibt, die vom zuständigen Bearbeiter ergänzt wird. Das MitarbeiterForm öffnet der Eingabebutton.
2.: ID ist nicht belegt, oder?
3.: Das mit dem "acNewRec" ist im verborgenen "Chef"-Ersteingabeformular eingebaut, da hier tatsächlich jedesmal ein neuer Datensatz erzeugt wird - funzt prima. Wenn ich jetzt jedesmal im Mitarbeitertool einen neuen Index kreire, wird die Tab mit haufenweise leeren Zeilen gefüllt, die nicht nur sinnlos, sondern auch unpraktisch sind.
Wie beschrieben hätte ich einfach gerne ein "jungfräuliches" Form, aber keinen neuen Datensatz.
Danke,
BG
Steve
HAllo,
also ich versteh diese "Index"-Geschichte nicht....
Wenn nur der Chef ein neues Projekt anlegen darf, dann soll er das tun mit einem Formular (mit nötigenFeldern) mit Basis zur Projekttabelle (, und dessen Eigenschaften "Daten eingeben" und "Anfügen zulassen" evtl. auf "Ja" eingestellt sind.)
Beim "Mitarbeiterform" stehen dort beidesmal "Nein".
Nur zum Verständnis:
Der Chef ist der einzige, der neue Projekte anlegt und dies auch darf. Er wird nie weitere Daten eingeben, da das Mitarbeitersache ist. Somit gibt es ein "Chef"-Form, das beim Öffnen automatisch einen neuen Tabelleneintrag erstellt.
Der Mitarbeiter wählt in seinem Form per Dropdown sein Projekt aus und ergänzt das. Nach Auswahl des Projekts wird dann automatisch auch der zugehörige Index ausgewählt (diesen blende ich aus). Der Index verknüpft aber das Projekt mit weiteren Tabellen, deren Eingabe in anderen Formularen stattfinden, die vom "Mitarbeiter"-Form per Button geöffnet werden.
All das hab ich bei der Beschreibung meines Problems weggelassen, da alles wunderbar funktioniert und die Beschreibung der DB einen Kurzroman abgeben würde.
Meine Frage war nur, warum beim Öffnen des Formulars immer der erste Index der Tabelle angezeigt wird und ob man das nicht abstellen kann.
Mittlerweile hab ich eine Lösung, die funzt, aber wenig elegant ist: ich hab einen Datensatz mit Index "1" angelegt, der ansonsten leer ist. Nun wird anfangs immer dieser geöffnet und das "Mitarbeiter"-Form macht nichts mehr kaputt.
Die DB ist damit einsatzbereit.
Trotzdem danke.
Hallo,
dann ist es ja ok, wenn es wunderbar funktioniert. ;)
Zitat von: MisterSteve am Januar 13, 2011, 12:16:55
Der Chef ist der einzige, der neue Projekte anlegt und dies auch darf. Er wird nie weitere Daten eingeben, da das Mitarbeitersache ist. Somit gibt es ein "Chef"-Form, das beim Öffnen automatisch einen neuen Tabelleneintrag erstellt.
Tschuldigung, das hat zwar jetzt nix mit Datenbank zu tun, aber diese "Aufgabenverteilung" finde ich schon etwas putzig:-). Vielleicht solltet ihr nicht nur die Tabellenstrukturen, sondern auch die firmen-hierarchischen Strukturen normalisieren.
Hallo,
ähh...
dürfte falscher Thread sein... 8)