Przykładowa aplikacja utworzona za pomocą programu Visual Basic, automatyzująca administrowanie w programie MTS

Przykładowa aplikacja, utworzona w programie Visual Basic w wesji 5.0, ma na celu ilustrację sposobu korzystania z metod obiektów Catalog, CatalogObject i CatalogCollections, automatyzujących podstawowe czynności administracyjne dla pakietu o nazwie “Scriptable Admin Demo”.

Notka Projekt utworzony w języku Visual Basic należy skonfigurować tak, aby odwoływał się do biblioteki typów administracyjnych programu MTS (biblioteki typów MTSAdmin). W tym celu na pasku narzędzi projektu należy zaznaczyć opcję References. Następnie należy przeszukać dostępne pliki odwołań i odszukać plik o nazwie “MTS 2.0 Admin Type Library”. W przypadku zmiennych "wiązanych później" (wiązanie ustalane po uruchomieniu programu) i uprzedniej rejestracji w komputerze lokalnym pliku MTXADMIN.DLL program Visual Basic zlokalizuje bibliotekę typów bez dalszej konfiguracji.

Aby usunąć jakiekolwiek istniejące pakiety o nazwach “Scriptable Admin Demo”

  1. Wywołaj metodę CreateObject, aby utworzyć instancję obiektu katalogu.
    Dim catalog As Object
    Set catalog = CreateObject("MTSAdmin.Catalog.1")
  2. Wywołując metodę GetCollection, pobierz kolekcję Packages. Kolekcja Packages jest zwracana bez pobierania danych z katalogu, w związku z czym pozostanie ona pusta aż do momentu zakończenia metody GetCollection.
    Dim packages As Object
    Set packages = catalog.GetCollection("Packages")
  3. Odszukaj poprzednią wersję pakietu "Scriptable Admin Demo", zmuszając kolekcję Packages do odczytu ze wszystkich pakietów i poszukiwania pakietów o nazwie "Scriptable Admin Demo". Przeszukuj kolekcję za pomocą pętli rozpoczynającej sie od najwyższego indeksu; w pętli wywołuj metodę Remove. Metoda Remove powoduje zwolnienie obiektu, usunięcie obiektu z kolekcji i przesunięcie obiektów kolekcji tak, że obiekt o indeksie (n+1) staje się obiektem (n) (dla wszystkich n większych lub równych niż indeks obiektu usuwanego). Wynik metody Remove jest natychmiastowy. Metody Item i Count, wywoływane po każdym wykonaniu metody Remove, powodują zmiany indeksów. Tym niemniej, usunięcie pakietu zostanie uwzględnione w katalogu dopiero po wykonaniu metody SaveChanges (patrz krok 4).
    packages.Populate
    Dim pack As Object
    n = packages.Count
    For i = n - 1 To 0 Step -1
        If packages.Item(i).Value("Name") = "Scriptable Admin Demo" Then
            packages.Remove (i)
    End If
    Next
  4. Wywołaj metodę SaveChanges, aby zapisać zmiany w katalogu danych.
    packages.SaveChanges

Aby utworzyć nowy pakiet o nazwie “Scriptable Admin Demo Package”

  1. Za pomocą metody Add dodaj nowy pakiet i zanotuj skojarzony z nim identyfikator. Metoda Add spowoduje dodanie obiektu do kolekcji, ale wprowadzone przez nią zmiany zostaną zastosowane do katalogu dopiero po wywołaniu metody SaveChanges (patrz krok 3). W wyniku metody Add dla wszystkich właściwości zostaną określone wartości domyślne. Identyfikatorem domyślnym stanie się nowy, unikatowy identyfikator.
    Dim newPack As Object
    Dim newPackID As Variant
    Set newPack = packages.Add
    newPackID = newPack.Value("ID")
  2. Uaktualnij właściwości Name i SecurityEnabled.
    newPack.Value("Name") = "Scriptable Admin Demo"
    newPack.Value("SecurityEnabled") = "N"
  3. Wywołaj metodę SaveChanges, aby zapisać nowy pakiet w katalogu. Wartością zwrotną wywołania jest liczba obiektów, które zmieniono, dodano lub usunięto. Jeśli nie dokonano żadnych zmian, zwracane jest 0.
    n = packages.SaveChanges

Aby uaktualnić właściwości pakietu “Scriptable Admin Demo” i pobrać kolekcję ComponentsInPackage.

  1. Wywołaj metodę PopulateByKey, aby ponownie odczytać pakiet z katalogu. Przekaż tablicę zawierającą klucze do odczytywanych obiektów. W poniższym przykładzie kodu użyto tablicy zawierającej jeden element (tj. identyfikator utworzonego przed chwilą pakietu).
    Dim keys(0) as Variant
    keys(0) = newPackId
    packages.PopulateByKey keys
  2. Pobierz pakiet (obiekt pakietu) z kolekcji.
    Dim package As Object
    Set package = packages.Item(0)
  3. Uaktualnij właściwość SecurityEnabled pakietu.
    package.Value("SecurityEnabled") = "Y" 
  4. Wywołaj metodę GetCollection, aby pobrać kolekcję ComponentsInPackage. Jak parametr wywołania przekaż klucz do pakietu "Scriptable Admin Demo".
    Set components = packages.GetCollection("ComponentsInPackage",_ 	  package.Key)
       
    1. Wywołaj metodę SaveChanges, aby zapisać zmiany w katalogu.
      packages.SaveChanges

    Aby zainstalować składnik componentasdefcomponent w pakiecie "Scriptable Admin Demo package":

    1. Wywołaj metodę GetUtilInterface, aby pobrać obiekt narzędziowy składnika. Obiekt ten służy do instalacji składników.
      Dim util As Object
      Set util = components.GetUtilInterface
      On Error GoTo installFailed
    2. Wywołaj metodę InstallComponent, przekazując w wywołaniu ciąg znaków określający nazwę biblioteki DLL (biblioteki dołączanej dynamicznie) instalowanego składnika. Jeśli składnik nie zawiera zewnętrznej biblioteki typów ani biblioteki DLL typu proxy-stub, w miejsce drugiego i trzeciego argumentu wywołania przekaż ciągi puste. Po zainstalowaniu nowego składnika nie musisz wywoływać metody SaveChanges. Wszystkie składniki zawarte w bibliotece DLL zostaną zainstalowane i natychmiast zapisane do katalogu. Na koniec wywołaj metodę GetCLSIDs, aby pobrać identyfikatory klas (CLSID) zainstalowanych składników.
      Form2.Show 1
      Dim thePath As String
      thePath = Form2.MTSPath + "\samples\packages\vbacct.dll"
      util.InstallComponent thePath, "", ""
      Dim installedCLSIDs() as Variant
      util.GetCLSIDs thePath, “”, installedCLSIDs
      On Error GoTo 0
    3. Wywołaj metodę PopulateByKey, aby z powrotem odczytać zainstalowane przed chwilą składniki. Proszę zauważyć, że składniki zainstalowane za pomocą metody InstallComponent zostaną pokazane w kolekcji dopiero po wywołaniu metody Populate lub PopulateByKey, służącej do odczytu danych z katalogu.
      components.PopulateByKey installedCLSIDs

    Aby odszukać składnik Bank.CreateTable i usunąć go z pakietu "Scriptable Admin Demo package":

    1. Wywołaj składniki o kolejnych indeksach i zmień ich atrybuty transakcji za pomocą metod Item i Count.
      Dim component As Object
      n = components.Count
      For i = n - 1 To 0 Step -1
          Set component = components.Item(i)
          component.Value("Transaction") = "Required"
    2. Odszukaj i usuń składnik Bank.CreateTable. Kolekcja jest przeglądana wstecz, indeks po indeksie, a metoda Remove jest wywoływana w pętli.
      If component.Value("ProgID") = "Bank.CreateTable" Then
              components.Remove (i)
          End If
      Next
    3. Pobierz nową wartość licznika (n) i ponownie wywołuj kolejne elementy kolekcji. Składnik Bank.CreateTable zostanie usunięty ze zbioru danych dopiero po wywołaniu metody SaveChanges. Wyświetl okno komunikatu, informujące użytkownika o pomyślnym zakończeniu instalacji.
      n = components.Count
      For i = 0 To n - 1
          Set component = components.Item(i)
          Debug.Print component.Value("ProgID")
          Debug.Print component.Value("DLL")
      Next
      
      n = components.SaveChanges
      MsgBox "Scriptable Admin Demo package installed and configured."
      Exit Sub
      
      installFailed:
          MsgBox "Error code " + Str$(Err.Number) + " installing " + thePath + "  Make sure the MTS path you entered is correct and that vbacct.dll is not already installed."
      End Sub

    Zobacz też

    Obiekty administracyjne programu MTS, Typy kolekcji programu MTS, Metody obiektów administracyjnych programu MTS, Automatyzacja czynności administracyjnych programu MTS za pomocą programu Visual Basic, Automatyzacja zaawansowanych czynności administracyjnych programu MTS za pomocą programu Visual Basic


© 1998 Microsoft Corporation. Wszelkie prawa zastrzeżone.