2013-07-10 18 views
0

我試圖對另一個服務器/數據庫執行@DbLookup並不斷收到「未定義」的返回消息。數據庫存在,視圖名稱正確,關鍵是正確的,以及我試圖返回的列。我有讀者訪問數據庫。XPages @DbLookup在查找其他服務器/數據庫時返回undefined

我已經嘗試了所有這些組合的服務器/文件路徑,但沒有一個似乎工作:

var dbName = new Array(session.getServerName(), "my/folder/thisdb.nsf"); 
var dbName = session.getServerName() + "!!" + my\\folder\\thisdb.nsf; 
var dbName = "CN=Server/OU=Name/O=This" + "!!" + my\\folder\\thisdb.nsf; 
var dbName = [@DbName([0]), "my/folder/thisdb.nsf"]; 

我發現這個職位,並試圖大部分組合:

http://www.c-lutions.com/c-lutions/mcblog.nsf/dx/08242012095124AMJMMJ69.htm

我可以嘗試其他任何組合嗎?

謝謝!

+2

看看這個答案http://stackoverflow.com/a/16930003/1047998。更具體地說,這句話 - ** XPages與Java代理具有相同的安全約束。你有沒有足夠的權利在服務器文檔中做'從其他數據庫獲取價值'?默認爲否!** – Naveen

+0

我的ID在服務器文檔的安全選項卡上的正確組中列出。服務器文檔中的「從其他數據庫獲取值」字段在哪裏? – Dan

回答

3

您的文件夾的名稱是my folder,裏面有空格嗎?這可能是挑戰。我會建議緩解你的痛苦.... 在你的目標數據庫中創建一個XPage,在其上使用@DbName()作爲公式來計算一個XPage字段,並查看返回的內容。除此之外,您的公式有一些問題(項下面的評論):

var dbName = new Array(session.getServerName(), "my/folder/thisdb.nsf"); 

看起來不錯,除非你的文件夾是不是我下的子目錄。文件夾需要相對於數據目錄。

var dbName = session.getServerName() + "!!" + my\\folder\\thisdb.nsf; 

dbName必須是一個數組,這個不是。也有沒有引號周圍的文件名

var dbName = "CN=Server/OU=Name/O=This" + "!!" + my\\folder\\thisdb.nsf; 

相同在這裏:必須是一個數組,報價缺失。 @Name("[CN]";@Subset(@DbName();1)+"!!....

var dbName = [@DbName([0]), "my/folder/thisdb.nsf"]; 

幾乎有:由於數據源語法使用的這個(CN)格式是混亂。 @DbName()不帶參數,所以你可以這樣寫:var dbName = [@DbName()[0], "my/folder/thisdb.nsf"];或使用var dbName = [@Subset(@DbName(),1), "my/folder/thisdb.nsf"];

您還可以檢查great samples一起玩。

+0

我對這些公式表示歉意 - 我錯誤地鍵入了它們。我在另一個數據庫中創建了一個新的XPage,服務器以規範格式返回,文件路徑也正確。所以我試了這個: – Dan

+0

(點擊「添加評論」快速 - 這裏是其餘的) - var dbName = [@Subset(@DbName(),1),「myfolder/mydb.nsf」]; - 並沒有再次工作。我嘗試只查找names.nsf,並無法獲取任何內容return.var dbName = [@DbName()[0],「names.nsf」]; @DbColumn(dbName,「($ People)」,2); ---它只是返回「未定義」。 – Dan

+0

聞起來像一個權利問題。什麼是您的目標nsf的最大Internet訪問?另外:用@DbColumn添加一個經典的表單,它顯示了什麼?然後有一個代理那樣做。您需要位於服務器的無限制代理字段中 – stwissel

1

確保第二臺服務器位於第一臺服務器信任的受信任服務器組中。出於安全原因,如果任何服務器上運行的XPages(和LotusScript)不在同一個受信任的服務器組中,則無法訪問數據庫的內容。