DialogBox

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

Messagepar Michael DELIQUE » 13 Oct 2009 à 14:13

re pour qu'un view.getdocumentbykey fonctionne il faut que la/les colonnes sur laquelle s'effectue la recherche soit trié !

ensuite avec l'option true, la recherche est exact...

maintenant es tu certain que la dites valeur est dans ta vue ?
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 roubech » 13 Oct 2009 à 18:57

si ton but est de changer un champ dans chacun des docs sélectionés lors du drag & drop, tu n'as pas besoin de passer par un getDocumentByKey pour les mettre à jour, tu peux passer par clllection.StampAll comme ajouté par Michael ...
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar steph1708 » 14 Oct 2009 à 10:43

Bonjour,

Michael : oui ma colonne est triée puisque c'est une vue de type agenda, donc obligé de trier ma 1ere colonne et ma valeur est bien dans ma vue puisque c'est la date

roubech : mon but est de changer doc par doc puisque c'est pour changer la date d'un doc via une vue type agenda
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar Jérome Deniau » 14 Oct 2009 à 23:24

J'ai un doute mais, créé une vue de test identique à la vue agenda que tu interroges, dans la colonne 1 mets @text(champdate), je pense que keys de type chaine recherche une chaine via getdocumentbykey MAIS la colonne de l'agenda est de type DATE donc getdocumentbykey doit renvoyer nothing à tous les coups.

en résumé si je recherche une chaine (ce qui est le cas ici) il faut que la colonne soit de type chaine, si je recherche une date il faut que ma clé soit de type date et doit correspondre au type de données stockés dans le document si le champ est dans la formule de la colonne.

Mais bon je n'ai pas le temps de valider ni tester....
Jérome Deniau
 

Messagepar steph1708 » 22 Oct 2009 à 10:32

Bonjour,
Je sais que je vais peut être passer pour un boulet, mais après plusieurs essais, je suis toujours sur ma dialogbox. alors j'ai fait d'autres tests.
J'y suis presque je pense, mais...mais, il y a une subtilité que j'ai du mal à comprendre avec le NotesUIDocument et le NotesDocument pourtant je me suis documentée, mais ne connaissant que peu de choses à lotusscritpt je bloque.

voici mon code

Sub Postdragdrop(Source As Notesuiview)

Dim session As NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim A As NotesDocument '//demande
Dim B As notesdocument '/Dlgtest
Dim view As Notesview

'//Initialisation de la session
Set session = New NotesSession
'//base active
Set db = session.CurrentDatabase
'//Initialisation de l'espace de travail
Set ws = New NotesUIWorkspace
'//Initialisation de la vue
Set view = db.GetView ("Agenda Créa")
If view Is Nothing Then
Msgbox "Vue non trouvée"
Exit Sub
End If

'//Initialisation du doc support de boite de dialogue
Set B = New NotesDocument (db)
Call ws.DialogBox("Dlgtest",True, True, False, False, False, False,"Changement de date",B)

'//Accès au document
Set A= New NotesDocument (session.CurrentDatabase)
Call A.ReplaceItemValue("form", "creademande")
Call A.ReplaceItemValue ("datdebCR", B.GetItemValue ("datdebCR"))
Call A.Save (True, False)
Call ws.ViewRefresh ()

End Sub

Alors ici : Set A= New NotesDocument (session.CurrentDatabase)
je ne veux pas qu'il me créé un nouveau doc (je sais c'est que je lui demande), mais je veux qu'il modifie le document courant que j'ai sélectionné avec ma souris.

J'espère que j'ai été claire, et je vous remercie bien sûr pour votre aide précieuse.
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar abertisch » 22 Oct 2009 à 11:00

Salut,

Bon j'ai pas lu tout le post :D mais je pense que l'idée est là ?

Code : Tout sélectionner
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim docCurrent As NotesDocument
   Dim B As notesdocument '/Dlgtest
   Dim view As Notesview
   
'//base active
   Set db = session.CurrentDatabase
   Set uidoc = ws.CurrentDocument()
   Set docCurrent = uidoc.Document()
   
'//Initialisation de la vue
   Set view = db.GetView ("Agenda Créa")
   
   If (view Is Nothing) Then
      Msgbox "Vue non trouvée"
      Exit Sub
   End If
   
'//Initialisation du doc support de boite de dialogue
   Set B = New NotesDocument(db)
   Call ws.DialogBox("Dlgtest",True, True, False, False, False, False,"Changement de date",B)
   
'//Accès au document
   
   Call uidoc.Save()
   uidoc.EditMode = False
   
   Call docCurrent.ReplaceItemValue("form", "creademande")
   Call docCurrent.ReplaceItemValue ("datdebCR", B.GetItemValue ("datdebCR"))
   Call docCurrent.Save(True, False)
   Call uidoc.Close()
"Lotus, il n'y a qu'en rouleaux que ça fait pas mal au cul"
abertisch
Roi des posts
Roi des posts
 
Message(s) : 763
Inscrit(e) le : 25 Oct 2006 à 13:51
Localisation : Suisse

Messagepar steph1708 » 23 Oct 2009 à 10:27

Bonjour,

Oui merci abertisch, effectivement c'est l'idée, mais il doit manquer qq chose non ??
J'ai un message "Object variable not set" avec ce code pourtant toutes les variables sont là ??!!???
Merci de votre aide
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar abertisch » 23 Oct 2009 à 10:53

Salut,

Pour voir le problème utilise le debug lotusScript qui se trouve dans (en anglais) : File->Tools->Debug LotusScript et comme ça tu verras ou se trouve l'erreur.
"Lotus, il n'y a qu'en rouleaux que ça fait pas mal au cul"
abertisch
Roi des posts
Roi des posts
 
Message(s) : 763
Inscrit(e) le : 25 Oct 2006 à 13:51
Localisation : Suisse

Messagepar steph1708 » 23 Oct 2009 à 14:18

Re salut

j'ai fais comme tu m'as dis, et le "Object variable not set" apparait au niveau de cette ligne : Set docCurrent = uidoc.Document()

et honnêtement, je ne vois pas pourquoi ?
merci de ton aide
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar Michael DELIQUE » 23 Oct 2009 à 14:19

salut

tu as undocument d'ouvert quand tu fais tourner l'agent?
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 steph1708 » 23 Oct 2009 à 15:05

Salut

non mon doc est fermé puisque ce code s'execute à partir d'une vue type agenda dans l'evenement postdragdrop.
Ce message apparait lorsque je fais glisser mon doc sur une autre date.
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar Jérome Deniau » 23 Oct 2009 à 15:28

prednre dans ce cas notesdatabase.unprocesseddocuments (représente le ou les documents sélectionnés dans la vue), ne pas utiliser uidocument donc....
Jérome Deniau
 

Messagepar steph1708 » 26 Oct 2009 à 15:10

Bonjour,

Bon alors ça se précise, mais j'ai toujours des erreurs dans mon code. Pourtant c'est pas faute d'essayer.
Alors maintenant j'ai une erreur "Object variable not set", sur la ligne
Call De.ReplaceItemValue("form", "creademande")

Voici le code complet avec évidemment la prise en compte de vos précieuses remarques.

Code
Sub Postdragdrop(Source As Notesuiview)

Dim session As NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim ws As New NotesUIWorkspace
Dim De As NotesDocument '//demande
Dim B As Notesdocument '/Dlgtest
Dim view As Notesview

Set session = New NotesSession
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set De = collection.GetFirstDocument()

'//Initialisation de la vue
Set view = db.GetView ("Agenda Créa")
If view Is Nothing Then
Msgbox "Vue non trouvée"
Exit Sub
End If

'//Initialisation du doc support de boite de dialogue
Set B = New NotesDocument (db)
Call ws.DialogBox("Dlgtest",True, True, False, False, False, False,"Changement de date",B)

'//Accès au document
Call De.ReplaceItemValue("form", "creademande")
Call De.ReplaceItemValue ("datdebCR", B.GetItemValue ("datdebCR")(0))
Call De.Save (True, False)
Call ws.ViewRefresh ()

End Sub

Merci d'avance pour votre aide
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

Messagepar abertisch » 26 Oct 2009 à 15:22

Salut,

A mon avis ton document DE ne doit pas être initialisé. regarde avec le debugeur.
"Lotus, il n'y a qu'en rouleaux que ça fait pas mal au cul"
abertisch
Roi des posts
Roi des posts
 
Message(s) : 763
Inscrit(e) le : 25 Oct 2006 à 13:51
Localisation : Suisse

Messagepar steph1708 » 26 Oct 2009 à 15:53

re,

le debugeur met "object variable not set" sur la ligne

Call De.ReplaceItemValue("form", "creademande")
steph1708
Posteur néophyte
Posteur néophyte
 
Message(s) : 73
Inscrit(e) le : 11 Mai 2009 à 14:02
Localisation : Paris

PrécédentSuivant

Retour vers Développement

cron