WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.07.2003, 16:45   #1
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard VB(A) - Kommunikation zwischen Formularen....

Gibts eine schnelle und einfach Möglichkeit um div. Parameter usw. zwischen Formularen zu übergeben?

Das einzige was mir bis jetzt eingefallen ist, ist ein globales Modul mit div. Funktionen, die in globale Variablen des Moduls schreiben.
Und dann rufe ich vom anderen Formular wieder Funktionen des Moduls auf, die mir dann die Parameter wieder zurück geben.

Ist total umständlich, und ich denk mir, da muss es doch was besseres und saubereres geben.

Ich dank euch schon mal für eure Ideen.
renew ist offline   Mit Zitat antworten
Alt 04.07.2003, 10:36   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Da ist deine Problemstellung leider ein wenig ungenau. Was genau willst du machen?
Wenn du auf Werte von beiden Formularen aus zugreifen willst, dann sind globale Variablen gar keine schlechte Lösung. Wenn's passt wäre vielleicht sogar eine Kapselung über eine Klasse was schönes. Wenn du aus einem Formular direkt im anderen Formular was machen willst, dann kannst du es ja auch direkt ansprechen (Funktionen, Felder, ...)
Seidl ist offline   Mit Zitat antworten
Alt 04.07.2003, 11:19   #3
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

z.B.
ich hab ein Übersichtsformular mit div. Datensätzen in einem Listefeld.

Dann klickt man einen Datensatz an - ich möchte die ID an ein anderes Formular übergeben.
Weil in dem Formular was sich dann öffnet möchte ich natürlich gleich den Datensatz anzeigen, der im "Hauptformular" angeklickt wurde.

Ich hab mich mal mit Globalen Variablen gespielt (is schon länger her > 1 Jahr) nur damals hat das ganze net so hin gehaut.
Globale Variablen def. man ja eigenltich in einem modul mit public dim - oder?

Und die Idee mitn Klassenmodul is net sogar supa - das könnt ich mir überlegen.

Weil dann mach ich mir eine Klasse, und setz dort meine Parameter die ich übergeben möchte, und im anderen Formular lese ich diese Standardmäßig aus.
renew ist offline   Mit Zitat antworten
Alt 04.07.2003, 18:17   #4
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Nur so 'ne blöde Idee:
Die Variablen müssten doch "Kinder" der Formulare sein. Vielleicht kann man sie also mit formularname.variable ansprechen?
Ähnlich müsste es auch mit eingabefeldern funktionieren (formularname.eingabefeldname.value).
Keine Ahnung ob das geht (siehe oben).


Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 05.07.2003, 18:52   #5
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

@ jak: Absolut korrekt.

@ LLR: Beim Öffnen eines Formulars kann man auch ein Argument übergeben.

docmd.OpenForm "frmVourForm",,,,,,"YourArgument"
Seidl ist offline   Mit Zitat antworten
Alt 05.07.2003, 21:15   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
@ jak: Absolut korrekt.

@ LLR: Beim Öffnen eines Formulars kann man auch ein Argument übergeben.

docmd.OpenForm "frmVourForm",,,,,,"YourArgument"
ohh, danke.

und die Idee von Jak könnt ich auch aufgreifen.

Jetzt denke ich, ich habe einige Ideen von euch bekommen, wie man das ganze recht schnell abwickeln kann.
renew ist offline   Mit Zitat antworten
Alt 07.07.2003, 15:59   #7
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

So jetzt steh ich vor dem "Problem" (ich hab schon ein wenig früher gepostet - damit ich dann nicht anstehe... )

Hmm, Problem is, wie moch i des jetzt.

Die Einfachste Methode, die ich bei dem Fall jetzt gerne Verwendet hätte ist einer Globalen Variable eines Formulars einen Wert zu geben.

Das Formular was geöffnet wird heißt Formular2 - die Variable Test (vom Typ String).

Der Code dazu schaut folgendermaßen aus:
Code:
DoCmd.OpenForm "Formular2", , , , , , ""

Formular2.test = "hallo"
Nur bei der Zeile Formular2.test kommtals Fehlermeldung: "Objekt erforderlich".

Mir is das auch ein bißchen zu leicht vor gekommen.

Die andere Idee wäre ja ein Klassenmodul. Nur im Prinzip ists da ja dann so, wie wenn ich das mit einem "normalen" Modul und dortigen globalen Variablen gemacht hätte.
Bzw. kann ich überhaupt einer Function/Procedure in einer Klasse Variablen übergeben - weil ich bekomm bei meinem kleinen Testprogramm sowohl bei der Prozedur "schreiben (strVar as string)" als auch bei der Function "Lesen() as string" die Fehlermeldung:
"Objektvariable oder With-Blockvariable nicht fest gelegt"

Hmm, ich bin noch ein ziemlicher DAU was Klassen betrifft.

BTW: wenn jemand ein paar nette Tutorials od. sonstige Webseiten zum Thema Klassen in VB kennt (damit meine ich was geht, was geht nicht und wie gehts), dann bitte einen Link posten.
renew ist offline   Mit Zitat antworten
Alt 07.07.2003, 16:50   #8
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

Zitat:
Das Formular was geöffnet wird heißt Formular2 - Variable Test (vom Typ String)
Wie hast sie deklariert?
flinx ist offline   Mit Zitat antworten
Alt 07.07.2003, 16:53   #9
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

das is der ganze Code vom neuen Formular:
Code:
Option Compare Database
Dim test As String

Private Sub Befehl0_Click()

Dim hallo As testklasse

MsgBox test

End Sub
Das ganze is noch auf testbasis - weil da findet man Fehler schneller, wie wenn ich zwischen 900 Code-Zeilen herumpfusch.

Aufgerufen wirds von einem anderen "Pseudo-Formular", names Formular1, auch mit einem Button.
renew ist offline   Mit Zitat antworten
Alt 07.07.2003, 17:13   #10
flinx
Inventar
 
Registriert seit: 08.04.2001
Beiträge: 3.101


Standard

Zitat:
Variablen, die mit Dim auf Modulebene deklariert wurden, stehen allen Prozeduren innerhalb des Moduls zur Verfügung. Auf Prozedurebene deklarierte Variablen stehen nur innerhalb der umgebenden Prozedur zur Verfügung.
Versuchs mit:
Code:
Public test as String
flinx ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:39 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag