Page 1 sur 1

Récuperer champ $REF avec API C

MessagePublié: 09 Déc 2009 à 09:34
par kagura31
Bonjour,

J'ai un document réponse avec $REF.
Je n'arrive pas à récupérer la valeur du champ pour ouvrir le document pair.
Je travaille sur une DLL en C avec les API C.

J'ai essayé :
Code : Tout sélectionner
if (NSFItemGetText(note_handle,"$REF",szRefFlag,MAXUSERNAME))
      {
               }

Il ne rentre pas dans le if.

Ensuite j'ai essayé de récupérer le BLOKID:
Code : Tout sélectionner
error = NSFItemInfo(note_handle,"$REF",0, &bhNoteItem, NULL,
                                &bhNoteValue, NULL);


Il m'affiche qu'il ne trouve pas le champ.

J'ai donc fais une boucle pour afficher tout les champs, la miracle il le trouve.
Code : Tout sélectionner
error = NSFItemInfo(note_handle, NULL, 0, &bhNoteItem, NULL,
                        &bhNoteValue, NULL);
               OSLoadString (NULLHANDLE, ERR (error),szErrorString,MAXENVVALUE);
               sprintf(buffer, "NSFItemInfo note_handle error =  %s",szErrorString);
               write_log(buffer);

   while (!error)
   {
      
      /* Grab the item name */
         NSFItemQuery(note_handle, bhNoteItem, NewName, sizeof(NewName),
                        &NewNameLen, NULL, NULL, NULL, NULL);
      NewName [NewNameLen] = '\0';

      sprintf(buffer, "       NewName  = %s",NewName);
      write_log(buffer);


           if (strcmp(NewName,"$REF") == 0)
      {
                write_log("CExtmgrspyApp::ConflictManagement => NewName = '$REF'" );
                     OSUnlockBlock(bhNoteValue);

      }
error  = NSFItemInfoNext(note_handle, bhNoteItem, NULL, 0,
                               &bhNoteItem, NULL, &bhNoteValue, NULL);
                  OSLoadString (NULLHANDLE, ERR (error),szErrorString,MAXENVVALUE);
                  sprintf(buffer, "NSFItemInfoNext error =  %s\n",szErrorString);
                  write_log(buffer);
   }


Cependant je n'arrive pas à récupérer la valeur du BLOKID.

MessagePublié: 09 Déc 2009 à 10:25
par d.bugger
Recherche autour la méthode LS : GetParentDocID

MessagePublié: 10 Déc 2009 à 09:50
par kagura31
Merci pour la réponse.

Mais ça répond pas à ma question.
Je recherche la même chose mais en utilisant les API C et je développe en C.

MessagePublié: 10 Déc 2009 à 10:22
par d.bugger
J'ai trouvé ça, j'espère que ça te met sur la bonne piste:
http://www-12.lotus.com/ldd/doc/tools/c ... FIELD_LINK

Apparemment, il faut utiliser le nom FIELD_LINK

Désolé, c''est tout que j'ai trouvé...

MessagePublié: 10 Déc 2009 à 10:38
par d.bugger
Et ça :
http://www-12.lotus.com/ldd/doc/tools/c ... enDocument

Fais des recherches dans Google avec "FIELD_LINK lotus", c'est intéressant !

MessagePublié: 10 Déc 2009 à 10:48
par kagura31
Merci.

J'avais trouvé ses documents sur le net.
Ils montrent comment créer un document de réponse et donc comment créer le champ $REF.
Cependant ils ne disent pas comment récupérer la valeur du champ pour avoir le document père.

Mais ça y est j'ai trouvé comment faire :

Code : Tout sélectionner
BLOCKID bhNoteValue;
char *Value;
UNID id;
NOTEHANDLE  note_handle_Father = NULLHANDLE;

Value = OSLockBlock(char, bhNoteValue);
memcpy((char*)&id, Value + 4, sizeof(UNID));
error=NSFNoteOpenByUNID(m_db,&id,0,&note_handle_Father);   

MessagePublié: 10 Déc 2009 à 11:35
par d.bugger
Bon ! Je n'aurais pas pu dire...