Autor Thema: NotesViewEntryCollection als Rueckgabewert einer Funktion  (Gelesen 2462 mal)

Offline geppertb

  • Frischling
  • *
  • Beiträge: 27
Hallo,

ich habe ein kleines Problem und zwar wollte ich eine Variabel des Typs 'NotesViewEntryCollection' als Rueckgabewert einer Funktion. Innerhalb der folgenden Funktion kann ich auf die Dokumente ohne Probleme zugreifen:

Code
Function dbwsBuscarSecoes(sIdIdioma As String ) As NotesViewEntryCollection
	On Error Goto ErrorHandler	
	
	Dim nvSecao		As NotesView
	Dim chave		As String
	
	' Busca visão de páginas
	' =======================
	Set nvSecao = DbCadastrosWebsite.GetView("($BDWS-SECA)")
	If nvSecao Is Nothing Then
		Error 5000, "Erro acessando visão de seção."
	End If
	
	chave = sIdIdioma
	
	Set dbwsBuscarSecoes = nvSecao.GetAllEntriesByKey(chave, True)
	
	Exit Function
	
ErrorHandler:
	
	Call terrTratarErro( Session, "", "dbwsBuscarSecoes", Error$, Err, Erl )
	Exit Function
	
End Function


Wenn ich jetzt allerdings diese Funktion aufrufen moechte liefert sie mir einen Fehler (Error 91, Object Variable not set).

       
Code
Dim Result  As NotesDocumentCollection
	Set Result = dbwsBuscarSecoesx("PT")
	Msgbox Result.Count

Schreibe ich nun das ganze auf NotesDocumentCollection um funktionierts, allerdings verliere ich dabei auch die Sortierung, auf welche ich nicht verzichten kann.

Wie kann ich also eine sortierte NotesViewEntryCollection aus einer Funktion zurueckgeben?

mfg

Bastian

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: NotesViewEntryCollection als Rueckgabewert einer Funktion
« Antwort #1 am: 31.03.09 - 14:13:47 »
Hallo,

das Problem ist bekannt. Du mußt der Prozedur als Paramater den Bezug auf die View übergeben. Bei deiner Vorgehensweise wird der Rückgabewert beim Aussprung aus der Funktion gelöscht.

mfg

Rainer
Rainer Zaske

MCSD - C#

Offline geppertb

  • Frischling
  • *
  • Beiträge: 27
Re: NotesViewEntryCollection als Rueckgabewert einer Funktion
« Antwort #2 am: 31.03.09 - 14:24:53 »
Hallo Zaludtske,

wenn ich dich richtig verstanden habe dann soll ich, anstatt die NotesViewEntryCollection als Rueckgabewert der Funktion zu uebergeben als Parameteruebergeben?

Code
Function dbwsBuscarSecoes(sIdIdioma As String, myVar As NotesViewEntryCollection ) As String
	On Error Goto ErrorHandler	
	
	Dim nvSecao		As NotesView
	Dim chave		As String
	
	' Busca visão de páginas
	' =======================
	Set nvSecao = DbCadastrosWebsite.GetView("($BDWS-SECA)")
	If nvSecao Is Nothing Then
		Error 5000, "Erro acessando visão de seção."
	End If
	
	chave = sIdIdioma
	
	Set myVar = nvSecao.GetAllEntriesByKey(chave, True)
	dbwsBuscarSecoes = ""

	Exit Function
	
ErrorHandler:
	
	Call terrTratarErro( Session, "", "dbwsBuscarSecoes", Error$, Err, Erl )
	Exit Function
	
End Function

und dann diesen wert auslesen:

       
Code
 Dim myVar As NotesDocumentCollection
	Call dbwsBuscarSecoesx("PT", myVar )
	Msgbox myVar .Count

Dies habe ich schon probiert und es hat leider auch nicht geklappt. Vielleicht ist es an dieser Stelle interessant, dass die erste Funktion (dbwsBuscarSecoes) in einer Bibliothek steckt und ich das ganze aus einem Agent heraus aufrufe.

s_Old

  • Gast
Re: NotesViewEntryCollection als Rueckgabewert einer Funktion
« Antwort #3 am: 31.03.09 - 14:27:23 »
Hallo Zaludtske,

wenn ich dich richtig verstanden habe dann soll ich, anstatt die NotesViewEntryCollection als Rueckgabewert der Funktion zu uebergeben als Parameteruebergeben?

Ich hab´s so verstanden, dass du die NotesView mit übergeben musst... nur keine Ahnung, ob die schon gesetzt sein muss oder nicht??

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: NotesViewEntryCollection als Rueckgabewert einer Funktion
« Antwort #4 am: 31.03.09 - 14:28:16 »
Der Notesview muß gesetzt übergeben werden.
Rainer Zaske

MCSD - C#

Offline geppertb

  • Frischling
  • *
  • Beiträge: 27
Re: NotesViewEntryCollection als Rueckgabewert einer Funktion
« Antwort #5 am: 31.03.09 - 14:44:32 »
Danke ZaLudtske,

ich habe es getestet und es funktioniert, fuer diejenigen die das gleiche Problem haben wie ich schreibe ich noch wie meine funktion richtig aussieht:


Code
Function dbwsBuscarSecoes(sIdIdioma As String, myView As NotesView ) As NotesViewEntryCollection
	On Error Goto ErrorHandler	
	
	Dim chave		As String
	
	
	chave = sIdIdioma
	
	Set dbwsBuscarSecoes = myViewGetAllEntriesByKey(chave, True)

	Exit Function
	
ErrorHandler:
	
	Call terrTratarErro( Session, "", "dbwsBuscarSecoes", Error$, Err, Erl )
	Exit Function
	
End Function


und der Aufruf:

Code
        Dim myVar As NotesViewEntryCollection
        Dim myView As NotesView

        Set myView = db.getView("($BDWS-SECA)")
	myVar = dbwsBuscarSecoesx("PT", myView)
	Msgbox myVar .Count


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz