Informations entre 2 vues

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

Informations entre 2 vues

Messagepar edcj » 26 Nov 2010 à 00:04

Bonjour,

Est il possible depuis la colonne d'une vue A de récupérer des infos concordantes d'une vue B pour affichage dans vue A.

Disons que dans ma vue A j'ai des entetes de factures et je souhaite récupérer des informations dans une vue B contenant des infos sur les lignes détail.

Pour un N° de facture 200, j'ai 10 lignes détail, le lien entre les 2, c'est le numéro de facture.

Les 2 vues sont dans des bases différentes.

J'ai essayé @dblookup, mais je n' y arrive pas pour l'instant, est ce possible.

Merci d'avance pour votre aide

Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar roubech » 26 Nov 2010 à 02:32

non pas possible dans une vue
apres, je ne maitrise pas encore les Xpages, mais je crois que tu peux afficher une liste dans une Xpage qui s'appuie sur une vue où tu viens spécifier quelle colonne de la vue tu veux afficher et si tu veux faire une traiement sur chaque ligne pour rechercher des données ailleurs
mais si tu n'es pas en version 8 oublies (d'où l'intérête de spécifier la version)
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Michael DELIQUE » 26 Nov 2010 à 09:39

hello

roubech à raison, hormis via les xpage c'est impossible.
(apres on peut trouver des solutions tordu)

et puis question bete Client lourd ou web ?
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 amahi » 26 Nov 2010 à 10:38

Je serait moins affirmatif concernant les Xpages: tu ne pourra pas faire simplement ce que tu recherches.
Une vue n'est pas un element actif mais une representation de tes données. De plus une vue ne peut avoir qu'une source de données etabli par une formule de selection qui agit dans la base courante.
@Novaliance
amahi
Empereur des posts
Empereur des posts
 
Message(s) : 1032
Inscrit(e) le : 08 Jan 2007 à 16:57
Localisation : Region parisienne

Messagepar edcj » 26 Nov 2010 à 18:04

Bonjour,
J'ai bien compris que ce n'est pas possible ou çà ne va être facile, j'ai besoin de vos conseils. je vous expose mon problème.
j'ai une base Interventions et une base fiche interventions.
Dans la base interventions, disons qu'une intervention est prévue pour 20h chez un client, un technicien se déplace x fois chez le client et fait des fiches, ex (fiche1 2h, fiche2, 3h). Depuis la vue Interventions, j'ai besoin d'avoir une vue synthétique (prévue 20h, conso 5h, reste 15h) et si possible voir
pour une fiche d'intervention un certain nombre d'infos depuis les fiches.(date fiche intervention, N° fiche intervention,temps passé pour un fiche). Le lien entre les 2 bases, N° Intervention.
Merci d'avance pour vos conseils. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar Michael DELIQUE » 28 Nov 2010 à 14:37

bon je vois 2 solutions (qui se ressemblent) sans tomber dans l'usine à gaz

- un notesuiworkspace.picklistecollection qui permet d'afficher dans une dialogbox une vue (pas forcement la base en cours) et tu as une ooption pour faire un restricttocatégory (pour n'afficher que les document en fonction de ton N° d'intervention.

- sur la base cible une vue intégré dans un masque avec un restrictocategory. la base source affiche le masque de la base cible et lui passe le N° d'intervention.


ces 2 solution ont l'avantage d'être rapide a mettre en place sans être obligé de tout casser
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 edcj » 01 Déc 2010 à 20:21

Salut Michael,
Je te remercie pour tes conseils, je vais essayé de tester tout çà, mais il me faut un peu de temps car je suis encore un novice dans lotus script,
et que je suis assez occupé sur d'autres dossiers non lotus.
En tout cas, merci beaucoup. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar edcj » 14 Déc 2010 à 21:21

Bonjour,

Pour l'instant je laisse de côté l'affichage détail, mais plus urgent,
Je souhaite totaliser toutes les fiches détail d'une intervention et reporter le total dans la fiche entête.
Ex: totaliser toutes les lignes d'une facture et reporter le total dans l'entete sachant que ces 2 bases distinctes.
Je souhaite faire ce traitement par un agent. Merci de votre aide.
Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar roubech » 14 Déc 2010 à 21:51

à la sauvegarde de chaque facture ? ou planifié la nuit ?
ou est le pb ?
tu as une vue ui liste tes factures, catégorisée selon ton inter
tu la parcours tu ajoutes le montant de ta facture dans une variable
une fois toutes ls facture d'une ionter parcourue, tu stocke le total stocké dans ta variable dans le doc inter
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar edcj » 14 Déc 2010 à 22:48

Je suppose que tout çà, c'est ls, j'essaierai, mais j'avoue que je suis très novice en ls, merci de tes conseils
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar Michael DELIQUE » 15 Déc 2010 à 08:44

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 edcj » 15 Déc 2010 à 14:44

Merci Michael, tu me l'as déjà donné, je suis un programmeur d'iséries qui de tant en tant fait un peu de lotus, je n'ai pas suffisamment de temps pour m' autoformer mais je fais de mon mieux. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar edcj » 15 Déc 2010 à 23:04

Bonjour,
Comment faire pour déclarer en ls 2 vues distinctes issues de 2 bases distinctes. Vue 1 dans base1.nsf et vue 2 de base2.nsf.
Je souhaite lire les 2 vues dans un m^me agent, est ce possible.
Merci de votre aide. Cordialement

Voici Mon code

Sub Initialize
Dim s As New NotesSession
'Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim doc2 As NotesDocument
Dim item As NotesItem
Dim Toth As String
Dim view1 As NotesView
Dim view2 As NotesView
'Dim dc As NotesdocumentCollection
Set db = s.CurrentDatabase
Set doc = db.CreateDocument
Set doc2 = db.CreateDocument
Set db = session.CurrentDatabase

Set view1 = db.GetView( "AllTickets" )
Set view2 = db.GetView( "Intervention Par Ticket" )

' Lecture 1 ère Vue
' ------------------------------

Set doc = view1.GetFirstDocument
While Not doc Is Nothing
'Toth = doc.GetItemValue(IENTicket)(0)
Msgbox doc.IENTicket(0), Number

' Lecture 2 ème Vue
' ------------------------------

' Set dc = view2.GetAllDocumentsByKey(Number, False)
Set doc2 = view2.GetDocumentByKey(Number,True)
While Not doc2 Is Nothing
Toth=Toth + Temps
Msgbox Temps, Toth
Set doc2 = view2.GetDocumentByKey(Number,True)
Wend

'Doc.form="Ticket"
'Doc.IENDuration = Toth
'Doc.LIBELLE = retLib
'Call Doc.Save(True,True)
Set doc = view1.GetNextDocument( doc )
Wend

End Sub
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Messagepar roubech » 16 Déc 2010 à 00:03

si tu ne sais pas comment instancier la base 2, tu peux regarder dans l'aide
http://publib.boulder.ibm.com/infocente ... CLASS.html


la 1ere chose à définir, c'est où et quand ton code va s'éxécuter ?
par exemple, un agent planifié dans la base 1 qui est lancé par le serveur tous les soirs et qui va donc parcourir tous les docs facture de la base 1 pour aller chercher dans la base 2 tous les docs detail
ou
un script lancé sur le poste de l'utilisateur lorsqu'il va enregistrer un doc detail dans la base 2 et qui ira alors chercher le doc facture correspondant dans la base 1 pour remonter la valeur

à voir ton code, ce serait plutot la 1ère hypothèse
sans tester dans designer, ça donnerait quelquechose comme ça :

[syntax="LotusScript"]
Sub CalculTotal

On Error goto ErrorHandler

Dim s as New NotesSession
Dim db1 as NotesDatabase, db2 as NotsDatabase
Dim view1 as NotesView, view2 s NotesView
Dim dc2 as NotesDocumentCollection
Dim doc1 as NotesDocument, doc2 as NotesDocument
Dim cle as string
Dim total as double

' instancier la vue des docs facture de la base courante
set db1 = s.CurrentDatabase
set view1 = db1.GetView( "AllTickets" )
if view1 is nothing then
msgbox "Erreur ..."
exit sub
end if
' instancier la vue des docs detail dans la base 2 (sur le même serveur)
set db2 = New NotesDatabase( "", "chemin\base2.nsf" )
if not db2.IsOpen is nothing then
msgbox "Erreur ..."
exit sub
end if
set view2 = db2.GetView( "Intervention Par Ticket" )
if view2 is nothing then
msgbox "Erreur ..."
exit sub
end if

' Parcourir les docs facture
set doc1 = view1.GetFirstDocument()
while not doc1 is nothing
' remettre le compteur à 0 quand on change de doc facture
total = 0
' Rechercher les docs detail associés
cle = doc1.GetItemValue("IENTicket")(0)
set dc2 = view2.GetAllDocumentsByKey( cle, true )
' Parcourir les docs detail pour calculer le total
set doc2 = dc2.GetFirstDocument()
while not doc2 is nothing then
' incrémenter le compteur
total = total + doc2.GetItemValue("IENDuration")(0)
' passer au doc detail suivant
set doc2 = dc2.GetNextDocument(doc2)
end if

' mettre à jour le doc facture
doc1.ReplaceItemValue( "IENDurationTotal", total )

' passer au doc facture suivant
set doc1 = view1.GetNextDocument(doc1)
wend

exit sub

ErrorHandler :
msgbox "Erreur n° " & err & " dans 'CalculTotal' à la ligne " & erl & " : " & error
exit sub

End sub
[/syntax]
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar edcj » 16 Déc 2010 à 04:17

Merci Roubech d'avoir corriger mon code , je vais tester tout çà et je tiens au courant.
Effectivement, c'est la 1ère hypothèse concernant le traitement de l'agent, tu as bien compris mon problème. (J'avais trouvé entre temps comment déclaré la 2ème base). A bientôt. Cordialement
edcj
Premier posts
Premier posts
 
Message(s) : 44
Inscrit(e) le : 26 Jan 2009 à 14:29

Suivant

Retour vers Développement