2010-06-30 11 views

답변

2

가 여기에 내가 얼마 전에했던 일을 - 그것은은 최근 것이 아닐 수 있다는 점에 유의하십시오

 
const 
    GENERAL_COLUMNS = '"System.Itemname", "System.Size", "System.DateCreated", "System.ItemDate",' + 
        '"System.ItemFolderPathDisplay", "System.Search.AutoSummary", "System.ItemType"'; 

    IMAGE_COLUMNS = '"System.Image.HorizontalSize", "System.Image.VerticalSize", '+ 
        '"System.Image.BitDepth", "System.Image.Compression", '+ 
        '"System.Photo.CameraModel", "System.Photo.DateTaken", "System.Photo.Flash"'; 
    MUSIC_COLUMNS = '"System.Music.Artist", "System.Music.Genre", "System.Music.TrackNumber", '+ 
        '"System.Audio.Compression", "System.Audio.SampleRate", '+ 
        '"System.DRM.IsProtected", "System.Music.AlbumTitle", "System.Rating", '+ 
        '"System.Audio.EncodingBitrate"'; 

procedure TWDSDataSource.RetrieveDataFromDB; 
var 
    manager : ISearchManager; 
    catalogManager : ISearchCatalogManager; 
    queryHelper : ISearchQueryHelper; 
    wQuery : string; 
    temp : PWideChar; 
    sTemp : string; 
begin 
    manager := CoCSearchManager.Create; 
    if Succeeded(manager.GetCatalog('SystemIndex',catalogManager)) then 
    begin 
    if Succeeded(catalogManager.GetQueryHelper(queryHelper)) then 
    begin 
     if fMaxResults 0 then 
     queryHelper.Set_QueryMaxResults(fMaxResults); 

     queryHelper.Set_QuerySelectColumns(GENERAL_COLUMNS + ',' + MUSIC_COLUMNS + ',' + IMAGE_COLUMNS); 
     queryHelper.GenerateSQLFromUserQuery(PWideChar(fQuery),temp); 
     wQuery := temp; 

     queryHelper.Get_ConnectionString(temp); 
     sTemp := temp; 
     dataset := CreateComObject(CLASS_Recordset) as _Recordset; 
     dataset.CursorLocation := adUseClient; 
     dataset.Open(wQuery, stemp, adOpenForwardOnly, adLockReadOnly, adCmdText); 
     dataset.Set_ActiveConnection(nil); 
     bDatabaseFailed := false; 
    end else 
     bDatabaseFailed := true; 
    end else 
    bDatabaseFailed := true; 
end; 

내가 fQuery가 실행하려는 쿼리, 그것은 모든 꽤 자기 설명 생각합니다.

감사합니다. 키스

+0

샘플 코드를 제공해 주셔서 감사합니다. 이 유닛의 USES 조항에는 무엇이 있습니까? –

+0

AdoDB, Windows, SysUtils, ComObj, 그래픽, 변형, ShellApi, ShlObj, AdoInt, JPeg, Utils, SearchAPILib_tlb, ThreadSafeJpeg; 아마도 대부분 관련성이 없습니다. –

+0

다음과 같은 uses 절이 필요하다는 것을 발견했습니다. 은 Windows, SysUtils, Classes, DB, ComObj, AdoInt, SearchAPILib_TLB, ADODB를 사용합니다. 하나의 마지막 후속 조치 (제 생각 엔) : 어떤 종류의 구성 요소가 데이터 집합으로 정의되어 있습니까? 나는 그것이 TADODataset compoenent라고 가정했는데 Open 프로 시저에 너무 많은 매개 변수가 있다는 컴파일 오류가 발생합니다. –