2012-12-11 24 views
0

我將現有的Clipper代碼從空閒錶轉換爲數據字典。 我可以讀寫表格,但無法創建索引。使用Clipper在數據字典中創建索引

下面是代碼:

connSaisie := DacSession():new(GetSsoConnection(1)) 
connSaisie:SetDefault() 
DbeInfo(COMPONENT_DATA, ADSDBE_RIGHTS_MODE, ADSDBE_CHECKRIGHTS ) 
DbeInfo(COMPONENT_DATA, ADSDBE_LOCK_MODE, ADSDBE_PROPRIETARY_LOCKING) 
DbeInfo(COMPONENT_DATA , ADSDBE_TBL_MODE, ADSDBE_CDX) 
DbeInfo(COMPONENT_ORDER, ADSDBE_TBL_MODE, ADSDBE_CDX) 

DBUSEAREA (.F., , "Nomencla", connSaisie, .F., .F.) 
cTag:="SEBTAG" 
SELECT Nomencla 
Index on Code_nomen + Padl(Alltrim(Nom_champ1), 5, "0") +; 
Padl(Alltrim(Nom_champ2), 4, "0") +; 
Padl(Alltrim(Nom_champ3), 3, "0") TAG (cTag) 

Set Order to TAG (cTag) 

(GetSsoConnection(1))語法需要檢索正確的連接字符串的照顧。

問題是索引是在可執行目錄中創建的,而不是爲數據字典定義的數據庫或臨時文件夾。

我很期待任何幫助或指針,並很樂意提供一個SQL腳本來創建一個示例表來重現問題更多。

謝謝!

回答

2

我想你需要INDEX ON命令的TO子句,以便指定創建索引的目錄(而不僅僅是命令的名稱)。我沒有嘗試過,因爲我沒有Clipper(儘管我可能能夠在工作中挖掘它:-))。

此頁面提示更改目錄是可能的: http://www.itlnet.net/programming/program/reference/c53g01c/ngcc94d.html(對快船5.3)

INDEX ON <expKey> TAG <cOrderName> TO <cOrderBagName> 

但是,它並沒有說你實際上是如何指定TO子句中的目錄。

This page包括線「INDEX ON ID TO(cFileName)」,所以我想你也許可以做INDEX ON blah TAG (cTag) TO ("d:\example\SEBTAG")(也許需要一個文件擴展名)

+0

感謝您的回答marnir。 這實際上是我的問題:我希望Clipper自動理解文件的位置,因爲它們屬於數據字典。 該進程無權訪問數據目錄,因此必須通過數據字典。 因此,本質上我正在尋找一種方法來打開與數據字典的連接,然後在該數據字典中打開一個表,然後創建附加到該表的索引。該索引必須由服務器直接創建到數據目錄中。 – kuzkot

2

如果我沒有記錯的話,優勢帆船庫僅使用數據字典作爲AIS(Advantage Internet Server)通信的身份驗證機制,但是這些表在字典外部打開。

在這種情況下,我不認爲Clipper對數據字典中的任何默認設置等有任何瞭解。

您在使用剪鉗或者您使用支持快船語法等語言的數量的一個,但產生的32位應用程序?

0

感謝您的幫助,但我已通過刪除所有這些調用並將其替換爲永久索引來解決(或者說避免了這個問題)。

再次感謝您的意見。