collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 49
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13913
  • stats Beiträge insgesamt: 65793
  • stats Themen insgesamt: 8879
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Formular als zweite Instanz öffnen  (Gelesen 9763 mal)

Offline PMan

  • Newbie
  • Beiträge: 18
Formular als zweite Instanz öffnen
« am: Mai 06, 2010, 19:15:23 »
Hallo Miteinander,

ich habe ein Hauptformular mit einem eingebetteten UFO. In dieser Konstruktion darf aus Steuerungsgründen kein neuer Datensatz angelegt werden. Das UFO hat einen Button zum Anlegen des neuen Datensatzes. Um nicht noch ein neues Formular anlegen zu müssen, will ich das UFO als eigenständiges Formular aus sich heraus selbst öffnen. Die Steuerung erfolgt über OpenArgs. Wird das UFO im Hauptformular verwendet gibt es keine OpenArgs, ruft es sich selbst auf, werden OpenArgs übergeben. Prinzipiell funktioniert das. Zum Anlagen der neuen Datensätze wird dem Formular über AllowEdits = True die Erlaubnis erteilt und am Ende auch wieder entzogen.

Hat jemand mit einer solchen Konstruktion bereits Erfahrung und was ist dabei besonders zu beachten?

Viele Grüße
PMan

 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Re: Formular als zweite Instanz öffnen
« Antwort #1 am: Mai 06, 2010, 19:21:24 »
Hallo,


worauf ziehlt denn Deine Frage ab?

Es ist nichts Ungewöhliches, ein Formular sowohl in einem UFO-Steuerelement als auch als eigenständig geöffnetes Form zu öffnen...

Probleme kann es aber mit Datensatzsperrungen geben, wenn der selbe Datensatz(bereich) von beiden Formularen gleichzeitig bearbeitet werden soll

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #2 am: Mai 06, 2010, 19:35:05 »
Hallo DF6GL,

die zu bearbeitende Tabelle ist in beiden Fällen die gleiche. In der zweiten Instanz werden allerdings Datensätze hinzugefügt. Mir ist schon klar, dass ich in der zweiten Instanz den Datensatz der ersten Instanz nicht bearbeiten kann.

Gibt es weitere Einschränkungen?
Kann man steuerungstechnisch verhindern, dass in der zweiten Instanz der Datensatz der ersten aufgerufen wird?

Gruß PMan
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Re: Formular als zweite Instanz öffnen
« Antwort #3 am: Mai 06, 2010, 20:37:26 »
Hallo,

hinzufügen sollte kein Problem sein, und das Form kann ja so eingestellt werden, dass nur neue DS eingegeben  und keine vorhandenen editiert werden können.

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #4 am: Mai 07, 2010, 12:34:36 »
Hallo,

wie kann man ein Formular einstellen, dass nur neue DS eingegeben werden können?
 

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #5 am: Mai 07, 2010, 17:51:03 »
Hallo,

hat sich erledigt. Ich habe folgendes in den Code bei Form_Open aufgenommen

        Set frm = Me.Form
        frm.AllowAdditions = True
        frm.AllowDeletions = True
        frm.AllowEdits = False
        frm.DataEntry = True

Die Befehlsfolge steht in einer If-Abfrage

     If Not IsNull(OpenArgs) Then
        -----
    End If
 

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #6 am: Mai 07, 2010, 18:36:46 »
Hallo,

es ergibt sich doch noch ein Problem. Das Formular kann nicht auf einen neuen Datensatz springen. Mit

     DoCmd.GoToRecord , , acNewRec

erhalte ich die Fehlermeldung

     Sie können nicht zu dem angegebenen Datensatz springen

Statt dessen wird ein bereits vorhandener Datensatz ausgewählt. Bei jedem Öffnen erhöht sich die vorhandene ID um eins.

Was läuft noch falsch?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Re: Formular als zweite Instanz öffnen
« Antwort #7 am: Mai 07, 2010, 20:43:30 »
Hallo,

ja, und warum denn nochmal GoToRecord , , acNewRec?

Das Form steht doch mit Deinem Code schon auf einem neuen DS ...

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #8 am: Mai 08, 2010, 16:27:15 »
Hallo,

dies ist richtig und das Dilemma unabhängig davon.

Beim Öffnen des Formulars bekomme ich leere Felder angezeigt, bis auf ein Feld: Das ID-Feld zeigt eine ID eines bestehenden Datensatzes an. Dort habe ich eigentlich eine neue ID erwartet.

Was muss ich tun, um eine neue ID angezeigt zu bekommen - sprich auch wirklich auf einem neuen Datensatz zu stehen?

bzw.

Wie kann ich die eingetragenen Werte als neuen Datensatz abspeichern?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Re: Formular als zweite Instanz öffnen
« Antwort #9 am: Mai 08, 2010, 18:43:57 »
Hallo,
sobald Du einen Wert in irgendein anderes Feld eingibst, wird der neue Autowert erzeugt. Abgespeichert wird, wenn Du anschließend den DS wechselst (auch,wenn Du jetzt erst auf einen nochmal  neuen DS gehst, oder das Form schließt...

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #10 am: Mai 08, 2010, 18:52:40 »
Hallo,

Deine Antwort trifft leider nicht zu. Da in der Anzeige der alte ID eingetragen ist, kann der Datensatz nicht gespeichert werden, da mit der alten ID alle von anderen Tabellen abhängigen Werte nicht mehr mit dem neuen eingetragenen Informationen übereinstimmen und mit DataEntry das Speichern des alten DS verhindert wird.

Das Problem ist anscheinend, dass mit DataEntry noch kein neuer DS angelegt worden ist.

Meine Überlegung geht jetzt dahin, mit rs.AddNew einen neuen Datensatz zu öffnen und dann mit RunCommand acCmdSaveRecord den neuen DS zu speichern.
 

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #11 am: Mai 09, 2010, 13:03:53 »
Hallo,

Deine Antwort triff doch zu, das Problem liegt an anderer Stelle. Zum Testen habe ich ein neues Formular angelegt, das die Felder der Tabelle und die Einstellungen

         Bearbeiten zulassen  -  Nein
         Löschen zulassen      -  Ja
         Anfügen zulassen      -  Ja
         Daten eingeben         -  Ja

enthält und noch keinen Programmcode. Beim Öffnen zeigt die ID: (AutoWert) und alle Felder sind leer.

Gebe ich in ein beliebiges Feld einen Wert ein, springt die ID auf einen bestehenden Wert, statt auf eine neue ID, die Felder bleiben leer. Bei jedem Öffnen zählt dabei die ID um eins nach oben.

Wie kann ich erreichen, dass eine neue ID erzeugt wird?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Re: Formular als zweite Instanz öffnen
« Antwort #12 am: Mai 09, 2010, 16:22:47 »
Hallo,


"springt die ID auf einen bestehenden Wert, statt auf eine neue ID"    kann ich nicht nachvollziehen...


Sobald ein Wert in irgendeienm Feld eingegeben wird, wird ein neuer (in der Tabelle nicht vorhandener) Autowert erzeugt.

"Bei jedem Öffnen zählt dabei die ID um eins nach oben"   das ist auch nicht richtig, die (neue) ID wurde beim vorangehenden Schliessen des Forms gespeichert.


Oder ich sehe nicht genau, was Du nun im Einzelnen machst...

Offline PMan

  • Newbie
  • Beiträge: 18
Re: Formular als zweite Instanz öffnen
« Antwort #13 am: Mai 09, 2010, 17:19:15 »
Hallo,

nachdem der Fehler nur in dieser Tabelle aufgetreten ist, habe ich die Tabelle manuell mit einem neuen Datensatz zu erweitern versucht. Dies ging mit dem beschriebenen Fehler schief. Anscheinend hat sich im Index ein Fehler ereignet, so dass keine neuen Datensätze mehr angelegt werden konnten. Eine Reparatur mit "Datenbank komprimieren und reparieren" hat leider den Fehler auch nicht behoben. So habe ich inzwischen die Tabelle durch eine neu angelegte ausgetauscht und die Datensätze wieder importiert. Der Fehler ist damit behoben.

Vielen Dank für Deine Hilfe und Grüße
PMan