2010-05-28 10 views
1

나는 사람의 전화 번호를 보유하고있는 ESE 데이터베이스의 테이블 중 하나에 다중 값 짧은 ASCII 텍스트 열을 가지고 있습니다.다중 값 ESE 열에서 값을 바꾸는 방법?

새로운 값 집합이 있는데 이전 값을 완전히 지우고 새 값만 사용하고 싶습니다.

JET_bitSetRevertToDefaultValue 비트가 작동하지 않는 것 같습니다. MSDN 설명서에서 "열이 이후 열 검색 작업에서 기본 열 값을 반환하도록하고 모든 기존 열 값은 제거됩니다."라고 말하면서 아무 것도하지 않는 것으로 나타났습니다 (반환 값이 반환되지 않음).

또는 열에 포함 된 값의 수 (이 값은 0 일 수 있습니다 (예 : 내가 삽입을 수행 할 때 업데이트가 아닌 경우)을 쉽게 찾을 수 있습니까? 만약 그렇다면, 'nValues'에서 1로 루프를 돌릴 수 있습니다. itagSequence 값을 제공하면서 null로 설정하여 값을 지우면서 원하는 것을 얻을 수 있습니다.

저는 C#을 프로그래밍하고 최신 버전의 ManagedEsent 라이브러리를 사용하고 있습니다.

미리 감사드립니다.

답변

1

ESENT에서 JetRetrieveColumns를 사용하여 다중 값 인스턴스 수를 얻을 수 있습니다. 이 기능에 대한 설명은 MSDN 설명서의 비고 섹션에 있습니다.

JetRetrieveColumns를 사용하여 JET_RETRIEVECOLUMN의 itagSequence가 0 인 열 (pvData 및 cbData 멤버를 null/0으로 유지)을 가져와야합니다. 호출 후 itagSequence 멤버에는 다중 값 열의 인스턴스 수가 포함됩니다.

JET_RETRIEVECOLUMN retrievecolumn = new JET_RETRIEVECOLUMN(); 
retrievecolumn.columnid = multivalueColumn; 
retrievecolumn.itagSequence = 0; 
Api.JetRetrieveColumns(sesid, tableid, new[] { retrievecolumn }, 1); 
Console.WriteLine("{0}", retrievecolumn.itagSequence); 

당신은이 작업을 위해 최신 ManagedEsent 소스 코드가 필요합니다!이 테스트를 작성할 때 ManagedEsent 코드에서 버그를 발견했습니다. 호출 후 itagSequence가 설정되지 않았습니다. 나는 방금 문제를 조사했다.

+0

고맙습니다. 작동합니다. – Soonts

+0

ManagedEsent 설명서에 다중 값에 대한 자습서를 추가했습니다. http://managedesent.codeplex.com/wikipage?title=MultiValueTutorial –

관련 문제