0

既存の 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 スクリプトを喜んで提供します。

ありがとう !

4

3 に答える 3

2

If I am not mistaken, the Advantage Clipper Library only uses the Data Dictionary as an authentication mechanism for AIS (Advantage Internet Server) communication, however the tables are opened outside of the dictionary.

In this case, I don't believe that Clipper has any knowledge of any of the default settings, etc from the Data Dictionary.

Are you using clipper or are you using one of the number of other languages that support Clipper syntax, but produce 32-bit applications?

于 2012-12-13T16:35:46.710 に答える
2

(注文の名前だけでなく)インデックスが作成されるディレクトリを指定するにTOは、コマンドの句が必要だと思います。INDEX ON私は Clipper を持っていないので試していません (ただし、職場で掘り出すことができるかもしれません :-))。

このページは、ディレクトリを変更できることを示唆しています: http://www.itlnet.net/programming/program/reference/c53g01c/ngcc94d.html (Clipper 5.3 の場合)

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

ただし、TO句で実際にディレクトリを指定する方法については述べていません。

このページには「INDEX ON ID TO (cFileName)」という行が含まれているので、おそらく実行できると思いますINDEX ON blah TAG (cTag) TO ("d:\example\SEBTAG")(おそらくファイル拡張子が必要です)。

于 2012-12-12T22:58:07.253 に答える
0

ご協力いただきありがとうございますが、これらの呼び出しをすべて削除し、代わりに永続的なインデックスに置き換えることで問題を解決 (または回避) しました。

繰り返しますが、ご意見をお寄せいただきありがとうございます。

于 2012-12-13T21:12:10.520 に答える