Discussion:
Rückgabewert aus einem Formular
(zu alt für eine Antwort)
Maximilian Incani
2003-07-14 19:23:42 UTC
Permalink
Hallo NG,

ich habe ein Formular, welches ein zweites aufruft, und das aufgerufene
Formular muß einen Ergebniswert an das aufrufende Formular zurückgeben.
Entweder ich suche nun falsch, oder das geht nicht (kann ich mir aber
nicht vorstellen).

Wer kann mir da helfen.

Grüße M. Incani
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Maximilian Incani
2003-07-14 19:50:28 UTC
Permalink
Post by Maximilian Incani
Post by Maximilian Incani
ich habe ein Formular, welches ein zweites aufruft, und das
aufgerufene
Post by Maximilian Incani
Formular muß einen Ergebniswert an das aufrufende Formular
zurückgeben.
Post by Maximilian Incani
Entweder ich suche nun falsch, oder das geht nicht (kann ich mir aber
nicht vorstellen).
private sub form1_load
dim sReturn as string
sReturn = form2.anzeigen
end sub
public function anzeigen as string
me.show vbmodal
anzeigen = "alles ok"
end function
gruss Christian
Hallo Christian,

das Programm wird mit der Fehlermeldung "Variable nicht definiert"
abgebrochen. Wie schreibst Du den die Zeile:

sReturn = form2.anzeigen

Grüße Max
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Christian Stauffer
2003-07-14 13:34:44 UTC
Permalink
Post by Maximilian Incani
das Programm wird mit der Fehlermeldung "Variable nicht definiert"
abgebrochen.
Mach ein neues Programm mit zwei Forms, kopier den Code rein (Korrektur: es
heisst "Form_Load" anstatt "Form1_Load"), und schau Dir an was genau passiert.
Post by Maximilian Incani
sReturn =orm2.anzeigen
Ich weiss zwar nicht was Du meinst, aber o.g. Beispiel macht folgendes:

'Auf Form 2:

'Funktion mit Rückgabewert im Typ "String" wird deklariert
public function anzeigen as string

'Diese Funktion zeigt das Form an
me.show vbmodal
'Der Rückgabewert dieser Funktion wird gesetzt
anzeigen = "alles ok"

'Ende der Funktion
end function


'Auf Form 1:

'Beim Laden des 1. Forms
private sub form_load

'Neue Variable deklarieren, um den Rückgabewert darin abzulegen
dim sReturn as string

'Rückgabewert der Funktion "Anzeigen" auf dem 2. Form in sReturn ablegen
sReturn = form2.anzeigen

end sub

Hoffe geholfen zu haben. Gruss Christian
Maximilian Incani
2003-07-14 20:44:54 UTC
Permalink
Post by Christian Stauffer
Post by Maximilian Incani
das Programm wird mit der Fehlermeldung "Variable nicht definiert"
abgebrochen.
Mach ein neues Programm mit zwei Forms, kopier den Code rein
(Korrektur: es
heisst "Form_Load" anstatt "Form1_Load"), und schau Dir an was genau passiert.
Post by Maximilian Incani
sReturn =orm2.anzeigen
'Funktion mit Rückgabewert im Typ "String" wird deklariert
public function anzeigen as string
'Diese Funktion zeigt das Form an
me.show vbmodal
'Der Rückgabewert dieser Funktion wird gesetzt
anzeigen = "alles ok"
'Ende der Funktion
end function
'Beim Laden des 1. Forms
private sub form_load
'Neue Variable deklarieren, um den Rückgabewert darin abzulegen
dim sReturn as string
'Rückgabewert der Funktion "Anzeigen" auf dem 2. Form in sReturn ablegen
sReturn = form2.anzeigen
end sub
Hoffe geholfen zu haben. Gruss Christian
sReturn = Form_Form1.anzeigen
geht auch.

aber nun heißt es zu Me.show vbModal:

Methode oder Dateiobjekt nicht gefunden. deshalb habe ich

DoCmd.OpenForm (Me.Name)

probiert. Das öffnet mir zwar das Formular, aber es wird nicht auf
dessen abarbeitung gewartet.
Die nachfolgenden Anweisungen werden unmittelbar nach DoCmd.OpenForm
(Me.Name)abgearbeitet.

Grüße Max
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Norbert Schiller
2003-07-14 14:04:33 UTC
Permalink
Hallo Maximilian,
Post by Maximilian Incani
DoCmd.OpenForm (Me.Name)
Kein Fehler? Dann scheinst Du dich da mit VBA abzuquälen :-).

Je nach Anwendung (Access etc.) , versuch's mal in der entsprechenden
VBA-NG.

--
Gruß, Norbert
[mailto:***@freenet.de]
Maximilian Incani
2003-07-14 21:14:07 UTC
Permalink
Post by Norbert Schiller
Hallo Maximilian,
Post by Maximilian Incani
DoCmd.OpenForm (Me.Name)
Kein Fehler? Dann scheinst Du dich da mit VBA abzuquälen :-).
Abquälen ist das richtige Wort, es geht tröpferlesweise weiter. Man man
man .......
Post by Norbert Schiller
Je nach Anwendung (Access etc.) , versuch's mal in der entsprechenden
VBA-NG.
Mein Problem hat ja nicht direkt mit Access zu tun.
Post by Norbert Schiller
--
Gruß, Norbert
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Thomas Voigt
2003-07-14 14:37:32 UTC
Permalink
Hallo Maximilian,
Post by Maximilian Incani
Post by Norbert Schiller
Hallo Maximilian,
Post by Maximilian Incani
DoCmd.OpenForm (Me.Name)
Kein Fehler? Dann scheinst Du dich da mit VBA abzuquälen :-).
Abquälen ist das richtige Wort, es geht tröpferlesweise weiter. Man
man man .......
Aller Anfang ist schwer, aber je mehr man damit arbeitet um so leichter
fallen einen später solche grundlegenden Funktionalitäten.
Post by Maximilian Incani
Post by Norbert Schiller
Je nach Anwendung (Access etc.) , versuch's mal in der
entsprechenden VBA-NG.
Mein Problem hat ja nicht direkt mit Access zu tun.
Aber mit VBA.
Der Unterschied zu VB ist groß.
Solange du keine Access-spezifische VBA-Frage hast helfen dir alle
Office-VBA-Gruppen ansonsten die Access-Gruppe.

Deutsche Groups:
microsoft.public.de.word.vba
microsoft.public.de.access
Post by Maximilian Incani
Post by Norbert Schiller
--
Gruß, Norbert
MfG
Thomas

Christian Stauffer
2003-07-14 14:13:52 UTC
Permalink
Post by Maximilian Incani
Methode oder Dateiobjekt nicht gefunden. deshalb habe ich
DoCmd.OpenForm (Me.Name)
probiert. Das öffnet mir zwar das Formular, aber es wird nicht auf
dessen abarbeitung gewartet.
Weil's nicht modal geöffnet wurde.
Wir reden hier aber schon über Visual Basic, oder? Denn DoCmd.OpenForm () gibt's
afaik in VB nicht (funktioniert bei mir mit VB6 SP5 zumindest nicht), während
me.show mit Sicherheit funktioniert.

Gruss Christian
Peter Götz
2003-07-14 13:53:20 UTC
Permalink
Hallo Maximilian,
Post by Maximilian Incani
ich habe ein Formular, welches ein zweites aufruft, und das
aufgerufene Formular muß einen Ergebniswert an das
aufrufende Formular zurückgeben.
Entweder ich suche nun falsch, oder das geht nicht
(kann ich mir aber nicht vorstellen).
Kleines Beispiel mit 2 Forms.
Form1 ruft die Form2 auf,
Form1 übergibt dabei an Form2 einen Wert vom Typ Currency
Form2 übergibt einen Wert vom Typ Currency an die Form1

' /// Code in Form1
Option Explicit
Private mBetrag as Currency

Public Property Get Betrag() as Currency
Betrag = mBetrag
End Property

Public Property Let Betrag(BetragNew as Currency)
mBetrag = BetragNew
End Property

Private Sub Command1_Click()
With Form2
' Einen Wert an die Eigenschaft
' Form2.Betrag übergeben
.Betrag = 25.12

' und die Form2 anzeigen
.Show , me
end with
End Sub


' /// Code in Form2
Option Explicit
Private mBetrag as Currency

Public Property Get Betrag() as Currency
Betrag = mBetrag
End Property

Public Property Let Betrag(BetragNew as Currency)
mBetrag = BetragNew
End Property

Private Sub IrgendEineSub()
dim curBuffer as Currency

' der von Form1 übergebene Betrag steht in mBetrag,
' mit diesem Wert wird eine Berechnung durchgeführt.
curBuffer = mBetrag/100 * 15

' das Ergebnis der Berechnung wird an
' Form1.Betrag zurückgegeben.
Form1.Betrag = curBuffer
End Sub

' \\\ Ende Code

Durch jeweils ein Prozedurenpaar Property Get / Property Let (bzw. Property
Set für Objekte) erhalten die beiden Forms eine zusätzliche Eigenschaft
.Betrag. Im Beispiel ist dies eine Eigenschaft vom Typ Curency. Natürlich
kann das auch jeder andere VB-Datentyp sein.
Soll eine solche Eigenschaft nur lesbar sein, lässt Du einfach die Property
Let - Prozedur (bzw. Property Set, bei Objekten) weg.
Soll die Eigenschaft nur beschreibbar, aber nicht lesbar sein, lässt Du die
Property Get - Prozedur weg.


Gruß aus St.Georgen
Peter Götz
***@gssg.de
www.gssg.de (mit VB-Tips u. Beispielprogrammen)
Loading...