Discussion:
Inhalt eines Formulars per VBA in Tabelle schreiben
(zu alt für eine Antwort)
Andrea
2004-02-11 15:54:18 UTC
Permalink
Hallo NG,

ich habe mehrere Formulare in VBA erstellt und möchte nun
den Wert/die Werte eines Formularfeldes in eine Tabelle
schreiben. Leider habe ich keine Ahnung wie ich den
Tabellenfeldern (2. Spalte) diese Werte zuordnen kann.

Außerdem soll die erste Spalte der Tabelle die Werte einer
anderen Tabelle enthalten.

Kann mir da jemand weiterhelfen?

Danke!!!

Gruß, Andrea
Wolfram Jahn
2004-02-11 18:20:59 UTC
Permalink
Andrea wrote:

Liebe Andrea,

das sind zu wenig Informationen, um Dir helfen zu können.
Minimal brauche ich noch:

1. Welche Access Version?
2. Beruhen Deine Formulare auf Tabellen/Abfragen, oder sind sie völlig ungebunden?
3. Wie ist die (logische/inhaltliche/fachliche) Verbindung zwischen einem Wert
eines Feldes eines deiner Formulare und den Werten einer anderen Tabelle für deine
neue Spalte eins?

Wolfram
--
<Antwort-Adresse: Menschen schreiben an kirchweg, Spam-Robots an ***@kircheweg.de>
a***@discussions.microsoft.com
2004-02-13 07:40:21 UTC
Permalink
Lieber Wolfram,

danke für die Antwort. Hier sind die noch notwendigen
Post by Wolfram Jahn
1. Welche Access Version?
Es handelt sich um Access 97 (SR2).
Post by Wolfram Jahn
2. Beruhen Deine Formulare auf Tabellen/Abfragen, oder
sind sie völlig ungebunden?
Die Formulare bzw. das Formular basiert zum Teil auf einer
Tabelle. Einige Felder werden mit Werten aus dieser
Tabelle gefüllt. Die Werte der Felder, um die es sich
handelt, werden per VBA berechnet und sollen in eine
andere Tabelle in Spalte 2 geschrieben werden.
Post by Wolfram Jahn
3. Wie ist die (logische/inhaltliche/fachliche)
Verbindung zwischen einem Wert
eines Feldes eines deiner Formulare und den Werten einer
anderen Tabelle für deine
neue Spalte eins?
In Spalte 1 der Tabelle sollen Werte (Datum) aus der
Tabelle, aus der die anderen Felder des Formulars gefüllt
werden.

Gruß, Andrea
Wolfram Jahn
2004-02-13 19:27:22 UTC
Permalink
***@discussions.microsoft.com wrote:
...

Ja, jetzt sollte es reichen.
Der Code zum Schreiben eines Record in die Zieltabelle ist ungefähr so:

dim rcs as recordset

set rcs = currentdb.openrecordset ("AndreasZielTabelle")
rcs.new
rcs!DatumsfeldnameInTabelle = me!DatumsfeldnameAufFormular
rcs!WertefeldnameInTabelle = me!WertefeldnameAufFormular
rcs.update
'...
rcs.close
set rcs = nothing

Natürlich kannst Du das anpassen soviel Du willst.
Zum Beispiel die Werte nicht aus den Formularfeldern nehmen sondern
berechnen/formatieren/sonstwas.
Oder das Recordset nur beim Öffnen des Formulars neu aufmachen und nur beim
Schließen des Formulars wieder zumachen, und es zwischendurch in einer
formularglobalen Variable halten (Das Dim oberhalb der obersten Sub oder Function
setzen). Das .new/.../.update kannst Du immer wieder machen. Ich vergesse meistens
das .update am Ende und wundere mich, dass nichts in der Tabelle ankommt. :-)

Wenn es das jetzt nicht war, musst Du nochmal nachhaken.
Da ich das - ohne Access vor mir - aus dem Gedächtnis schreibe, kann die eine oder
andere Methode oder Eigenschaft vielleicht etwas anders heißen, ich hoffe aber, Du
findest Dich - vielleicht mit der Online Hilfe - trotzdem zurecht.


Wolfram
--
<Antwort-Adresse: Menschen schreiben an kirchweg, Spam-Robots an ***@kircheweg.de>
Andrea Zeiss
2004-02-16 11:50:19 UTC
Permalink
Hallo Wolfram!

Dankeschön für Deine Hilfe! Jetzt funktioniert das
Schreiben in die Tabelle.

Du kannst mir nicht noch zufällig sagen, wie ich ein Feld
in Spalte 2 ansprechen kann bzw. jedes Feld in Spalte 2
durchlaufe, durchsuche oder anzeigen lasse?

Gruß, Andrea
Wolfram Jahn
2004-02-16 18:18:34 UTC
Permalink
Post by Andrea Zeiss
Hallo Wolfram!
Dankeschön für Deine Hilfe! Jetzt funktioniert das
Schreiben in die Tabelle.
Du kannst mir nicht noch zufällig sagen, wie ich ein Feld
in Spalte 2 ansprechen kann bzw. jedes Feld in Spalte 2
durchlaufe, durchsuche oder anzeigen lasse?
Gruß, Andrea
Spalte 2 wird ja einen Namen haben, warum nimmst Du nicht den?
rcs!NameFeldInSPalte2 = "irgendwas"
oder
eineVariable = rcs!NameFeldInSPalte2

In der OnlineHilfe müsste auch stehen, ob es eine Fields-Auflistung für Recordsets
gibt. Ich weiß es nicht auswendig. Wenn ja, dann könntest Du die zweite Spalte
ansprechen mit

rcs.fields(2)

Wenn nicht, denn nicht :-)

---

Durchlaufen:

set rcs = currentdb.openrecordset ("AndreasZielTabelle")

do until rcs.eof
if rcs!NameDerInteressantenSpalte = gewünschterWert then
call tuWasDuWillst(rcs!NameFeldInSpalte2)
exit do
end if
rcs.movenext
loop
'...
rcs.close
set rcs = nothing
--
<Antwort-Adresse: Menschen schreiben an kirchweg, Spam-Robots an ***@kircheweg.de>
Henry Habermacher [MVP Access]
2004-02-12 02:33:20 UTC
Permalink
Hallo Andrea
Post by Andrea
ich habe mehrere Formulare in VBA erstellt und möchte nun
den Wert/die Werte eines Formularfeldes in eine Tabelle
schreiben. Leider habe ich keine Ahnung wie ich den
Tabellenfeldern (2. Spalte) diese Werte zuordnen kann.
Außerdem soll die erste Spalte der Tabelle die Werte einer
anderen Tabelle enthalten.
Zum ersten Punkt:
Binde Dein Formular an die gewünschte Tabelle (Formular Eigenschaften,
Register Daten) und dann die Felder an die entsprechenden Datenfelder
(Eigenschaften, Steuerelementinhalt)

Zum zweiten Punkt:
Es gibt verschiedene Möglichkeiten, das zu realisieren. Die gebräuchlichste
ist, eine Combobox zu verwenden, die zwar an das Feld der Tabelle, in der
der Wert dann abgelegt werden soll, gebunden ist, aber als Datenherkunft
dann eine Tabelle oder Query auf eine andere Tabelle beinhaltet.

PS: In der Nordwind Beispieldatenbank sind viele solcher Beispiele drin.
Schau' doch mal diese an. Es lohnt sich auf alle Fälle.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Andrea
2004-02-13 07:50:14 UTC
Permalink
Hallo Henry,

danke auch für Deine Antwort.
Post by Henry Habermacher [MVP Access]
Binde Dein Formular an die gewünschte Tabelle (Formular
Eigenschaften,
Register Daten) und dann die Felder an die entsprechenden
Datenfelder
(Eigenschaften, Steuerelementinhalt)
Das Formular ist bereits an eine andere Tabelle gebunden,
weil es Werte für andere Felder daraus entnimmt. Wie soll
ich das dann also machen?
Post by Henry Habermacher [MVP Access]
Es gibt verschiedene Möglichkeiten, das zu realisieren.
Die gebräuchlichste
ist, eine Combobox zu verwenden, die zwar an das Feld der
Tabelle, in der
der Wert dann abgelegt werden soll, gebunden ist, aber
als Datenherkunft
dann eine Tabelle oder Query auf eine andere Tabelle
beinhaltet.
Ich habe die Werte per VBA berechnet und in "das" Textfeld
geschrieben. Die verschiedenen Werte werden im Formular
durch <- oder -> angezeigt. Diese Werte sollen nun in die
2. Spalte der Tabelle geschrieben werden.
Post by Henry Habermacher [MVP Access]
PS: In der Nordwind Beispieldatenbank sind viele solcher
Beispiele drin.

Wo find ich die denn?

Gruß, Andrea
Henry Habermacher [MVP Access]
2004-02-13 09:15:01 UTC
Permalink
Hallo Andrea

Bitte verwende hier den vollen Realnamen
Post by Andrea
Das Formular ist bereits an eine andere Tabelle gebunden,
weil es Werte für andere Felder daraus entnimmt. Wie soll
ich das dann also machen?
z.B. per VBA oder per SubForm.
Post by Andrea
Post by Henry Habermacher [MVP Access]
Es gibt verschiedene Möglichkeiten, das zu realisieren.
Die gebräuchlichste
ist, eine Combobox zu verwenden, die zwar an das Feld der
Tabelle, in der
der Wert dann abgelegt werden soll, gebunden ist, aber
als Datenherkunft
dann eine Tabelle oder Query auf eine andere Tabelle
beinhaltet.
Ich habe die Werte per VBA berechnet und in "das" Textfeld
geschrieben. Die verschiedenen Werte werden im Formular
durch <- oder -> angezeigt. Diese Werte sollen nun in die
2. Spalte der Tabelle geschrieben werden.
Wenn ich das lese und auch die Antwort auf den anderen Thread habe ich die
dringende Vermutung, dass Du kein eigentliches Datenmodell hast, sondern ein
Spreadsheet (Tabellenkalkulation). Falls das so ist, solltest Du dafür Excel
verwenden, das ist einfacher. Ansonsten solltest Du Dich zuerst ein ganz
wenig mit der Theorie der Relationalen DAtenbanken und der Normnalisierung
beschäftigen, sonst kommst Du in Access nicht weit und stehst immer wieder
vor schier unlösbaren Problemen. Literaturhinweise findest Du in der FAQ.
Post by Andrea
Post by Henry Habermacher [MVP Access]
PS: In der Nordwind Beispieldatenbank sind viele solcher Beispiele drin.
Wo find ich die denn?
Diese ist da, wo sie beim Setup von Access installiert wurde, falls die
Option dort angekreuzt war. Es ist die Beispieldatenbank von Access. Nicht
gerade ein Prunktstück, doch für die ersten Schritte durchaus ausreichend.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Andrea Zeiss
2004-02-13 11:49:51 UTC
Permalink
Post by Henry Habermacher [MVP Access]
Post by Andrea
Das Formular ist bereits an eine andere Tabelle
gebunden,
Post by Henry Habermacher [MVP Access]
Post by Andrea
weil es Werte für andere Felder daraus entnimmt. Wie
soll
Post by Henry Habermacher [MVP Access]
Post by Andrea
ich das dann also machen?
z.B. per VBA oder per SubForm.
Das ist ja genau mein Problem. Ich weiss nicht wie ich mit
VBA die Spalte/Zellen in der anderen Tabelle ansprechen
bzw. darein schreiben kann.
Post by Henry Habermacher [MVP Access]
Wenn ich das lese und auch die Antwort auf den anderen
Thread habe ich die
Post by Henry Habermacher [MVP Access]
dringende Vermutung, dass Du kein eigentliches
Datenmodell hast, sondern ein
Post by Henry Habermacher [MVP Access]
Spreadsheet (Tabellenkalkulation).
Das bisherige ist ja nur der Rohbau und soll noch
erweitert werden. Normalisierung, ER-Diagramme usw. kenn
ich.

Die Beispieldatenbank ist hier leider nicht installiert.
Loading...