mauvaise déclaration

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

mauvaise déclaration

Messagepar asx9 » 16 Juin 2003 à 11:33

voici ma déclaration qui me pose problème: Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigatorLe problème doit venir du fait que je travaille sur la version 4.6la question serait alors que deviennent NotesViewEntry et NotesViewNavigator?
asx9
 

Re: mauvaise déclaration

Messagepar Raziel » 16 Juin 2003 à 12:07

Salut,Comme ces 2 classes ne sont pas connu de la 4.6, il va te falloir adapter ton code. Si tu veux de l'aide, envoi nous ton code afin que l'on puisse te dire comment t'y prendre.Raziel.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: mauvaise déclaration

Messagepar asx9 » 16 Juin 2003 à 13:03

voici mon code (il n'est pas de moi je l'ai récupéré)Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigator Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base de document Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Set dataview = db.getview(ViewString) ' Ouvre la vue rows = 1 cols = 1 maxcols = ColumnCount 'Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On prend la première feuille du classeur ' On met le titre de la vue xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set entry=vwnav.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur " & dc.count & "." rows=rows+1 Set entry = vwnav.getnextdocument(entry) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé."'***** Vous pouvez activer la ligne ci-dessous si vous voulez enregistrer le document en automatique'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve le document Set xlapp=Nothing ' Stop l'automation excel Set db=Nothing End Sub
asx9
 

Re: mauvaise déclaration

Messagepar Raziel » 16 Juin 2003 à 13:11

A quoi correspond le vwnav de la ligne suivante "Set entry=vwnav.GetFirstDocument" ? Il n'est jamais initialisé...Il va te falloir remplacé les Notesentry par des notesdocumentsQuant à la NotesViewNavigator, je ne vois pas à quoi elle sert dans ce code...
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 13:36

Bonjour,Il est utilisé pour récupérer les valeurs de colonnes dans la boucle qui suit :Set entry=vwnav.GetFirstDocumentrows=3 ' On se place sur la troisième ligneDo While Not (entry Is Nothing)For cols=1 To maxcolscolvals=entry.ColumnValues(cols-1) '<=== Iciscope=Typename(colvals)Select Case scopeCase "STRING"xlsheet.Cells(rows,cols).Value ="'" + colvalsCase Elsexlsheet.Cells(rows,cols).Value = colvalsEnd SelectNext colsxlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur " & dc.count & "."rows=rows+1Set entry = vwnav.getnextdocument(entry) '<=== Et iciLoop[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar Raziel » 16 Juin 2003 à 13:41

Soit mais où "vwnav" est il initialisé ?Je devrais normalement avoir une ligne du type set vwnav = .....
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 13:46

Re,C'est mon code, et en regardant ce qu'il à récupéré ne correspond pas à l'original, il manque une grande parti de ce que c'était dont l'initialisation vwnav. Sur le coup je n'avais pas vue la ligne d'initialisation était manquante, ci-dessous le d'origine avec toutes les déclarations correct :Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigator Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base dedocument Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Redim Preserve ShowView(N) ' Trie les vues par ordre alphabétique For i=0 To N For K=i To N If ShowView(i) > ShowView(k) Then FieldName=ShowView(i) ShowView(i) = ShowView(k) ShowView(k)=FieldName End If Next k Next i viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"Liste des vues","Choisissez unevue","",ShowView ) If Len(viewstring)=0 Then Exit Sub Set dataview = db.getview(ViewString) ' Ouvre la vue'*******************************************' Initilisation manquante ci-dessous : Set vwnav= dataview.createViewnav() rows = 1 cols = 1 maxcols=dataview.ColumnCount ' Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On prend la premièrefeuille du classeur ' On met le titre de la vue xlsheet.Cells(rows,cols).Value ="Vue : " + ViewString + ", de la base : " +db.title +", extraction du : " + Format(Now,"mm/dd/yyyy HH:MM") xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set entry=vwnav.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur" & dc.count & "." rows=rows+1 Set entry = vwnav.getnextdocument(entry) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé." '***** Vous pouvez activer la ligne ci-dessous si vous voulez enregistrerle document en automatique 'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve ledocument dataview.clear Set xlapp=Nothing ' Stop l'automation excel Set db=NothingEnd Sub[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar asx9 » 16 Juin 2003 à 13:58

j'en profite pour remercier Stéphane Maillard pour son code qui me permet d'avoir un bon exemple de Script.mais il y a plusieurs petites choses qui ne correspondent pas avec la version 4.6si vous savez comment modifier ce code pour le rendre compatible avec la V4.6 cela m'arrangerai pas mal.
asx9
 

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 14:00

Bonjour,Je n'est plus de 4.6, je vais essayer de voir ce que je peux faire.[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 14:09

Re,Je viens de retrouver un vieux CD d'une 4.6.6b, il est un peu raillé, j'espère qu'il va fonctionner.[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 14:35

Re,Voici un code qui fonctionne sur ma 4.6.6b, personnellement je l'ai testé dans une action sur une vue :Sub Click(Source As Button) ' Variables Dim session As New NotesSession Dim db As NotesDatabase Dim v As NotesView 'Constantes Const View$="Locations" '<=== Nom de la vue à exporté Const ExportItem$="Export" '<=== Champs qui indique si le document à été exporté Const xlsSave$="False" '<=== Détermine si le document doit être enregistré Const xlsFileName$="c:\temp\file_name.xls" '<=== Nom du fichier à enregistrer avec le chemin complet 'Variable de session Set db = session.CurrentDatabase Set v = db.GetView(View$) Set xl = CreateObject("Excel.application") Set xlWbk = xl.Workbooks.Add col!=1 Forall vColumn In v.Columns xlWbk.ActiveSheet.Cells(1, col!)=vColumn.Title col!=col!+1 End Forall Dim docX As NotesDocument Set docX=v.GetFirstDocument row!=2 While Not docX Is Nothing col!=1 Set item=docX.GetFirstItem(ExportItem$) Process=False If item Is Nothing Then Process=True Elseif item.Text="" Then Process=True End If If Process=True Then Forall cValue In docX.ColumnValues xlWbk.ActiveSheet.Cells(row!, col!)=cValue col!=col!+1 End Forall row!=row!+1 End If Call docX.ReplaceItemValue(ExportItem$, Now) Call docX.Save (True, True) Set docX=v.GetNextDocument(docX) Wend If xlsSave$="True" Then Call xlWbk.SaveAs(xlsFileName$) Call xlWbk.Close Else xl.Visible=True End IfEnd SubVoilà, j'espère que cela vous sera util.[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar Raziel » 16 Juin 2003 à 14:36

Vous allez surement dire que je suis tétu mais je ne vois tjs pas l'intérét de passer par une NotesViewNavigator pour rélaiser ce traitement...Enfin bref...Voici 1 code qui devrai fonctionné :Sub Initialize Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant Dim doc As notesdocument '***** Vous pouvez modifier le code pour qu'il fasse appel à une autre base de document Set db = session.CurrentDatabase Vlist= db.views ' Récupère les vue de la base K=Ubound(Vlist) ' Récupère le nombre de vue Redim Preserve ShowView(K) N=-1 For i = 0 To K If Len(Vlist(i).Name) >0 Then FieldName=Trim(Vlist(i).Name) If Mid(Fieldname,1,1) <>"(" Then ' On n'affiche pas les vues caché N=N+1 ShowView(N) = FieldName End If End If Next i Redim Preserve ShowView(N)' Trie les vues par ordre alphabétique For i=0 To N For K=i To N If ShowView(i) > ShowView(k) Then FieldName=ShowView(i) ShowView(i) = ShowView(k) ShowView(k)=FieldName End If Next k Next i viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"Liste des vues","Choisissez une vue","",ShowView ) If Len(viewstring)=0 Then Exit Sub Set dataview = db.getview(ViewString) ' Ouvre la vue'******************************************* rows = 1 cols = 1 maxcols=dataview.ColumnCount ' Récupère le nombre de colonne Set xlApp = CreateObject("Excel.Application")' Lance Excel xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.Workbooks.Add xlApp.ReferenceStyle = 2 Set xlsheet = xlApp.Workbooks(1).Worksheets(1) ' On met le titre de la vue xlsheet.Cells(rows,cols).Value ="Vue : " + ViewString + ", de la base : " + db.title +", extraction du : " + Format(Now,"mm/dd/yyyy HH:MM") xlApp.StatusBar = "Création des entêtes de colonnes. Veuillez patienter..." rows=2 ' On commence à la deuxième ligne For K=1 To maxcols Set c=dataview.columns(K-1) xlsheet.Cells(rows,cols).Value = c.title cols = cols + 1 Next K Set doc=dataview.GetFirstDocument rows=3 ' On se place sur la troisième ligne Do While Not (Doc Is Nothing) For cols=1 To maxcols colvals=doc.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next cols xlApp.StatusBar = "Importation des données - Document " & rows-1 '& " sur" & dc.count & "." rows=rows+1 Set doc = dataview.getnextdocument(doc) Loop xlApp.Rows("1:1").Select xlApp.Selection.Font.Bold = True xlApp.Selection.Font.Underline = True xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select xlApp.Selection.Font.Name = "Arial" xlApp.Selection.Font.Size = 9 xlApp.Selection.Columns.AutoFit With xlApp.Worksheets(1) .PageSetup.Orientation = 2 .PageSetup.centerheader = "Rapport" .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date : &D" .Pagesetup.CenterFooter = "" End With xlApp.ReferenceStyle = 1 xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminé." 'xlapp.ActiveWorkbook.saveas "C:\Vue" + Trim(Format(Now,"yyy")) ' Sauve le document dataview.clear Set xlapp=Nothing ' Stop l'automation excel Set db=NothingEnd Sub
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: mauvaise déclaration

Messagepar Stephane Maillard » 16 Juin 2003 à 14:41

Re,Normalement non, car dans la 4.6, le prompt n'est pas encore dans la classe NotesUIWorkspace, tout du moins sur ma 4.6.6b[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: mauvaise déclaration

Messagepar Raziel » 16 Juin 2003 à 14:54

Oups, j'avais pas fais gaffe au prompt....Je modifie ça de suite.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: mauvaise déclaration

Messagepar asx9 » 16 Juin 2003 à 15:03

je vais tester tout cela, ça risque d'être un peu long car ça rame un max aujourd'hui.encore mercips je suis exactement sur v4.6.3a
asx9
 

Suivant

Retour vers Développement