Ouvrir un document Location avec une API C

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Ouvrir un document Location avec une API C

Messagepar kagura31 » 06 Oct 2009 à 14:49

Bonjour,

Dans mon notes.ini, j'ai : Location=Replication,9F6,CN=Karine
J'aimerai pouvoir ouvrir ce document en utilisant l'API C.

Cordialement
Dernière édition par kagura31 le 12 Oct 2009 à 10:14, édité 1 fois.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Michael DELIQUE » 06 Oct 2009 à 14:56

salut

tu as regardé là => http://forum.dominoarea.org/api-f30.html

et là => http://forum.dominoarea.org/api-en-cour ... n-f62.html

si tu trouvais ton bonheur ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Jérome Deniau » 06 Oct 2009 à 14:58

NSFNoteOpen
Jérome Deniau
 

Messagepar kagura31 » 06 Oct 2009 à 15:30

Merci pour les réponses.

Oui, j'avais regardé dans les trucs et astuces pour les API mais je n'ai pas trouvé mon bonheur.

Dans le notes.ini, je recupère Location par :
Code : Tout sélectionner
OSGetEnvironmentString(_T("LOCATION"),szLocation,MAXENVVALUE);

Donc szLocation = "Replication,9F6,CN=Karine"
J'aimerai pouvoir récuperer " 9F6 " qui correspond à ID du document Location pour pouvoir utiliser NSFNoteOpen.
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 06 Oct 2009 à 15:42

Une fois que tu as la variable en mémoire, tu parcours (via un token la chaine) généralement la première valeur est le nom du site, le deuxième paramètre l'ID du doc avec une fonction C cela le fait...
Jérome Deniau
 

Messagepar kagura31 » 06 Oct 2009 à 16:15

Ma question va être bête, je programme ma DLL en C mais je suis encore débutant en C.
Y a t'il une fonction pour récuperer ID entre les 2 virgules ?
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 06 Oct 2009 à 16:39

strtok
#include <string>
char *chaine;

chaine = strtok(<tavariabledunotesini>,",");
// on se fout de la première entrée
chaine = strtok(NULL,",");
chaine continet le 2ème paramètre
Jérome Deniau
 

Messagepar kagura31 » 07 Oct 2009 à 08:59

Merci, j'ai bien obtenu l'ID.

Par contre, j'ai une erreur sur le NSFNoteOpen. Il ne trouve pas le document.
Est ce dû au fait que mon ID est "9F6" (la fin de ID du document)?

Voici le code:
Code : Tout sélectionner
   TCHAR *szLocationID;

   DBHANDLE    hDB;
   NOTEHANDLE  note_handle;
   DWORD NoteID;

szLocationID = strtok(szLocation,",");
szLocationID = strtok(NULL,",");

NoteID = *szLocationID;

error = NSFDbOpen("names.nsf",&hDB);

error = NSFNoteOpen (
            hDB,                    /* database handle */
       NoteID,                 /* note ID */
            0,                      /* open flags */
            &note_handle);         /* note handle (return) */
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 07 Oct 2009 à 10:21

A moin avis rajoute un zéro devant to noteid

Const NOTE_CLASS_HELP = &h0100
Jérome Deniau
 

Messagepar kagura31 » 07 Oct 2009 à 10:41

Je ne vois pas comment ajouter Const NOTE_CLASS_HELP = &h0100 à mon NoteID ?
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 07 Oct 2009 à 10:44

C'est un exemple ;-)
Jérome Deniau
 

Messagepar kagura31 » 07 Oct 2009 à 10:59

Ok.
J'ai rajouter un le 0 mais il ne trouve toujours pas le document.
ID = "09F6"
Je suis allée sur le document sont
ID = 0F7C20C494:68EFD20C
0NC1257624:0046C5A3
SDC125763F:004654D4-SN00000004
DBC1257624:00242DF7
NT000009F6

Sinon est ce qu'il serait possible de recuperer le document en utilisant le nom du document de Location qui se trouve dans le notes.ini ?
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 07 Oct 2009 à 11:53

Oui en parcourant la vue:
obtenir la vue
obtenir la collection
se déplacer la doc est présente dans l'apic répertoire doc xxxug pour user guide.

sinon essaie avec

http://www-01.ibm.com/support/docview.w ... ct463lotus

certaines versions ont besoin du NTXXXXXXXXX pour le noteid, dès fois juste la valeur suffit
Jérome Deniau
 

Messagepar kagura31 » 07 Oct 2009 à 16:21

Je ne sais pas une fois avoir obtenu la collection, comment tester le nom de chaque document avec celui du Location du notes.ini.

Code : Tout sélectionner
error = NSFDbOpen("names.nsf",&hDB);

   char     ViewName[]="Adva_nced\Locations";
   NOTEID      ViewID;             
   HCOLLECTION hCollection;
   HANDLE nbHandleIDTable;

error = NIFFindView (hDB, ViewName, &ViewID);

error = NIFOpenCollection(
         hDB,            /* handle of db with view */
         hDB,            /* handle of db with data */
         ViewID,         /* note id of the view */
         0,              /* collection open flags */
         NULLHANDLE,     /* handle to unread ID list */
         &hCollection,   /* collection handle */
         NULLHANDLE,     /* handle to open view note */
         NULL,           /* universal note id of view */
         NULLHANDLE,     /* handle to collapsed list */
         &nbHandleIDTable);   /* handle to selected list */
kagura31
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 115
Inscrit(e) le : 12 Avr 2006 à 15:08
Localisation : Lyon

Messagepar Jérome Deniau » 07 Oct 2009 à 18:04

Toujours dans le user guide de l'api, il suffit de boucler!
sinon un extrait de code, mais bon ce sont mes variables

dans le for je récupère ce qui m'intéresse.....
CollPosition.Level = 0;
CollPosition.Tumbler[0] = 0;
do
{
if ( erreur = NIFReadEntries(
hCollection,
&CollPosition,
NAVIGATE_NEXT,
1L,
NAVIGATE_NEXT,
0xFFFFFFFF,
READ_MASK_NOTEID,
&hBuffer,
NULL,
NULL,
&EntriesFound,
&SignalFlag))
{
NIFCloseCollection (hCollection);
NSFDbClose ((DBHANDLE far)BaseConso);
LogLine(IMAILMSGERRORVIEWNIF);
return;
}
else
{

if (hBuffer != NULLHANDLE)
{
IdList = (NOTEID far*) OSLockObject (hBuffer);
for (i=0; i<EntriesFound; i++)
{
erreur = TouchNotesTampon((DBHANDLE far *)&BaseConso,IdList[i], NomBaseJournal,NomBaseSuivi,NomBaseReport);
}
OSUnlockObject (hBuffer);
OSMemFree (hBuffer);
}

}
} while (SignalFlag & SIGNAL_MORE_TO_DO);
Jérome Deniau
 

Suivant

Retour vers Développement

cron