saphirmd
Goto Top

Access- VBA Formularfelder auslesen und kopieren

Problem mit dem Auslesen von Formularfeldern und dem Schreiben dieser in ein neue Formularfelder

Hallo !!

Könnt Ihr mir vielleicht helfen?? I
ch habe ein Problem mit der VBA-Programmierung in MS Access.
Ich muss eine Prozedur erstellen,mit der ich -viielleicht mit Hilfe eines Arrays- aus Formuarfeldern die Inhalte kopieren / auslesen kann und diese dann in Formularfeldereines ANDEREN Formulars kopieren//einfügen kann.

Leider bin ich noch nicht fündig geworden und würde mich freuen, wenn Ihr mir helfen könntet.

Danke im Vorraus.

Ich wünsche allen ein friedliches und besinnliches Weihnachtsfest und ein guten Rutsch ins Neue Jahr.

Grüße -Der Saphir-

Content-Key: 178054

Url: https://administrator.de/contentid/178054

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: thaenhusen
thaenhusen 23.12.2011 um 12:06:49 Uhr
Goto Top
Moin.

Du kannst mit

Forms("Formular").Feld = Forms("Formular2").Feld  
bzw. für Unterformulare
Forms("Formular")("Unterformular").Form..Feld = Forms("Formular2")("Unterformular2").Form.Feld  

die Werte übertragen. Es müssen nur beide Formular geleichzeitig geöffenet sein.

Aber warum willst Du das überhaupt?

Ich wünsche allen ein friedliches und besinnliches Weihnachtsfest und ein guten Rutsch ins Neue Jahr.

Vielen Dank. Wünsche ich Dir auch.

HTH
MK
Mitglied: NetWolf
NetWolf 23.12.2011 um 14:00:47 Uhr
Goto Top
Moin Moin,

Ich muss eine Prozedur erstellen,mit der ich -viielleicht mit Hilfe eines Arrays- aus Formuarfeldern die Inhalte kopieren /
auslesen kann und diese dann in Formularfeldereines ANDEREN Formulars kopieren//einfügen kann.
ok, du hast ein Hauptformular, und dann sollen die Daten wohin gehen? in ein UFO oder ein anderes Hauptformular?
Welche Felder sollen übertragen werden? alle oder nur einige?
Wie sehen die Tabellen der Formulare aus?

Wie schon thaenhusen fragt: warum so umständlich?
Beschreibe doch bitte mal genau, was du machen willst. So wie es aussieht, bist du auf einem Holzweg. Da gibt es bestimmt eine andere Lösung.

Ich wünsche allen ein friedliches und besinnliches Weihnachtsfest und ein guten Rutsch ins Neue Jahr.
dito

Grüße aus Rostock
Wolfgang
(Netwolf)
Mitglied: saphirmd
saphirmd 25.12.2011 um 01:47:44 Uhr
Goto Top
Hallo,

Danke für Eure schnelle Antwort.

Mein Chef wollte, dass ich aus zwei verschiedenen Tabellen ein Formular (A) erstelle und diese Felder dann in einzelne Felder eines anderen, schon vorhandenen Formulars (B), einfüge.
Ein Teil der Felder von B werden dabei nicht berücksichtigt, bleiben also so, wie sie waren.
Wie die Tabellen aussehen weiß ich noch nicht.

Ich hoffe, es ist jetzt ein bisschen verständlicher.

Grüße aus Magdeburg
-der saphir-
Mitglied: NetWolf
NetWolf 25.12.2011 um 15:59:27 Uhr
Goto Top
Moin Moin,

nö, verständlich ist das nicht face-sad

Wenn generell die Daten aus den zwei Tabellen in die dritte Tabelle (also Formular B) übernommen werden sollen, wäre eine Aktualisierungsabfrage sinnvoller.

Grüße aus Rostock
Wolfgang
(Netwolf)
Mitglied: saphirmd
saphirmd 27.12.2011 um 11:55:30 Uhr
Goto Top
Hallo Wolfgang

wie könnte ich eine solche Aktualisierung programmieren, habe das leider noch nicht machen müssen.

Ware sehr dankbar über Deine Hilfe.

Grüße aus Magdeburg
Sascha
der Saphir
Mitglied: NetWolf
NetWolf 27.12.2011 um 13:18:19 Uhr
Goto Top
Moin Moin,

ich gehe jetzt mal davon aus, dass du die Aktualisierungsabfrage meinst!

- öffne eine leere Abfrage (leider schreibst du nicht, mit welcher Version du arbeitest, so könnten man dir genauere Hilfe geben)
- je nach Access Version achte darauf, dass du eine Aktualisierungsabfrage wählst
- füge die drei Tabellen hinzu
- erzeuge die Verknüpfung zwischen den Tabellen
- unten trage die Felder ein, die aktualisiert werden sollen [Feld]
- in der Zeile [Aktualisieren] trägst du die Felder ein, aus denen aktualisiert werden soll
- speichern
- doppelklick auf die Abfrage und diese wird ausgeführt

Es ist selbstverständlich, dass man solche Experimente nicht mit den originalen Datenbanken macht, sondern mit einer Kopie!!!

Grüße aus Rostock
Wolfgang
(Netwolf)
Mitglied: saphirmd
saphirmd 27.12.2011 um 17:29:02 Uhr
Goto Top
Hallo Wolfgang,

Ich benutze Ms Access 2003 bzw. dann in der Firma Access 2007

Danke für den Tip mit der Aktualisierungsabfrage. Aber in der Zeile aktualisieren kann ich doch nur Felder eingeben, nicht die dazugehörigen Tabellen auswählen oder muss ich das in der Form <Ttabellenname.Feldname> eingeben?

Und dann noch eins, wahrscheinlich auch ganz simpel....

Wenn ich in einer Prozedur eingebe, dass ich ein Formular (beispielsweise NurLesen öffnen will
gebe ich doch ein "doCmd.openForm "<Formularname"> und dann irgendwann mit Komma getrennt "vbFormReadOnly".....

Jetzt möchte ich, dass mir das Formular angezeigt wird, aber OHNE die Statuszeile am unteren Rand des Formulars, wo steht Datensätze und die Symbole für Vor und Zurück bzw. Neuer Datensatz angezeigt werden
Geht das überhaupt??

Danke Dir.

Sascha
Mitglied: NetWolf
NetWolf 27.12.2011 um 18:01:30 Uhr
Goto Top
Hallo Sascha,

Ich benutze Ms Access 2003 bzw. dann in der Firma Access 2007
dir ist klar, dass gerade zwischen diesen Versionen die größten Änderungen gab.

Danke für den Tip mit der Aktualisierungsabfrage. Aber in der Zeile aktualisieren kann ich doch nur Felder eingeben, nicht
die dazugehörigen Tabellen auswählen oder muss ich das in der Form <Ttabellenname.Feldname> eingeben?
es kommt drauf an. Wenn die Felder die gleiche Bezeichnung haben, dann: ja

Wenn ich in einer Prozedur eingebe, dass ich ein Formular (beispielsweise NurLesen öffnen will
gebe ich doch ein "doCmd.openForm "<Formularname"> und dann irgendwann mit Komma getrennt
"vbFormReadOnly".....
ja

Jetzt möchte ich, dass mir das Formular angezeigt wird, aber OHNE die Statuszeile am unteren Rand des Formulars, wo steht
Datensätze und die Symbole für Vor und Zurück bzw. Neuer Datensatz angezeigt werden
Geht das überhaupt??
ja es geht. Dafür musst du die Eigenschaften des Formulars entsprechend ändern. Navigationsschaltflächen = nein

Grüße aus Rostock
Wolfgang
(Netwolf)
Mitglied: saphirmd
saphirmd 03.01.2012 um 09:07:43 Uhr
Goto Top
Moin Wolfgang

Ich bin ja in Sachen VBA ziemlicher Neuling und probiere mich jetzt an einem Buch erstmal aus,
lesen, Beispiele ausprobiewren und so.

Ich habe auch eine Übungs-CD im Buch und sind einzelne Proceduren schon gespeichert, aufrufbar von "MAKROS" im Datenbankfenster auf.
Nun sind da schon etliche Prozeduren gespeichert. Aber teilweise funktionieren (nur einfache wie Rechenanweisungen)diese Prozeduren nicht.
Beim Aufruf im Editor Fenster (Anklicken derProz. und Ausführen-Symbol) erscheint immer ein Fenster mit d. Bezeichnung "Makro" mit mehreren aufgelisteten Proz.namen, aber die die iich angeklickt habe ist nicht dabei.
Wenn ich im Direktfenster eine selbsterstellte Proz. aufrufen will, bekomme ich auch einen Fehler....
Einzelne Befehle (wie Formularverweis.Caption oÄ) funktionieren im Direktfenster.

"Fehler beim Kompilieren"
"Sub oder Function nicht definiert"

Aber um weiterzukommen, muss ich doch irgendwelche Prozeduren ausführen.
Wäre schön, wenn Du einen Rat für mich hättest.

Gruß aus dem (heute) sonnigen Magdeburg
Sascha
Mitglied: NetWolf
NetWolf 03.01.2012 um 19:22:34 Uhr
Goto Top
Moin Moin,

wichtig ist erst mal, dass du ALLE Prozeduren aus dem Buch in deinen Code übernimmst. Das Ausführen einzelner Prozeduren/Funktionen führt vermutlich dazu, dass weitere Prozeduren und/oder Funktionen aus dem Buch aufgerufen werden.

Wichtig ist auch der Unterschied zwischen Makro und VBA-Code. Das ist nicht das gleiche! Du kannst zwar Makros zu VBA-Code konvertieren, aber umgekehrt geht es nicht. Mein Tipp: du benötigst keine Makros! Wenn du VBA programmieren kannst, sind Makros überflüssig und viel zu umständlich.

Ausführen im Editor macht keinen Sinn. Einzelne Prozeduren/Funktionen sind nicht einfach durch draufklicken ausführbar. Ausgeführt werden Makros und VBA-Code ist eben kein Makro. Das Direktfenster ist zur Fehlersuche und nicht als "normales" Fenster zu nutzen.

Du benötigst erst mal eine Testumgebung. Dafür reicht i.d.R. eine Tabelle und ein Formular.
Aus dem Formular heraus kannst du dann Prozeduren und Funktionen in VBA aufrufen. Du kannst dafür Tasten definieren, oder die Ereignisse des Formulars nutzen.

Grüße aus Rostock
Wolfgang
(Netwolf)
Mitglied: saphirmd
saphirmd 18.01.2012 um 13:46:15 Uhr
Goto Top
Hallo Wolfgang !

Ich bin schon ein bisschen weiter im Buch gekommen, habe leider aber immernoch Probleme.....

Zum Bsp. mit dem Ausdruck
Stringvariable = Formularverweis!txtSuchen
da ich ein Bsp. habe, in dem Datensätze gesucht werden...
Die Stringvar "Suchtext" wird in ein ungebundenes Feld eingegeben, danach wird der pasende Datensatz mit Hilfe der Proc.

Public Sub neue01()

Dim Suchtext As Variant
Suchtext = Form!frm_Ku_Be!txtSuchtext

If IsNull(Suchtext) = True Then
Beep
MsgBox "Es ist kein Suchtext vorhanden!"
Else
Form!frm_Ku_Be!Name.SetFocus
DoCmd.FindRecord FindWhat:=Suchtext, Match:=acAnywhere, _
MatchCase:=False, Search:=acDown, _
SearchAsFormatted:=False, _
OnlyCurrentField:=acCurrent, _
FindFirst:=True
End If

End Sub

gesucht.
Nun meine Frage:Die Schaltfläche für das Suchen ist das ein Befehlsschalter
Der Befehlsschalter funktioniert aber in meinem nachgebauten Formular nicht.

Der Fehler bei
Suchtext = Form!frm_Ku_Be!txtSuchtext
"Access kann das in Ihrem Ausdruck angegebene Form. frm_KuBe nicht finden"


Die Originalproc aus dem Buch funktioniert bei mir der Me!-Eigenschaft nicht

Me!-Eigenschaft ist ein Verweis auf das aktuelle Formular

Hast Du eine Idee??

Danke.

Gruß Sascha