2012-12-11 8 views
0

프리 테이블의 기존 클리퍼 코드를 데이터 사전으로 변환 중입니다. 테이블을 읽고 쓸 수는 있지만 인덱스를 만들 수는 없습니다. 여기 클리퍼를 사용하여 데이터 사전에 색인 만들기

코드이다

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 그러나

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

(클리퍼 5.3), 당신이 실제로 TO 절에 디렉토리를 지정하는 방법을 말하지 않는다.

This page

라인 '(cFileName) TO ID ON INDEX'를 포함, 그래서 당신은 어쩌면 INDEX ON blah TAG (cTag) TO ("d:\example\SEBTAG")은 내가 잘못 아니에요 경우

+0

답장을 보내 주셔서 감사합니다. 이것은 사실 내 문제입니다. Clipper가 파일이 어디에 있는지를 데이터 사전에 속한 경우 자동으로 이해하도록합니다. 프로세스가 데이터 디렉토리에 액세스 할 수 없으며 데이터 사전을 거쳐야합니다. 그래서 본질적으로 데이터 사전에 대한 연결을 연 다음 해당 데이터 사전 내에서 테이블을 연 다음 해당 테이블에 첨부 된 인덱스를 만드는 방법을 찾고 있습니다. 이 색인은 서버가 데이터 디렉토리에 직접 작성해야합니다. – kuzkot

2

(아마도 파일 확장자를 필요로)의 장점 클리퍼 라이브러리 만 사용 할 수 있다고 생각 데이터 사전은 AIS (Advantage Internet Server) 통신의 인증 메커니즘으로 사용되지만 표는 사전 외부에서 열립니다.

이 경우 Clipper는 데이터 사전의 기본 설정 등을 전혀 알지 못합니다.

클리퍼를 사용하고 있습니까? 아니면 클리퍼 구문을 지원하지만 32 비트 응용 프로그램을 생성하는 다른 언어를 사용하고 있습니까?

0

도움을 주셔서 감사합니다. 그러나 이러한 모든 호출을 제거하고 대신 영구 인덱스로 대체하여 문제를 해결했습니다 (또는 오히려 우회했습니다).

다시 한번 감사드립니다.