ProfileDocuments und Delitionstubs über die CAPI bekommen

  • Hallo liebe Community,


    ich habe gleich 3 Problemstellungen damit es sich leztendlich auch lohnt.
    Ersteinmal ein paar Daten:
    Lotus Notes 8.5
    Visual Studio 2010
    In C/C++ bewandert und ein wenig in Java


    Nr1&2
    Ich möchte gerne( alle Probleme möchte ich in VB lösen) die Profildocuments innerhalb einer Datenbank zählen.
    Desweiteren möchte ich die Daten mit einer anderen Funktion anzeigen lassen.


    Nr3
    Ich möchte gerne alle Informationen der DelitionStubs bekommen.


    Ich habe mich jetzt seit einer gewissen Zeit mit der CAPI beschäftigt/Bsp. angeschaut jedoch finde ich nicht recht die Funktionen die ich benötige oder ich sehe einfach etwas nicht.
    Ich würde mich über denkhilfen oder hinweise freuen. Bitte keine "KomplettLösungen" geben da ich gerne mir den Weg alleine "bahnen" möchte.
    Ein kleiner hinweis, ich nutze eine JavaNativ Aufruf um Dinge wie Pfade und Servername übergebe.


    Mit freundlichen Grüßen
    Benjamin Schröder

  • Zu 1. und 2.Wenn du die COM API verwendest kannst du das in VBA komplett mit den Notes Klassen ansprechen. Stichwort GetProfileDocCollection, NotesDocument


    Zu 3.


    NSFSearch mit der entsprechenden Option findet DeletionsStubs

  • Tut mir leid, dass ich mich jetzt erst melde aber habe am Wochenende kaum Zeit gefunden mich damit zu beschäftigen.


    Mit den Delitionstubs arbeite ich heute und danke dir schonmal für die große Hilfe. Doch was meinst du mit COM API ich habe die standart API von IBM da kann ich keine der Klassen ansprechen, die du meinst.


    Mit freundlichen Grüßen
    Benjamin Schröder

  • COM = Component Object Model


    Das ist eine API mit der du die Funktionalitäten von Anwendungen verwenden kannst, z.B. kann man über die COM API von Excel auch Tabellen erstellen und mit der von Notes eben die Script Klassen benutzen.
    Schau einfach mal in die Notes Designer Hilfe, da gibt es schon Beispiele für z.B. VBA

  • Da werden mir nur BSP angezeigt wie ich Notesseitig daran komme? Ich brauche aber das ganze auf C++. Ich habe mit den DeletionStubs und NSFSearch angefangen und ein wenig rumgewerkelt. Ist alles noch sehr "spartanisch" aber vlt hilft es dir mein Problem zu verstehen.


    Externer Funktionsaufruf:

    Code
    JNIEXPORT jobjectArray JNICALL Java_com_group_giwscan_nsupport_NativeSupport_getDeletionStubsOfDBNative  (JNIEnv *env, jclass, jstring server, jstring path, jint type) {	DBHANDLE	db_handle;			//Handle for Database	DBHANDLE	hTable;				//Handle for IDTABLE	STATUS		error = NOERROR;	jint		counts=0;	char    	full_netpath[MAXPATH] = "";	size_t found;	//std::string path_c(path(env->GetStringUTFChars(path,0)).filename().string();)	const char	*konv = env->GetStringUTFChars(path,0);	const char	*server_c = env->GetStringUTFChars(server,0);	std::string file(konv);	found=file.find_last_of("/\\");	file=file.substr(found+1);	printf(file.c_str());	printf(server_c);	NotesInit();	OSPathNetConstruct(NULL,server_c,file.c_str(),full_netpath);	NSFSearch (db_handle,NULLHANDLE,NULL,SEARCH_NOTIFYDELETIONS + SEARCH_SUMMARY,NOTE_CLASS_DOCUMENT,NULL,file_action,NULL,NULL); }



    File Action Routine

    Code
    STATUS LNPUBLIC file_action        	(void *unused,        	SEARCH_MATCH far *pSearchMatch,        	ITEM_TABLE *summary_info){	STATUS    	error;	SEARCH_MATCH SearchMatch;	memcpy( (char*)&SearchMatch, (char*)pSearchMatch, sizeof(SEARCH_MATCH) );	if (!(SearchMatch.SERetFlags & SE_FMATCH))    	return (NOERROR);	if (error = print_file_summary (summary_info))		 return(error);	return (NOERROR);}


    FileSummary Schreiben


    Ich benötige alle Daten als String, ist soetwas Ratsam? oder sollte ich in C++ alles selber ausgeben?


    Mit freundlichen Grüßen

  • Wie brauchst du es jetzt ?


    In deinem Ursprungsposting hast du geschrieben, daß du die Profildokument Routinen für VB brauchst und dafür wäre die COM Schnittstelle die richtige Wahl.


    Wenn du sie in C/C++ brauchst dann bietet die API direkt entsprechende Funktionen um auf Profildokumente zugreifen zu können.


    Und zu deiner Aussage, daß es da nur Notes Beispiele gibt: Die ist falsch. In der Designer Hilfe gibt es ein Kapitel über den COM Zugriff (Accessing the Domino Objects through COM) und dort gibt es Beispiele für VB, VBScript und JScript/JavaScript. Mit C/C++ würde das analog funktionieren, aber wenn du dort eh schon per API darauf zugreifst würde ich auch alles drüber machen

  • Ok, dann versuche ich das ganze nochmal etwas genauer.


    Ich habe in JAVA ein Programm geschrieben, in dem man einige Informationen von einer ausgewählten Datenbank bekommt. Um aber die API anzusprechen benötige ich ja C++ also habe ich eine NATIV Funktion exporitert. Nun möchte ich über C++ die CAPI ansprechen. Die ProfilDocumente der bestimmten Datenbank(Die mit Pfad und Servername übergeben wird) finden und zählen. Danach wird einfach per Return das Value zurück gegeben.


    Bei den Delitionstubs wirds da schon schwieriger. Da brauche ich ja auch alle Daten.


    Ich hoffe ich konnte es verständlich erläutern.

  • Auch für Java gibt es eine API. Also wenn du per Java Notes/Domino Funktionen ansprechen willst, dann würde ich stattdessen diese verwenden.


    Da musst du dich dann nicht mit Konvertierungsproblemen oder ähnlichem rumschlagen und du hast die gleichen Funktionalitäten zur Verfügung wie es auch unter Script gibt.


    Bei den Deletion Stubs brauchst du zwangsweise die C-API weil das LowLevel Funktionen sind.

  • Naja da ich jetzt das ganze so geschrieben habe, das ich nur noch mit C++ arbeiten muss, macht es jetzt auch nichts mehr.


    Aber nun zurück zum eigentlichen Thema :). Wo oder vielmehr welche Funktionalität findet ProfileDocuments?