BASIC-Laufzeitfehler. Objektvariable nicht belegt

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: BASIC-Laufzeitfehler. Objektvariable nicht belegt

Re: BASIC-Laufzeitfehler. Objektvariable nicht belegt

von peterschleif » Di, 15.12.2009 14:28

Hallo Stefan.
Hallo Oliver.

Das stimmt. Bei Parametern am Ende der Liste geht es. Also entweder am Anfang lassen (ohne Typ bzw mit Variant) oder ans Ende setzen.
Gut zu wissen. :-)

Code: Alles auswählen

Sub Main
   Main2(,"a",)
End sub

Sub Main2(Optional w As String, x As String, Optional y As String)
	print isMissing(w), isMissing(y)
End Sub
Peter

Re: BASIC-Laufzeitfehler. Objektvariable nicht belegt

von Stephan » Di, 15.12.2009 14:06

Weshalb bekomme ich nun die Fehlermeldung, obwohl ich doch das Argument als optional übergebe?
Bin ich mir auch nicht im Klaren.

Du könntest diesen Parameter aber wohl ans Ende der Paramerterliste stellen, dann sollte e funktionieren auch wenn Du ddeen nicht übergibst.

Du darfst optionalen Parametern keinen Datentyp zuweisen (außer Variant) sonst liefert IsMissing() immer False.
Für mich nicht nachvollziehbar. In folgendem Beispiel wird trotz DEklaration als String bei IsMissing() True geliefert:

Code: Alles auswählen

Sub Main
   Main2("a",)
End Sub

Sub Main2(x As String, Optional y As String)
Msgbox isMissing(y)
End Sub


Gruß
Stephan

Re: BASIC-Laufzeitfehler. Objektvariable nicht belegt

von peterschleif » Di, 15.12.2009 13:44

Hallo Oliver.

Du darfst optionalen Parametern keinen Datentyp zuweisen (außer Variant) sonst liefert IsMissing() immer False. Du müsstest den Datentyp also ganz weglassen oder Variant wählen.

Code: Alles auswählen

Sub insert_into_ResultSet(Optional oForm,            sFormname as String, sResultfield as String, iKz as Integer)
Sub insert_into_ResultSet(Optional oForm As Variant, sFormname as String, sResultfield as String, iKz as Integer)

Peter

BASIC-Laufzeitfehler. Objektvariable nicht belegt

von oliver1804 » Di, 15.12.2009 12:06

Hallo liebe Gemeinde,

ich benutze folgende Prozedur:

Code: Alles auswählen

Option Explicit

' bei INSERT, UPDATE und DELETE Ident ins Formular-ResultSet eintragen
Sub insert_into_ResultSet(Optional oForm as Object, sFormname as String, sResultfield as String, iKz as Integer)

	' iKz = 0: INSERT/UPDATE
	' iKz = 1: DELETE
	
	Dim nSp as Long

	If isMissing(oForm) Then	
		oForm = ThisComponent.drawpage.forms.getByName(sFormname)
	End If
	
	nSp = oForm.findColumn(sResultfield)
	oForm.updateString(nSp,iUserID)
	
	' vor dem DELETE erfolgt ein UPDATE
	If iKz = 1 Then
		oForm.upDateRow()
	End If

End Sub

, die ich (in diesem Fall) mittels

Code: Alles auswählen

Sub insupd_editorid

	insert_into_ResultSet(,"MainForm","id_staff_editor",0)

End Sub
aufrufe.

Weshalb bekomme ich nun die Fehlermeldung, obwohl ich doch das Argument als optional übergebe?

Danke für die Hilfe
Oliver

Nach oben