Autor Thema: NotesViewEntryCollection als Rueckgabewert einer Funktion  (Gelesen 2581 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