ICommand2

ICommand2 je základní interface programu CASE Studio 2.0.

function LoadFromFile(const FileName: WideString): IModel;

function LoadModelFromFile(const FileName: WideString): IModel;

Načte ze souboru FileName model a otevře ho. Vrací interface IModel. Obě funkce jsou shodné.

procedure Cascade;

Srovná okna přes sebe.

procedure Tile;

Srovná okna vedle sebe.

procedure Exit;

Ukončí program. O uložení modelů se musí postarat programátor ještě před ukončením !!!

procedure Show;

Zobrazí hlavní okno programu. (při spuštění programu jako COM server je hlavní okno ukryté)

function ModelCount:integer;

Počet modelů.

function Model:IModel;

Vrací interface Imodel;

procedure Hide;.

Ukryje hlavní okno programu.


IModel

function AttribCount: Integer;

Počet atributů v modelu.

function Attrib(i: Integer): IAttribute;

Vrací interface atributu IAtribut. i může být v intervalu 0 .. AttribCount-1

function DatType(OidAttr: Integer): WideString;

Poskládá datový typ atributu do formátu typ[(delka[,dec])]. OidAttr je OID atributu.

function EntityCount: Integer;

Počet entit v modelu.

function Entities(i: Integer): IEntity;

Vrací interface entity IEntity. i může být v intervalu 0..EntityCount-1

function RelCount: Integer;

Počet relací v modelu.

function Rel(i: Integer): IRelation;

Vrací interface relace IRelation.

function DictCount: Integer;

Počet uživatelských typů ve slovníku modelu.

function DictIt(i: Integer): IDictType;

Interface uživatelského typu IDictType. i v intervalu 0..DictCount-1

function TypeCount: Integer;

Počet datových typů v aktuální šabloně.

function TypeIt(i: Integer): IDataType;

Interface datového typu IDataType ze šablony. i v intervalu 0..TypeCount-1

function IndexCount: Integer;

Počet indexů v modelu.

function Index(i: Integer): IIndex;

Interface indexu IIndex. i v intervalu 0..IndexCount-1

function IndexItemsCount: Integer;

Počet indexových položek v modelu.

function IndexItem(i: Integer): IIndexItem;

Interface indexove položky IIndexItem. i v intervalu 0..IndexItemsCount-1

function AlterKeysCount: Integer;

Počet alternativních klíčů v modelu.

function AlterKey(i: Integer): IAlterKey;

Rozhraní alternativního klíče IAlterKey. i v intervalu 0..AlterKeysCount-1

function AlterKeyItemsCount(i: Integer): Integer;

Počet položek alternarivních klíčů v modelu.

function AlterKeyItem(i: Integer): IAlterKeyIt;

Rozhraní položky alternativního klíče IAlterKeyIt. i v intervalu 0..AlterKeyItemsCount-1

function TriggersCount: Integer;

Počet triggrů v modelu.

function Trigger(i: Integer): ITrigger;

Rozhraní triggru ITrigger. i v intervalu 0..TriggersCount-1. V triggrech jsou i uložené procedury a pohledy.

procedure SaveToFile(const fname: WideString);

Uloží model do souboru fname.

proceudre Save;

Uloží model do aktuálního souboru ModelFileName.

function Changed: WordBool;

V modelu byla změna, model je třeba před ukončením programu uložit.

function FindEntOid(i: Integer): IEntity;

Najde entitu podle jejího OID.

function FindAttrOid(i: Integer): IAttribute;

Najde atribut podle jejího OID.

function FindRelOid(i: Integer): IRelation;

Najde relaci podle jejího OID.

function FindDictItOid(i: Integer): IDictType;

Najde uživatelský typ podle jeho OID.

function FindTypeItOID(i: Integer): IDataType;

Najde datový typ podle jeho OID.

function FindIndexOid(i: Integer): IIndex;

Najde index podle jeho OID.

function FindIndexItOid(i: Integer): IIndexItem;

Najde položku indexu podle jejiho jejího OID.

property ModelFileName: WideString;

Název souboru, ve kterém je uložen model.

property ScriptBefore: WideString;

Text, který se vloží před generovaný SQL skript.

property ScriptAfter: WideString;

Text, který se vloží za generovaný SQL skript.

procedure ModelClose;

Uzavře model. O uložení modelu se musí postarat programátor !!!

property ModelName: WideString;

property ProjectName: WideString;

property Version: WideString;

property Author: WideString;

property Company: WideString;

Proměnné, ve kterých jsou hodnoty, které znáte z dialogového okna "Vlastnosti modelu"

property ModelCreated: Double;

Datum vytvoření modelu

property ModelModified: Double;

Datum poslední úpravy modelu.


IAttribute

property OID: Integer;

Identifikátor atributu.

property Name: WideString;

Název atributu.

property OIDEnt: Integer;

OID entity, které patří atribut.

property OIDFkRel: Integer;

Pokud je atribut cizím klíčem, je v proměnné OID relace, pomocí které atribut migroval z parent entity. Jinak 0

property OidFKattr: Integer;

Pokud je atribut cizím klíčem, je v proměnné OID atributu, který je primární klíčem v parent entitě. Jinak 0.

property OidFkEnt: Integer;

Pokud je atribut cizím klíčem, je v proměnné OID parent entity. Jinak 0.

property AttrRoleName: WideString;

Název Role pro atribut, pokud je cizím klíčem.

property attrColName: WideString;

Fyzický název atribut (název sloupce)

property AttrDefault: WideString;

Defaultní hodnota atributu.

property AttrCheck: WideString;

Omezující podmínka atributu.

property AttrDef: WideString;

Volně použitelná textová položka. V editoru atributů jako Def.

property AttrDef2: WideString;

Volně použitelná textová položka. V editoru atributů jako Def2.

property AttrDef3: WideString;

Volně použitelná textová položka. Pro možné budoucí využítí.

property AtrDescription: WideString;

Poznámka.

property AttrPk: WordBool;

atribut je primárním klíčem.

property AttrNotNull: WordBool;

atribut je NOT NULL

property AttrLength: Integer;

Délka atributu (pokud to typ atributu vyžaduje)

property AttrDecimal;

Počet desetinných míst v atributu. (pokud to typ atributu vyžaduje)

property OidType;

OID datového typu atributu. Prostřednictvím funkce FindTypeItOID z interface IModel získáte pomocí OidType rozhraní na IDataType. Pokud je atribut uživatelského typu, je v property 0.

property OidDict;

OID uživatelského typu. Prostřednictvím funkce FindDictItOid z interface IModel získáte pomocí OidDict rozhraní na IDictType. Pokud atribut není uživatelského typ, ale normálního datového typu, je v property 0.

property AttrUnique;

atribut má Unique integritní omezení.

property AttrUniqueConstraint;

Název constraint, pod kterým bude vygenerován.

property AttrCheckConstraint;

Název Check constraint atributu.

property AttrFk: WordBool; readonly

atribut je cizím klíčem.


IEntity

property OID: Integer;

Identifikátor entity.

property Name: WideString;

Název entity.

property EntTableName: WideString;

Fyzický název entity. Vygeneruje se jako název tabulky.

property Trigger: WideString;

Trigger, který patří k entitě. Také zde můžete zapsat některé složitější constrainty.

property Storage;

Parametry fyzického uložení databáze. Např. Tablespace.

property Description: WideString;

Poznámka, jakýkoliv text.

property Gener: WordBool;

Entita se bude generovat do SQL skriptu. Jinak to je v checkboxu v editoru entit, a v checklistboxu v dialogovém okně Generování SQL skriptu.


IRelation

property OidEntParent: Integer;

OID parent entity.

property OidEntChild: Integer;

OID child entity.

property RelType: tTypeRelation;

Typ relace.

 TypeRelIdent = 0;  Identifikační relace.

 TypeRelNonIdent = 1;  Neidentifikační relace.

 TypeRelInfo = 2;  Informativní relace.

property RelParcParent: tTypeParc;

Parcialita parent entity vůči child entitě.

 Mandatory = 0; Povinná

 Optional = 1; Nepovinná

property RelParcChild: tTypeParc;

Parcialita child entity vůči parent entitě. Typ je stejný jako u RelParcParent.

property RelRefParentUpdate: tTypeIntegrity;

Typ referenční integrity pro parent při update

  tTypeNone = 0;

  tTypeSetNull = 1;

  tTypeRestrict = 2;

  tTypeCascade = 3;

  tTypeSetDefault = 4;

property RelRefParentInsert: tTypeIntegrity;

Typ referenční integrity pro parent při insertu.

Je stejný jako u RelRefParentUpdate.

property RelRefParentDelete: tTypeIntegrity;

Typ referenční integrity pro parent při delete.

property RelRefChildUpdate: tTypeIntegrity;

Typ referenční integrity pro child při update.

property RelRefChildInsert: tTypeIntegrity;

Typ referenční integrity pro child při insertu.

property RelRefChildDelete: tTypeIntegrity;

Typ referenční integrity pro child při delete.

property ParentKeyType: tTypeParentKey;

Typ klíče v parent entitě.

  tTypePk = 0; Klíčem je primární klíč.

  tTypeUniqueAttr = 1;  Klíčem je Unique atribut.

  tTypeAlterKey = 2;  Klíčem je alternativní klíč.

property OidParentkey: Integer read;

Pokud je v parent entitě klíčem primární klíč, je v této proměnné 0.

Pokud je v parent entitě klíčem unique atribut, je v této proměnné OID tohoto atributu.

Pokud je v parent entitě klíčem alternativní klíč, je v této proměnné OID tohoto alternativního klíče.

property ConstraintFkName: WideString;

Fyzický název relace. Pokud to SQL server podporuje, generuje se jako Constraint <ConstraintFkName> Foreign key

property RelDescription: WideString;

Poznámka. Libovolný text.


ITrigger

Triggry ze seznamu triggrů. Jsou tu taky uložené procedury a pohledy. Viz TypeTrigger

property OID: Integer;

Identifikátor triggeru.

property Name: WideString;

Název triggeru.

property Source: WideString;

Zdrojový kod triggru (procedury, pohledu)

property TypeTrigger: tTypeTrigger;

Určuje, zda jde o trigger, uloženou procedure, nebo pohled. Může nabývat těchto hodnot:

tTypeTrig = 0;

tTypeProc = 1;

tTypeView = 2;

property Enabled: WordBool read Get_Enabled write Set_Enabled;

Pokud je nastaven na True, bude se trigger (procedura, pohled) generovat do SQL skriptu.


IDataType

Všechny proměnné jsou pouze ke čtení.

property OID: Integer;

Identifikátor datového typu.

property Name: WideString;

Název datového typu.

property NamePh: WideString;

Fyzícký název datového typu.

property LengthExists: WordBool;

Datový typ podporuje délku. Např. Char(20)

property DecimalExists: WordBool;

Datový typ podporuje i počet desetinných míst. Např. Decimal(10,5). Pokud datový typ nepodporuje délku, nemá tato proměnná význam.

property LengthMax: Integer;

Maximální délka datového typu.

property LengthMin: Integer;

Minimální délka datového typu.

property LengthDefault: Integer;

Defaultní délka datového typu. Tato délka se použije jako základní při např. při vytvoření atributu.

property DecimalMax: Integer;

Maximální počet desetinných míst datového typu.

property DecimalMin: Integer;

Minimální počet desetinných míst datového typu.

property DecimalDefault: Integer;

Defaultní počet desetinných míst.


IDictType

property OID: Integer;

Identifikátor slovníkového typu.

property Name: WideString;

Název slovníkového typu.

property NamePh: WideString;

Fyzický název slovníkového typu. Využije se především tehdy, pokud SQL server podporuje domény.

property OidType: Integer;

OID datového typu, viz IDataType

property DictLength: Integer;

Délka slovníkového typu.

property DictDecimal: Integer;

Počet desetinných míst slovníkového typu.

property DictDefault: WideString;

Defaultní hodnota slovníkového typu. Použije se při vytvoření domény, nebo ji převezme atribut.

property DictCheck: WideString;

Check slovníkového typu.Použije se při vytvoření domény, nebo ji převezmr atribut.

property DictDef: WideString;

Volně použitelná textová položka.

Viz také

property DictDef2: WideString;

Volně použitelná textová položka.

property DictDef3: WideString;

Volně použitelná textová položka. Zatím se nepoužívá.

property DictDescription: WideString;

Poznámka. Jakýkoliv text.


IIndex

property OID: Integer;

Identifikátor indexu.

property Name: WideString;

Název indexu.

property OIDEnt: Integer;

OID entity, které index patří. Viz také IEntity.

property IndexUnique: WordBool;

Index je Unique.

property IndexDescend: WordBool;

Index je sestupný.

property IndexClustered: WordBool;

Index je klastrovaný.

property IndexExpression: WideString;

Index je tvořen indexovým výrazem. Zatím použito pouze pro Clipper.

property IndexFilter: WideString;

Index je filtrovaný. Zatím nepoužito.

property IndexCaseSensitive;

Index rozlišuje velká a malá písmena. Zatím nepoužito.

property Storage: WideString;

Parametry fyzického uložení indexu. Např. tablespace.


IIndexItem

Co to je indexová položka ?

V příkazu Create Index OsobaJm on Osoba(Jmeno,Prijmeni) jsou indexovými položkami Jmeno a Prijmeni

property OID: Integer;

Identifikátor indexové položky.

property Name: WideString;

Název indexové položky. V některých případech (po editaci atributu) může být v proměnné nesprávná hodnota. Doporučuji název položky najít pomocí funkce FindAtrOid z rozhraní IModel.

property OidInd: Integer;

OID indexu, kterému patří indexová položka. Viz také.

property OidAttr;

OID atributu, ze kterého byla indexová položka vytvořena. Viz také.

property IndItDescend;

Indexová položka je sestupná. Pokud to SQL server podporuje.


IAlterKey

property OID: Integer;

Identifikátor alternativního klíče.

property Name: WideString;

Název alternativního klíče.

property NamePh: WideString;

Fyzický název alternativního klíče. Pokud to SQL server podporuje, generuje se jako Constraint Unique.


IAlterKeyIt

property OID: Integer;

Identifikátor položky alternativního klíče.

property Name: WideString;

Název položky alternativního klíče. V některých případech (po editaci atributu) může být v proměnné nesprávná hodnota. Doporučuji název položky najít pomocí funkce FindAtrOid z rozhraní IModel.

property OidAlterKey:Integer;

OID alternativního klíče, kterému patří položka alternativního klíče. Viz také.

property OidAttr:Integer;

OID atributu, ze kterého je alternativní položka vytvořena. Viz také.


Příklad

Výpis seznamu entit a všech jejích atributů.

var i,j:integer;

    c:ICommand2;

    m:IModel;

    e:IEntity;

    a:IAtribut;

begin

c := CoCommand2.Create;	// spuštění COM serveru

c.Show;	// zobrazení programu (nepovinné)

m := c.LoadFromFile('c:\proj\test.dm2');	// načtení modelu ze souboru

for i := 0 to m.EntityCount-1 do	// prochází všechny entity

   begin

   e := m.Entities(i);	// získá interface na entitu s indexem i

   writeln(e.Name);	// vypíše její název

   for j := 0 to m.AttribCount-1 do	// prochází všechny atributy

      begin

      a := m.Attrib(j);	// získá interface na atribut

      if a.OIDEnt = e.OID then 	// pokud atribut patří k entitě,

         begin

         writeln(a.Name);       	// vypíše její název

         end;

      end;

   end;

end;

Pokud jsou interface c a m lokální, model a COM server se automaticky zruší po odchodu programu z oblasti platnosti těchto proměnných. Pokud c a m deklarujete jako globální proměnné, nebo proměnné objektu, musíte model uzavřít m.ModelClose a celý COM server uzavřete příkazem c.Exit;

Pokud ve vašem vývojovém prostředí nemáte přístup k TLB knihovně, použijte tento postup.


Příklad 2

Pokud ve svém vývojovém prostředí nemáte přístup k TLB knihovně, můžete použít přístup přes. Příklad je napsán pro Delphi, ale tímto způsobem můžete CASE Studio ovládat z Accessu, VB, MS Wordu apod.

var i,j:integer;

    c:Variant;

    m:Variant;

    e:Variant;

    a:Variant;

begin

c := CreateOleServer('CaseStudio.Command2');	// spuštění COM serveru

c.Show;	// zobrazení programu (nepovinné)

m := c.LoadFromFile('c:\proj\test.dm2');	// načtení modelu ze souboru

for i := 0 to m.EntityCount-1 do	// prochází všechny entity

   begin

   e := m.Entities(i);	// získá interface na entitu s indexem i

   writeln(e.Name);	// vypíše její název

   for j := 0 to m.AttribCount-1 do	// prochází všechny atributy

      begin

      a := m.Attrib(j);	// získá interface na atribut

      if a.OIDEnt = e.OID then 	// pokud atribut patří k entitě,

         begin

         writeln(a.Name);       	// vypíše její název

         end;

      end;

   end;

end;


Seznam SQL serverů

OID	Název

1	Paradox

10	Interbase 4

20	Clipper 5	(ve vývoji)

30	Oracle

40	Sybase Anywhere

60	MS SQL

70	Ingres

80	Interbase 5

90	Informix