Announcement

Collapse
No announcement yet.

verzeichnisbaum erstellen, in dem nur SQL-Server angezeigt werden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • verzeichnisbaum erstellen, in dem nur SQL-Server angezeigt werden

    Hi, ich suche nach einer Möglichkeit, in einem Verzeichnisbaum oder einer Combobox die verfügbaren SQL-Server anzuzeigen. Aber ich bekomme nur die Liste des Netzwerks, ohne Berücksichtigung ob es ein SQL-Server ist oder nicht. Hier der Code:<br><br>
    procedure Tfrm_start.bit_changeClick(Sender: TObject);<br>
    var str_tmp: String;<br>
    begin<br>
    str_tmp:=Getfolder(CSIDL_NETWORK,'Bitte ein Verzeichnis wählen:');<br>
    if (str_tmp<>'') then txt_pfad.Text:=str_tmp;<br>
    end;<br>
    <br>
    function Tfrm_start.Getfolder(root:integer; Caption:String): String;<br>
    var bi: TBROWSEINFO;<br>
    lpBuffer: PChar;<br>
    pidlPrograms, pidlBrowse: PItemIDList;<br>
    begin<br>
    if (not SUCCEEDED(SHGetSpecialFolderLocation(getactivewind ow, root,<br>pidlPrograms)))
    then exit;<br>
    lpBuffer:=StrAlloc(max_path);<br>
    bi.hwndOwner:=getactivewindow;<br>
    bi.pidlRoot:=pidlPrograms;<br>
    bi.pszDisplayName:=lpBuffer;<br>
    bi.lpszTitle:=PChar(caption);<br>
    bi.ulFlags:=BIF_RETURNONLYFSDIRS;<br>
    bi.lpfn:=nil;<br>
    bi.lParam:=0;<br>
    pidlBrowse:=SHBrowseForFolder(bi);<br>
    if (pidlBrowse<>nil) then<br>
    begin<br>
    if (SHGetPathFromIDList(pidlBrowse, lpBuffer)) then result:=lpBuffer;<br>
    end;<br>
    StrDispose(lpBuffer);<br>
    end;<br><br>
    ch bin für jden Hinweis Dankbar,
    vielen Dank, Stefan Walter

  • #2
    Ok, hat sich erledigt! Hier die Lösung:<br>
    Die Server, die auch der Enterprise Manager beim Registrieren eines<br>
    neuen Servers zur Auswahl stellt, kannst Du am einfachsten via DMO<br>
    abrufen:<br>
    <br>
    var DMOApp, SrvLst: Variant;<br>
    DMOApp := CreateOleObject( 'SQLDMO.Application' );<br>
    SrvLst := DMOApp.ListAvailableSQLServers;<br>
    for i:=1 to SrvLst.Count do ComboBox1.Items.Add( SrvLst.Item(i) );<br>
    <br>
    Eine manuelle Eingabemöglichkeit mußt Du aber auf jeden Fall vorsehen,<br>
    obiges taugt nur als Eingabehilfe bei Standardfällen.<br>
    <br>
    aber trotzdem herzlich Dank an alle die es versucht haben )!
    Stefa

    Comment

    Working...
    X