PDA

Vollständige Version anzeigen : ID in neues Feld kopieren


Waca
30.05.2012, 09:11
Hallo,

ich habe zwei Tabellen "Volllizenzen" und "Upgrades".

Mittels eines Formulars soll der Benutzer verschiedene Daten (Hersteller, Produkt, SN,...) eingeben. Nun gibt es in dem Formular weiters die Möglichkeit, auf den Button "Upgrade" zu drücken, hierbei öffnet sich ein UF wo wiederum Daten eingegeben werden müssen (Datum ,Neue Version,...)

Wenn der Upgrade Button gedrückt wird, hätte ich gerne das die aktuelle Volllizenzen ID automatisch in ein Feld in der Tabelle "Upgrades" geschrieben wird.

Bin leider ein Access Neuling, aber ich denke das ich so einen Haufen Upgrades recht Komfortabel auf eine Volllizenz zuordnen kann - Leider habe ich das bis jetzt nicht so hinbekommen wie ich gerne hätte...


Vielen Dank im voraus!

Thomas Möller
30.05.2012, 09:23
Hallo!

Wenn der Upgrade Button gedrückt wird, hätte ich gerne das die aktuelle Volllizenzen ID automatisch in ein Feld in der Tabelle "Upgrades" geschrieben wird.

Wenn ich Dein Anliegen richtig verstehe, dann hast Du grundsätzlich zwei Möglichkeiten.

Geht es darum, die Daten zu übernehmen und diese hinterher noch weiter zu bearbeiten, dann kannst Du die werte Feld für Feld übernehmen. Der VBA-Code dafür könnte ungefähr so aussehen:

Me.sfrmDeinUfo!txtHersteller = Me.txtHersteller
Me.sfrmDeinUfo!txtVersion = Me.txtVersion
' ...

Eine Alternative ist es, die Daten mit einer Anfügeabfrage aus der bestehenden Tabelle in die neue Tabelle zu kopieren. Auch dasgeht per VBA:

Dim strSQL As String

strSQL = "Insert INTO DeineTabelle (Hersteller, Version) " & _
"VALUES ('" & Me.txtHersteller & "', '" & Me.txtVersion & "')"

CurrentDb.Execute strSQL, dbFailOnError

HTH

Beaker s.a.
30.05.2012, 23:00
Hallo Waca,
hierbei öffnet sich ein UF wo wiederum Daten eingegeben werden müssen
Wenn Du doch ein UFo hast (wobei ich "öffnet sich" nicht verstehe),
verknüpfe es doch mit dem HFo über die VolllizenzID, dann macht
Access das (schreiben der ID) ganz automatisch; - nix mit Code ;)
hth
gruss ekkehard

Nachtrag:
Ach so, wenn ein zweites Form geöffnet wird, sollten Thomas' Hinweise
zielführend sein.

waca
31.05.2012, 14:24
Vielen Dank für eure Hilfe,

leider hab ich das bis jetzt nicht zum laufen gebracht.

der Code: Me.sfrmDeinUfo!txtHersteller = Me.txtHersteller

habe ich jetzt schon sehr oft als Lösung gefunden nur kopiert er einfach nichts... irgendwas mach ich falsch

In meiner DB sieht der Code so aus:

Forms!VL!TestV = Forms!UP!TestU


Aber vielleicht nochmal ganz von vorne:

Der Benutzer gibt im Formular VL verschiedene Daten ein.
Wenn er damit fertig ist, kann er auf den Button "Upgrades" drücken.
Der Button "Upgrades" öffnet das Formular UP und erstellt einen neuen Datensatz.

Aus Bequemlichkeit hätte ich gerne,das das Feld TestV (aus dem Formular VL) automatisch in das Feld TestU (aus dem Formular UP) kopiert wird.


Aber wie gesagt, es tut sich einfach nichts...

maikek
31.05.2012, 14:51
Moin,
Forms!VL!TestV = Forms!UP!TestU
wenn du TestV nach TestU kopieren willst, muss die Anweisung genau anders herum sein. Das funktioniert aber nur, wenn Formular UP zu diesem Zeitpunkt auch geöffnet ist, und nicht, wie hier beschrieben
Der Button "Upgrades" öffnet das Formular UP und erstellt einen neuen Datensatz.
erst geöffnet wird.
In dem Fall, was ich sowieso besser finde, übergib' den Wert einfach beim Öffnen, also im Code von "Upgrades", als OpenArgs.
maike

waca
01.06.2012, 09:40
Ahh spitze, der Tipp, dass ich es als OpenArgs im UP Formular definiere war goldwert!

Vielen vielen Dank!


Jetzt hab ich noch das Problem, dass der aktuelle Wert aus TestV in ALLE Datensätze von TestU geschrieben wird. Ich hätte ihn gerne aber nur in dem neu erstellten Datensatz...

maikek
01.06.2012, 09:52
Ist das ein Endlosformular?
Ist das Feld TestU gebunden oder ungebunden?
Wie ist der Code, mit dem du überträgst/schreibst?
Gibt es ein Kriterium, das du verwenden könntest?
Ich kann nicht hellsehen.
maike

waca
01.06.2012, 10:49
Sry für mein Unwissen, bin halt ein Access newb...

Private Sub Form_Current()
Forms!UP!TestU = Forms!VL!TestV
End Sub


Ich habe eine Volllizenz (Eingabe erfolgt über Formular VL) und möchte dieser ein Upgrade (Formular UP) zuordnen - das würde natürlich einfacher gehen wenn ich eine Abhänigkeit definiere, allerdings muss ich dann aus über ~100 Vollizenzen per Drop down Menü die richtige finden...

Also - UP es ist kein Endlosformular, TestU ist nicht gebunden. Ich möchte dieses Feld nur später für meine Abfragen benutzen.

maikek
01.06.2012, 11:16
Ähh, ich glaub', da ist was grundsätzlich im Argen.

Du musst doch das Upgrade einer Voll-Lizenz zuordnen, oder?
Wenn du ein Feld in einer Abfrage verwenden willst, muss es in einer Tabelle vorhanden sein. Wieso ist es dann ungebunden (ohne Bezug zu einem Tabellenfeld)?
Wenn du die Zuweisung TestU = TestV im Form_Current-Ereignis machst, wird dies bei jedem Anzeigen (z.B. Datensatzwechsel) aufgerufen, das ist der Grund, warum der gleiche Wert in allen Datensätzen erscheint.

Im ersten Post hast du geschrieben:
Wenn der Upgrade Button gedrückt wird, hätte ich gerne das die aktuelle Volllizenzen ID automatisch in ein Feld in der Tabelle "Upgrades" geschrieben wird.
Die Tabellen sollten dazu über den Primärschlüssel VollID und ein Fremdschlüsselfeld (VollID_F) 1:n verknüpft sein.
Dann kannst du entweder, so wie Beaker s.a. bereits vorgeschlagen hat, ein Formular (Volllizenz) mit einem Unterformular (Upgrades) verwenden, oder den Wert über die Formularfeld-Kopiererei übergeben. Das Feld TestU muss dann an das Fremdschlüssel-Feld in der Upgrade-Tabelle gebunden werden.
maike