VBA-MS Access 2010 Wie Sie eine Unterroutine aufrufen, die ein Objekt?
Ich habe versucht, erstellen Sie eine Unterroutine in VBA für meine Access-Anwendung:
Public Sub addProduct(ByRef Product As Product, AsFoo As Integer, Optional Mutual As Boolean = True)
Products.Add (Product)
If (Mutual) Then
Select Case AsFoo
Case 0
Product.setProjectmanager = Me
Case 1
Product.setVIP1 = Me
Case 2
Product.setVIP2 = Me
Case 11
Product.setVIP1A = Me
Case 22
Product.setVIP2A = Me
End Select
End If
End Sub
Man sollte nur hinzufügen, dass das vorliegende Produkt eine Sammlung von Produkten und setzen den Verweis auf das Benutzer-Referenz, wenn die Gegenseitige wahr ist.
Dass man arbeiten sollte... das problem ist, dass ich don T wissen, wie aufrufen, die
meine aktuellen versuche ist:
User.addProduct(Product, 0, True)
Aber die IDE will ein = am Ende, so dass ich dachte, das würde funktionieren:
User.addProduct(Product, 0, True) = Product
Aber das verursacht einen Kompilierungsfehler:
Expected function or Variable
- Sie müssen erklären, wie die öffentliche Funktion: public sub nicht zurück Werte oder Objekte.
- Ich möchte aber nicht wieder zurückgeben, es sollte nur hinzufügen, dass Produkt-Auflistung der Benutzer. Gibt es eine Möglichkeit dies zu erreichen?
- Sie nicht brauchen, zu verwenden
Set
bei der VergabeProduct.setProjectmanager = Me
weilMe
ist ein Objekt? - Auch, @KimGysen erwähnt benötigen Sie eine Funktion, um einen Wert zurückzugeben, aber
User.addProduct(Product, 0, True) = Product
sieht aus wie du meinstProduct = User.addProduct(Product, 0, True)
...? - 1. uhmm ja, ich denke schon, vielen Dank für eine. und 2. Nein eigentlich will ich die erste Zeile: Benutzer.addProduct(Product, 0, True), aber dann bekomme ich eine Fehlermeldung, die besagt, dass a = ist zu erwarten und die IDE sagt mir, ich geben Produkt... Hexe wird nicht funktionieren...
- Mein Fehler... Siehe meine Antwort, dann.
- Hmm, ich bin mir nicht sicher, ob ich das richtig verstanden habe, aber ich probierte es weiter unten...
- Nur eine Frage: da Sie Access verwenden, konnten Sie nicht enthalten, diese Daten in einer viele-zu-viele Verwandte (assoziierte) Tabelle? Frage nur, ich weiß nicht, was Sie brauchen, so es ist nur ein Vorschlag.
- ja du hast Recht, in der Tat. Ich dachte, eine Antwort schreiben, denn es hätte zu lange für die Kommentare. Vielen Dank für die Meldung trotzdem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen aufrufen, die Zeile mit:
User.addProduct Product, 0, True
oder
Call User.addProduct(Product, 0, True)
Entfernen der
()
oder mit derCall
keyword sollte für Sie arbeiten.Ich bin mir nicht sicher, ob dies ist, was Sie tun möchten, aber wenn es ist das hinzufügen von Klasseninstanzen zu einer Sammlung, die ich vorschlagen, so etwas wie dieses:
Und für private Produkt Eigenschaften der Klasse Projectmanager, VIP1, VIP2, VIP1A,VIP2A
Erklären Sie Eigenschaften in einer Klasse, Modul so:
- Und Getter /setter:
Wenn der Typ ein Objekt ist, müssen Sie verwenden statt der LASS.
Vielleicht habe ich deine Absichten falsch, denn ich sehe nicht den Zweck, das hinzufügen von Mir zu jedem der Fälle. Aber das war das beste, das ich kommen konnte mit.