Informační tok Funkční structura Datová struktura ER model Modulová struktura Typová struktura Relační model Dokumentace


[Celkový datový model] [Funkce] [Externí rohraní] [Stavové diagramy] [Datové elementy] [Entity] [Relace]
[Databáze] [Události] [Materiály] [Generovací funkce] [Vyhodnocovací funkce] [Konfigurace] [Uživatelé] [Projekt] [Home]



Vyhodnocovací funkce
EnterpriseDataModel
(Web Publishing)


Vytvořeno: 02-11-2002 16:20:39
Poslední změna: 12-19-2002 10:42:54

Modul

Module: Web Publishing

Zdrojový kód:

PROCEDURE EnterpriseDataModel(x%, y%)
BEGIN

    CALL Header ("Celkový datový model");
    CALL Title ("", "Celkový datový model");
    FOREACH Systemdatamodel WHERE Type = "erm" DO
        CALL EnterpriseDataModelMap(x%, y%);
        PRINT {HTML} "<P ALIGN=CENTER><IMG SRC= " + Str$(Object) + ".png BORDER=0 ISMAP USEMAP=""#map""></P>", NL;
        
        CALL GenObjectData(Object, TRUE, TRUE);
        PRINT {HTML} "<HR SIZE=""1"" COOR=""#3366CC"">";
        
    END
    
    CALL H2_TopSpaceless("Entity");
      PRINT {HTML} "<TABLE NOWRAP VALIGN=BASELINE>",NL;
      PRINT {HTML} " <TR>",NL;
      PRINT {HTML} " <TH ALIGN=LEFT VALIGN=TOP COLSPAN=2><FONT SIZE=2 FACE=""Verdana, Arial""><B>Name</B></FONT></TH>",NL;
      PRINT {HTML} " <TH VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial""><B></B></FONT></TH>",NL;
      PRINT {HTML} " <TH ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial""><B>Klíč</B></FONT></TH>",NL;
      PRINT {HTML} " <TH ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial""><B>Atribut</B></FONT></TH>",NL;
      PRINT {HTML} " <TH VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial""><B>Závisí na</B></FONT></TH>",NL;
      PRINT {HTML} " <TH ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial""><B>Relace</B></FONT></TH>",NL;
      PRINT {HTML} " </TR>",NL;

        FOREACH Entity WHERE X <> 0 AND Y <> 0 ORDER BY Name DO
          PRINT {HTML} " <TR>",NL;
          
          //Spalte "Name"
          PRINT {HTML} " <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
          PRINT {HTML} "<IMG SRC=""bullet.gif"">";
          PRINT {HTML} "</FONT></TD>",NL;
          PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
          PRINT {HTML} Anchor$("<b>" + Conv$(Boxname) + "</b>", "", Str$(Object) + ".htm");
          PRINT {HTML} "</FONT></TD>",NL;
          
          //Spalte "P" und Schlüssel
          PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
          z%=0;
          FOREACH Identifier WHERE Entity = Entity.Name ORDER BY Name DO
            z%=z% +1;
            //sind mehrere Schlüssel vorhanden, muß der Tabellenanfang mit Leerelementen gefüllt werden
            IF z% > 1 THEN
              PRINT {HTML} " <TR>",NL;
              PRINT {HTML} " <TD></TD>",NL;
              PRINT {HTML} " <TD></TD>",NL;
              PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
            END
            IF Entity.Primaryidentifier = Identifier.Name THEN
              PRINT {HTML} "<B>P</B></FONT></TD>",NL;
              PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
              IF Identifier.Name <> "" THEN
                PRINT Identifier.Name;
              ELSE
                PRINT {HTML} "<CENTER>-</CENTER>";
              END
            ELSE
              PRINT {HTML} "</FONT></TD>",NL;
              PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
              IF Identifier.Name <> "" THEN
                PRINT Identifier.Name;
              ELSE
                PRINT {HTML} "<CENTER>-</CENTER>";
              END
            END
            PRINT {HTML} "</FONT></TD>",NL;
            
            //Spalte Attribute
            PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
            foundattrib! = FALSE;
            FOREACH Identifierattribute WHERE Identifierattribute.Identifier = Identifier.Name
                                          AND Entity = Identifier.Entity DO
              FOR Attribute WHERE Name = Identifierattribute.Attribute
                              AND Entity = Entity.Name DO
                PRINT {HTML} Anchor$(Attribute.Name, "", Str$(Object) + ".htm");
                PRINT {HTML} "<BR>", NL;
                foundattrib! = TRUE;
              END
            END
            IF NOT foundattrib! THEN
              PRINT {HTML} "<CENTER>-</CENTER>";
            END
            PRINT {HTML} "</FONT></TD>",NL;
            
            //Spalte "Abhängig von"
            PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
            first% = 0;
            founddep! = FALSE;
            FOREACH IdentifierERconnection WHERE Entity = Identifier.Entity
                                             AND Identifier = Identifier.Name
                                        ORDER BY Entity DO
              FOR ERconnection WHERE Entity = IdentifierERconnection.Refentity
                                 AND Rship = IdentifierERconnection.Rship
                                 AND ERconnectionno = IdentifierERconnection.ERconnectionno DO
                FOR Entity WHERE ERconnection.Entity = Name DO
                  PRINT {HTML} Anchor$("<B>" + Conv$(Boxname) + "</B>", "", Str$(Object) + ".htm");
                  IF ERconnection.Name <> "" THEN
                      PRINT " (", Conv$(ERconnection.Name), ", ", ERconnection.Cardinality, ")";
                  ELSE
                      PRINT " (", ERconnection.Cardinality, ")";
                  END
                  PRINT {HTML} "<BR>", NL;
                  founddep! = TRUE;
                END
              END
            END
            IF NOT founddep! THEN
              PRINT {HTML} "<CENTER>-</CENTER>";
            END
            PRINT {HTML} "</FONT></TD>",NL;

            //Spalte "Relation"
            PRINT {HTML} " <TD ALIGN=LEFT VALIGN=TOP><FONT SIZE=2 FACE=""Verdana, Arial"">";
            i%=0;
            IF z% <= 1 THEN /* zugeordnete Relation nur 1 Mal ausgeben! */
              IF Private THEN
                PRINT {HTML} "Entita - problem domain";
              ELSE
                FOREACH Relation WHERE Entity = Entity.Name ORDER BY Entity DO
                  IF i% > 0 THEN
                    PRINT {HTML} "<BR>";
                  END
                  PRINT {HTML} Anchor$( Conv$(Boxname) , "", Str$(Object) + ".htm");
                  i% = i% + 1;
                END
                IF i% = 0 THEN
                  PRINT {HTML} "<CENTER>-</CENTER>";
                END
              END
            END
            PRINT {HTML} "</FONT></TD>",NL;
            PRINT {HTML} " </TR>",NL;
          END
        END

   
      PRINT {HTML} "</TABLE>",NL;
      PRINT {HTML} "<BR>",NL;

      // Liste der Beziehungen
      CALL H2_TopSpaceless("Relační vztahy");
      first%=0;
          FOREACH Entity WHERE x <> 0 AND Y <> 0 ORDER BY Name DO
            FOREACH Erconnection WHERE Erconnection.Entity = Entity.Name
                               AND NOT Erconnection.Cardinality = "ge" DO
              FOR Rship WHERE Rship.Id=Erconnection.Rship DO
                  IF first% <> 0 THEN
                    PRINT NL;
                  END
                  first% = 1;
                  PRINT {HTML} "<IMG SRC=""bullet.gif"" ALIGN=TOP> ";
                  PRINT {"ARIAL",10} Conv$(Entity.Boxname);
                  IF Erconnection.Name <> "" THEN
                    PRINT {HTML} " ", Anchor$("<b>" + Conv$(Erconnection.Name) + "</b>", "", Str$(Object) + ".htm"), " ";
                  ELSIF Erconnection.Cardinality="as" THEN
                    PRINT {"ARIAL",10,BOLD} " popisuje ralační vtah mezi ";
                  ELSIF Erconnection.Cardinality="sz" THEN
                    PRINT {"ARIAL",10,BOLD} " specifikuje ";
                  ELSE
                    PRINT {"ARIAL",10,BOLD} " má vztah k ";
                  END
                  c% = 0;
                  FOREACH Erconnection AS EC WHERE EC.Rship=Rship.Id
                                           AND NOT EC.Entity=Erconnection.Entity
                                           AND NOT EC.cardinality="as"
                                           AND NOT EC.cardinality="sz" DO
                    FOR Entity WHERE Entity.Name=EC.Entity DO
                      IF c%>0 THEN
                        PRINT {"ARIAL",10} " a ";
                      END
                      PRINT {"ARIAL",10} Conv$(Entity.Boxname);
                    END
                    c% = c% + 1;
                  END
                  PRINT NL;
              END
            END
          END
      IF first% = 0 THEN
        PRINT {"ARIAL",10} "ER model neobsahuje žádné vztahy.", NL;
      ELSE
        PRINT {HTML} "<BR>",NL;
      END

    CALL Footer("");
END


Generováno: 16.10.2003 7:41 Systém: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\Projekt03.csf Generováno systémem case/4/0
Vygeneroval: Administrator Soubor: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\html\45068668.htm (C) microTOOL GmbH 2002