Bonjour a toutes et a tous,
Dans un Carnet d'adresses de Lotus Notes je veux lire un champ correspondant
a une valeur de cle:
Set Session = CreateObject("Notes.NotesSession")
Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False)
Set V = DB.GETVIEW(CA_View)
aKey(0) = aTemp(1) & " , " & aTemp(2)
Set Doc = V.GETDOCUMENTBYKEY(aKey, True)
If Not Doc Is Nothing Then
aNames = Doc.GETITEMVALUE("FullName")
En VB, ma variable aNames (variant) recoit bien un tableau
mais en vbscript elle reste obstinement Empty
Est-ce que quelqu'un aurait deja rencontre ce probleme?
D'avance merci
--
TiMike
Sinon en énumérant directement la collection, un truc du genre :
... For Each sName In Doc.GETITEMVALUE("FullName") WScript.Echo sName Next ...
Amicalement,
-- Jean - JMST Belgium
jbongran
TiMike45 wrote:
Bonsoir Jean La solution Set = ne convient pas puisque aNames n'est pas un objet (je veux lire la valeur) L'autre solution (For each ...), je l'avais aussi essaye sans resultat (sName est Empty) Si tu as d'autres idees, je suis preneur Merci beaucoup
Le tableau aKey est bien initialisé avec sa dimension dans ton code? Du style Dim aKey(1) Sinon il faut faire usage des mots clés ReDim et Preserve
Cette routine affichant le type de variable retournée peut être utile pour lever le doute: WScript.Echo "Type de la variable aNames: " & ConvertAsString(VarType(aNames)) Function ConvertAsString(IntCode) Dim strTmp Select Case intCode Case 0 strTmp = "Empty (non initialisée)" Case 1 strTmp = "Null (aucune donnée valide)" Case 2 strTmp = "Entier" Case 3 strTmp = "Entier long" Case 4 strTmp = "Nombre en virgule flottante en simple précision" Case 5 strTmp = "Nombre en virgule flottante en double précision" Case 6 strTmp = "Monétaire" Case 7 strTmp = "Date" Case 8 strTmp = "Chaîne" Case 9 strTmp = "Objet Automation" Case 10 strTmp = "Erreur" Case 11 strTmp = "Booléen" Case 12 strTmp = "Variant (utilisé seulement avec des tableaux de Variants)" Case 13 strTmp = "Objet non Automation" Case 17 strTmp = "Octet" Case 8192 strTmp = "Tableau" Case Else strTmp = ""Aucune idée du type de variable correspondant au code " & intCode End Select ConvertAsString = strTmp End Function
TiMike45 wrote:
Bonsoir Jean
La solution Set = ne convient pas puisque aNames n'est pas un objet
(je veux lire la valeur)
L'autre solution (For each ...), je l'avais aussi essaye sans resultat
(sName est Empty)
Si tu as d'autres idees, je suis preneur
Merci beaucoup
Le tableau aKey est bien initialisé avec sa dimension dans ton code?
Du style Dim aKey(1)
Sinon il faut faire usage des mots clés ReDim et Preserve
Cette routine affichant le type de variable retournée peut être utile pour
lever le doute:
WScript.Echo "Type de la variable aNames: " &
ConvertAsString(VarType(aNames))
Function ConvertAsString(IntCode)
Dim strTmp
Select Case intCode
Case 0 strTmp = "Empty (non initialisée)"
Case 1 strTmp = "Null (aucune donnée valide)"
Case 2 strTmp = "Entier"
Case 3 strTmp = "Entier long"
Case 4 strTmp = "Nombre en virgule flottante en simple précision"
Case 5 strTmp = "Nombre en virgule flottante en double précision"
Case 6 strTmp = "Monétaire"
Case 7 strTmp = "Date"
Case 8 strTmp = "Chaîne"
Case 9 strTmp = "Objet Automation"
Case 10 strTmp = "Erreur"
Case 11 strTmp = "Booléen"
Case 12 strTmp = "Variant (utilisé seulement avec des tableaux de
Variants)"
Case 13 strTmp = "Objet non Automation"
Case 17 strTmp = "Octet"
Case 8192 strTmp = "Tableau"
Case Else strTmp = ""Aucune idée du type de variable correspondant
au code " & intCode
End Select
ConvertAsString = strTmp
End Function
Bonsoir Jean La solution Set = ne convient pas puisque aNames n'est pas un objet (je veux lire la valeur) L'autre solution (For each ...), je l'avais aussi essaye sans resultat (sName est Empty) Si tu as d'autres idees, je suis preneur Merci beaucoup
Le tableau aKey est bien initialisé avec sa dimension dans ton code? Du style Dim aKey(1) Sinon il faut faire usage des mots clés ReDim et Preserve
Cette routine affichant le type de variable retournée peut être utile pour lever le doute: WScript.Echo "Type de la variable aNames: " & ConvertAsString(VarType(aNames)) Function ConvertAsString(IntCode) Dim strTmp Select Case intCode Case 0 strTmp = "Empty (non initialisée)" Case 1 strTmp = "Null (aucune donnée valide)" Case 2 strTmp = "Entier" Case 3 strTmp = "Entier long" Case 4 strTmp = "Nombre en virgule flottante en simple précision" Case 5 strTmp = "Nombre en virgule flottante en double précision" Case 6 strTmp = "Monétaire" Case 7 strTmp = "Date" Case 8 strTmp = "Chaîne" Case 9 strTmp = "Objet Automation" Case 10 strTmp = "Erreur" Case 11 strTmp = "Booléen" Case 12 strTmp = "Variant (utilisé seulement avec des tableaux de Variants)" Case 13 strTmp = "Objet non Automation" Case 17 strTmp = "Octet" Case 8192 strTmp = "Tableau" Case Else strTmp = ""Aucune idée du type de variable correspondant au code " & intCode End Select ConvertAsString = strTmp End Function
Gilles LAURENT
"TiMike45" a écrit dans le message de news: | Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ | correspondant a une valeur de cle: | Set Session = CreateObject("Notes.NotesSession") | Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False) | Set V = DB.GETVIEW(CA_View) | aKey(0) = aTemp(1) & " , " & aTemp(2) | Set Doc = V.GETDOCUMENTBYKEY(aKey, True) | If Not Doc Is Nothing Then | aNames = Doc.GETITEMVALUE("FullName") | En VB, ma variable aNames (variant) recoit bien un tableau | mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau de Variants. VBScript ne permet pas la manipulation de ce type de valeur. Une solution de contournement consiste à écrire une petite fonction 'helper' permettant de contourner cette limitation :
+++ Exemple WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem) For Each oItem In oDoc.Items If oItem.Name = strItem Then GetItemValue = oItem.Text Next End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
"TiMike45" <TiMike45@discussions.microsoft.com> a écrit dans le message
de news:AABA34BC-6A7F-434D-9930-489594C8BEBC@microsoft.com
| Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ
| correspondant a une valeur de cle:
| Set Session = CreateObject("Notes.NotesSession")
| Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False)
| Set V = DB.GETVIEW(CA_View)
| aKey(0) = aTemp(1) & " , " & aTemp(2)
| Set Doc = V.GETDOCUMENTBYKEY(aKey, True)
| If Not Doc Is Nothing Then
| aNames = Doc.GETITEMVALUE("FullName")
| En VB, ma variable aNames (variant) recoit bien un tableau
| mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau
de Variants. VBScript ne permet pas la manipulation de ce type de
valeur. Une solution de contournement consiste à écrire une petite
fonction 'helper' permettant de contourner cette limitation :
+++ Exemple
WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem)
For Each oItem In oDoc.Items
If oItem.Name = strItem Then GetItemValue = oItem.Text
Next
End Function
"TiMike45" a écrit dans le message de news: | Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ | correspondant a une valeur de cle: | Set Session = CreateObject("Notes.NotesSession") | Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False) | Set V = DB.GETVIEW(CA_View) | aKey(0) = aTemp(1) & " , " & aTemp(2) | Set Doc = V.GETDOCUMENTBYKEY(aKey, True) | If Not Doc Is Nothing Then | aNames = Doc.GETITEMVALUE("FullName") | En VB, ma variable aNames (variant) recoit bien un tableau | mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau de Variants. VBScript ne permet pas la manipulation de ce type de valeur. Une solution de contournement consiste à écrire une petite fonction 'helper' permettant de contourner cette limitation :
+++ Exemple WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem) For Each oItem In oDoc.Items If oItem.Name = strItem Then GetItemValue = oItem.Text Next End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
Jean
Si tu as d'autres idees, je suis preneur
En fait j'utilise SmartSuite depuis des années mais je n'ai malheureusement pas Notes, je ne sais donc pas tester.
La réponse de Gilles Laurent me semble logique.
Sinon, à tout hasard et en complément, en faisant une recherche web j'ai touvé ceci : http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/d0468e6a11659b5c85256eee00742c69?OpenDocument
dans le fil de discussion : http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/db7418be40b938cc85256eef00001785?OpenDocument
qui indique que pour que GetDocumentByKey fonctionne en automation il faut que la colonne clef soit la première colonne triée dans la vue.
Mais ça dépend peut être de la version.
Amicalement,
-- Jean - JMST Belgium
Si tu as d'autres idees, je suis preneur
En fait j'utilise SmartSuite depuis des années mais je n'ai
malheureusement pas Notes, je ne sais donc pas tester.
La réponse de Gilles Laurent me semble logique.
Sinon, à tout hasard et en complément, en faisant une recherche web
j'ai touvé ceci :
http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/d0468e6a11659b5c85256eee00742c69?OpenDocument
dans le fil de discussion :
http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/db7418be40b938cc85256eef00001785?OpenDocument
qui indique que pour que GetDocumentByKey fonctionne en automation il
faut que la colonne clef soit la première colonne triée dans la vue.
En fait j'utilise SmartSuite depuis des années mais je n'ai malheureusement pas Notes, je ne sais donc pas tester.
La réponse de Gilles Laurent me semble logique.
Sinon, à tout hasard et en complément, en faisant une recherche web j'ai touvé ceci : http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/d0468e6a11659b5c85256eee00742c69?OpenDocument
dans le fil de discussion : http://www-10.lotus.com/ldd/46dom.nsf/4d21f120f5a2cf4985256a150076d0d5/db7418be40b938cc85256eef00001785?OpenDocument
qui indique que pour que GetDocumentByKey fonctionne en automation il faut que la colonne clef soit la première colonne triée dans la vue.
Mais ça dépend peut être de la version.
Amicalement,
-- Jean - JMST Belgium
Gilles LAURENT
"jbongran" a écrit dans le message de news: | Function ConvertAsString(IntCode) | Dim strTmp | Select Case intCode | Case 0 strTmp = "Empty (non initialisée)" | Case 1 strTmp = "Null (aucune donnée valide)" | Case 2 strTmp = "Entier" | Case 3 strTmp = "Entier long" | Case 4 strTmp = "Nombre en virgule flottante en simple | précision" Case 5 strTmp = "Nombre en virgule flottante en | double précision" Case 6 strTmp = "Monétaire" | Case 7 strTmp = "Date" | Case 8 strTmp = "Chaîne" | Case 9 strTmp = "Objet Automation" | Case 10 strTmp = "Erreur" | Case 11 strTmp = "Booléen" | Case 12 strTmp = "Variant (utilisé seulement avec des | tableaux de Variants)" | Case 13 strTmp = "Objet non Automation" | Case 17 strTmp = "Octet" | Case 8192 strTmp = "Tableau" | Case Else strTmp = ""Aucune idée du type de variable | correspondant au code " & intCode | End Select | ConvertAsString = strTmp | End Function
Je me permet d'apporter une petite correction car une valeur supérieure ou égale à 8192 indique un tableau du type de la valeur modulo 8192 :
--- Coupez ici ---
Function ConvertAsString (intCode) Dim strTmp, nCode: nCode = intCode Mod 8192 If intCode => 8192 Then strTmp = "Tableau de type "
Select Case nCode Case 0 strTmp = strTmp + "Empty (non initialisée)" Case 1 strTmp = strTmp + "Null (aucune donnée valide)" Case 2 strTmp = strTmp + "Entier" Case 3 strTmp = strTmp + "Entier long" Case 4 strTmp = strTmp + "flottant en simple précision" Case 5 strTmp = strTmp + "flottant en double précision" Case 6 strTmp = strTmp + "Monétaire" Case 7 strTmp = strTmp + "Date" Case 8 strTmp = strTmp + "Chaîne" Case 9 strTmp = strTmp + "Objet Automation" Case 10 strTmp = strTmp + "Erreur" Case 11 strTmp = strTmp + "Booléen" Case 12 strTmp = strTmp + "Variant" Case 13 strTmp = strTmp + "Objet non Automation" Case 17 strTmp = strTmp + "Octet" Case Else strTmp = "Type inconnu: " & intCode End Select ConvertAsString = strTmp End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
"jbongran" <jbongran@free.fr> a écrit dans le message de
news:ejK8U6iHHHA.3668@TK2MSFTNGP02.phx.gbl
| Function ConvertAsString(IntCode)
| Dim strTmp
| Select Case intCode
| Case 0 strTmp = "Empty (non initialisée)"
| Case 1 strTmp = "Null (aucune donnée valide)"
| Case 2 strTmp = "Entier"
| Case 3 strTmp = "Entier long"
| Case 4 strTmp = "Nombre en virgule flottante en simple
| précision" Case 5 strTmp = "Nombre en virgule flottante en
| double précision" Case 6 strTmp = "Monétaire"
| Case 7 strTmp = "Date"
| Case 8 strTmp = "Chaîne"
| Case 9 strTmp = "Objet Automation"
| Case 10 strTmp = "Erreur"
| Case 11 strTmp = "Booléen"
| Case 12 strTmp = "Variant (utilisé seulement avec des
| tableaux de Variants)"
| Case 13 strTmp = "Objet non Automation"
| Case 17 strTmp = "Octet"
| Case 8192 strTmp = "Tableau"
| Case Else strTmp = ""Aucune idée du type de variable
| correspondant au code " & intCode
| End Select
| ConvertAsString = strTmp
| End Function
Je me permet d'apporter une petite correction car une valeur supérieure
ou égale à 8192 indique un tableau du type de la valeur modulo 8192 :
--- Coupez ici ---
Function ConvertAsString (intCode)
Dim strTmp, nCode: nCode = intCode Mod 8192
If intCode => 8192 Then strTmp = "Tableau de type "
Select Case nCode
Case 0 strTmp = strTmp + "Empty (non initialisée)"
Case 1 strTmp = strTmp + "Null (aucune donnée valide)"
Case 2 strTmp = strTmp + "Entier"
Case 3 strTmp = strTmp + "Entier long"
Case 4 strTmp = strTmp + "flottant en simple précision"
Case 5 strTmp = strTmp + "flottant en double précision"
Case 6 strTmp = strTmp + "Monétaire"
Case 7 strTmp = strTmp + "Date"
Case 8 strTmp = strTmp + "Chaîne"
Case 9 strTmp = strTmp + "Objet Automation"
Case 10 strTmp = strTmp + "Erreur"
Case 11 strTmp = strTmp + "Booléen"
Case 12 strTmp = strTmp + "Variant"
Case 13 strTmp = strTmp + "Objet non Automation"
Case 17 strTmp = strTmp + "Octet"
Case Else strTmp = "Type inconnu: " & intCode
End Select
ConvertAsString = strTmp
End Function
"jbongran" a écrit dans le message de news: | Function ConvertAsString(IntCode) | Dim strTmp | Select Case intCode | Case 0 strTmp = "Empty (non initialisée)" | Case 1 strTmp = "Null (aucune donnée valide)" | Case 2 strTmp = "Entier" | Case 3 strTmp = "Entier long" | Case 4 strTmp = "Nombre en virgule flottante en simple | précision" Case 5 strTmp = "Nombre en virgule flottante en | double précision" Case 6 strTmp = "Monétaire" | Case 7 strTmp = "Date" | Case 8 strTmp = "Chaîne" | Case 9 strTmp = "Objet Automation" | Case 10 strTmp = "Erreur" | Case 11 strTmp = "Booléen" | Case 12 strTmp = "Variant (utilisé seulement avec des | tableaux de Variants)" | Case 13 strTmp = "Objet non Automation" | Case 17 strTmp = "Octet" | Case 8192 strTmp = "Tableau" | Case Else strTmp = ""Aucune idée du type de variable | correspondant au code " & intCode | End Select | ConvertAsString = strTmp | End Function
Je me permet d'apporter une petite correction car une valeur supérieure ou égale à 8192 indique un tableau du type de la valeur modulo 8192 :
--- Coupez ici ---
Function ConvertAsString (intCode) Dim strTmp, nCode: nCode = intCode Mod 8192 If intCode => 8192 Then strTmp = "Tableau de type "
Select Case nCode Case 0 strTmp = strTmp + "Empty (non initialisée)" Case 1 strTmp = strTmp + "Null (aucune donnée valide)" Case 2 strTmp = strTmp + "Entier" Case 3 strTmp = strTmp + "Entier long" Case 4 strTmp = strTmp + "flottant en simple précision" Case 5 strTmp = strTmp + "flottant en double précision" Case 6 strTmp = strTmp + "Monétaire" Case 7 strTmp = strTmp + "Date" Case 8 strTmp = strTmp + "Chaîne" Case 9 strTmp = strTmp + "Objet Automation" Case 10 strTmp = strTmp + "Erreur" Case 11 strTmp = strTmp + "Booléen" Case 12 strTmp = strTmp + "Variant" Case 13 strTmp = strTmp + "Objet non Automation" Case 17 strTmp = strTmp + "Octet" Case Else strTmp = "Type inconnu: " & intCode End Select ConvertAsString = strTmp End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
Jean
Cette routine affichant le type de variable retournée peut être utile pour lever le doute:
C'est un bon reflexe effectivement. Personnellement j'utilise d'abord TypeName qui a l'avantage de retourner aussi les interfaces. Ca permet soit de retrouver facilement les méthodes et propriétés disponibles pour un objet ou de corriger son code.
Par ex. :
WScript.Echo TypeName(CreateObject("Shell.Application").Windows) -> interface IShellWindows (que l'on trouve dans la classe Miscrosoft Internet Control)
Amicalement,
-- Jean - JMST Belgium
Cette routine affichant le type de variable retournée peut être utile pour
lever le doute:
C'est un bon reflexe effectivement.
Personnellement j'utilise d'abord TypeName qui a l'avantage de
retourner aussi les interfaces.
Ca permet soit de retrouver facilement les méthodes et propriétés
disponibles pour un objet ou de corriger son code.
Par ex. :
WScript.Echo TypeName(CreateObject("Shell.Application").Windows)
-> interface IShellWindows (que l'on trouve dans la classe Miscrosoft
Internet Control)
Cette routine affichant le type de variable retournée peut être utile pour lever le doute:
C'est un bon reflexe effectivement. Personnellement j'utilise d'abord TypeName qui a l'avantage de retourner aussi les interfaces. Ca permet soit de retrouver facilement les méthodes et propriétés disponibles pour un objet ou de corriger son code.
Par ex. :
WScript.Echo TypeName(CreateObject("Shell.Application").Windows) -> interface IShellWindows (que l'on trouve dans la classe Miscrosoft Internet Control)
Amicalement,
-- Jean - JMST Belgium
TiMike45
Chapeau bas! Bravo! Bravissimo! La méthode GetItemValue renvoie effectivement un tableau de chaine (VarType00) et la fonction GetItemValue renvoie une chaine avec séparateur ; (un split finit le travail) Un tres tres grand merci a tous! -- TiMike
"TiMike45" a écrit dans le message de news: | Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ | correspondant a une valeur de cle: | Set Session = CreateObject("Notes.NotesSession") | Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False) | Set V = DB.GETVIEW(CA_View) | aKey(0) = aTemp(1) & " , " & aTemp(2) | Set Doc = V.GETDOCUMENTBYKEY(aKey, True) | If Not Doc Is Nothing Then | aNames = Doc.GETITEMVALUE("FullName") | En VB, ma variable aNames (variant) recoit bien un tableau | mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau de Variants. VBScript ne permet pas la manipulation de ce type de valeur. Une solution de contournement consiste à écrire une petite fonction 'helper' permettant de contourner cette limitation :
+++ Exemple WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem) For Each oItem In oDoc.Items If oItem.Name = strItem Then GetItemValue = oItem.Text Next End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
Chapeau bas! Bravo! Bravissimo!
La méthode GetItemValue renvoie effectivement un tableau de chaine
(VarType00) et la fonction GetItemValue renvoie une chaine avec séparateur
;
(un split finit le travail)
Un tres tres grand merci a tous!
--
TiMike
"TiMike45" <TiMike45@discussions.microsoft.com> a écrit dans le message
de news:AABA34BC-6A7F-434D-9930-489594C8BEBC@microsoft.com
| Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ
| correspondant a une valeur de cle:
| Set Session = CreateObject("Notes.NotesSession")
| Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False)
| Set V = DB.GETVIEW(CA_View)
| aKey(0) = aTemp(1) & " , " & aTemp(2)
| Set Doc = V.GETDOCUMENTBYKEY(aKey, True)
| If Not Doc Is Nothing Then
| aNames = Doc.GETITEMVALUE("FullName")
| En VB, ma variable aNames (variant) recoit bien un tableau
| mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau
de Variants. VBScript ne permet pas la manipulation de ce type de
valeur. Une solution de contournement consiste à écrire une petite
fonction 'helper' permettant de contourner cette limitation :
+++ Exemple
WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem)
For Each oItem In oDoc.Items
If oItem.Name = strItem Then GetItemValue = oItem.Text
Next
End Function
Chapeau bas! Bravo! Bravissimo! La méthode GetItemValue renvoie effectivement un tableau de chaine (VarType00) et la fonction GetItemValue renvoie une chaine avec séparateur ; (un split finit le travail) Un tres tres grand merci a tous! -- TiMike
"TiMike45" a écrit dans le message de news: | Bonjour a toutes et a tous,
Bonsoir,
| Dans un Carnet d'adresses de Lotus Notes je veux lire un champ | correspondant a une valeur de cle: | Set Session = CreateObject("Notes.NotesSession") | Set DB = Session.GETDATABASE(CA_Server, CA_BAse,False) | Set V = DB.GETVIEW(CA_View) | aKey(0) = aTemp(1) & " , " & aTemp(2) | Set Doc = V.GETDOCUMENTBYKEY(aKey, True) | If Not Doc Is Nothing Then | aNames = Doc.GETITEMVALUE("FullName") | En VB, ma variable aNames (variant) recoit bien un tableau | mais en vbscript elle reste obstinement Empty
La méthode GetItemValue renvoie un tableau de Strings et non un tableau de Variants. VBScript ne permet pas la manipulation de ce type de valeur. Une solution de contournement consiste à écrire une petite fonction 'helper' permettant de contourner cette limitation :
+++ Exemple WScript.Echo GetItemValue (doc, "FullName")
--- Coupez ici ---
Function GetItemValue (oDoc, strItem) For Each oItem In oDoc.Items If oItem.Name = strItem Then GetItemValue = oItem.Text Next End Function
--- Coupez ici ---
-- Gilles LAURENT http://glsft.free.fr
jbongran
Gilles LAURENT wrote:
"jbongran" a écrit dans le message de news:
Function ConvertAsString(IntCode) Dim strTmp Select Case intCode Case 0 strTmp = "Empty (non initialisée)" Case 1 strTmp = "Null (aucune donnée valide)" Case 2 strTmp = "Entier" Case 3 strTmp = "Entier long" Case 4 strTmp = "Nombre en virgule flottante en simple précision" Case 5 strTmp = "Nombre en virgule flottante en double précision" Case 6 strTmp = "Monétaire" Case 7 strTmp = "Date" Case 8 strTmp = "Chaîne" Case 9 strTmp = "Objet Automation" Case 10 strTmp = "Erreur" Case 11 strTmp = "Booléen" Case 12 strTmp = "Variant (utilisé seulement avec des tableaux de Variants)" Case 13 strTmp = "Objet non Automation" Case 17 strTmp = "Octet" Case 8192 strTmp = "Tableau" Case Else strTmp = ""Aucune idée du type de variable correspondant au code " & intCode End Select ConvertAsString = strTmp End Function
Joli, comme d'hab (a part peut être les +, mais c'est affaire de goût ;-)
Gilles LAURENT wrote:
"jbongran" <jbongran@free.fr> a écrit dans le message de
news:ejK8U6iHHHA.3668@TK2MSFTNGP02.phx.gbl
Function ConvertAsString(IntCode)
Dim strTmp
Select Case intCode
Case 0 strTmp = "Empty (non initialisée)"
Case 1 strTmp = "Null (aucune donnée valide)"
Case 2 strTmp = "Entier"
Case 3 strTmp = "Entier long"
Case 4 strTmp = "Nombre en virgule flottante en simple
précision" Case 5 strTmp = "Nombre en virgule flottante en
double précision" Case 6 strTmp = "Monétaire"
Case 7 strTmp = "Date"
Case 8 strTmp = "Chaîne"
Case 9 strTmp = "Objet Automation"
Case 10 strTmp = "Erreur"
Case 11 strTmp = "Booléen"
Case 12 strTmp = "Variant (utilisé seulement avec des
tableaux de Variants)"
Case 13 strTmp = "Objet non Automation"
Case 17 strTmp = "Octet"
Case 8192 strTmp = "Tableau"
Case Else strTmp = ""Aucune idée du type de variable
correspondant au code " & intCode
End Select
ConvertAsString = strTmp
End Function
Joli, comme d'hab (a part peut être les +, mais c'est affaire de goût ;-)
Function ConvertAsString(IntCode) Dim strTmp Select Case intCode Case 0 strTmp = "Empty (non initialisée)" Case 1 strTmp = "Null (aucune donnée valide)" Case 2 strTmp = "Entier" Case 3 strTmp = "Entier long" Case 4 strTmp = "Nombre en virgule flottante en simple précision" Case 5 strTmp = "Nombre en virgule flottante en double précision" Case 6 strTmp = "Monétaire" Case 7 strTmp = "Date" Case 8 strTmp = "Chaîne" Case 9 strTmp = "Objet Automation" Case 10 strTmp = "Erreur" Case 11 strTmp = "Booléen" Case 12 strTmp = "Variant (utilisé seulement avec des tableaux de Variants)" Case 13 strTmp = "Objet non Automation" Case 17 strTmp = "Octet" Case 8192 strTmp = "Tableau" Case Else strTmp = ""Aucune idée du type de variable correspondant au code " & intCode End Select ConvertAsString = strTmp End Function
Joli, comme d'hab (a part peut être les +, mais c'est affaire de goût ;-)
jbongran
jbongran wrote:
Gilles LAURENT wrote: Et toute mes excuses pour avoir laissé mon code et supprimé le tient, ce
n'était pas intentionnel, je voulai faire exactement le contraire. Désolé
jbongran wrote:
Gilles LAURENT wrote:
Et toute mes excuses pour avoir laissé mon code et supprimé le tient, ce
n'était pas intentionnel, je voulai faire exactement le contraire.
Désolé