Announcement

Collapse
No announcement yet.

Tabellenname von Feld eines View ermitteln

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

  • Tabellenname von Feld eines View ermitteln

    Hallo,

    ich habe eine TIBOQuery mit einer View.
    Um festzustellen, ob ich in meinem Modul auf Datenänderung an anderen Querys reagieren muss, brauche ich den Tabellenname.

    Also der View heisst VKUNDE, und das Feld VKUNDE.ID kommt aus der Tabelle KUNDE.

    Kann man über die Systemtabellen mit der Info VKUNDE.ID an den Tabellenname KUNDE kommen?

    Danke, Frank

  • #2
    in rdb$relations.rdb$view_source findest du den quellcode des views.
    das müsste man ggf. analysieren

    gruß
    Holger
    www.ibexpert.co

    Comment


    • #3
      @Holger,

      Danke für den schnellen Tip. Ich habe es - denke ich mal - gelöst.
      Falls doch noch mal jemand dieses Problem hat, meine Lösung als SP:
      <PRE><CODE>
      CREATE PROCEDURE GET_ORIGIN (
      relation_name varchar(31),
      field_name varchar(31))
      returns (
      tabelle_name varchar(31),
      feld_name varchar(31))
      as
      declare variable check_exists varchar(31);
      declare variable view_context smallint;
      declare variable base_field varchar(31);
      begin
      -- Default Empty String
      tabelle_name = '';
      feld_name = '';
      select rdb$field_name
      , rdb$base_field
      , rdb$view_context
      from rdb$relation_fields where rdb$relation_name = :relation_name and
      rdb$field_name = :field_name into
      :check_exists
      , :base_field
      , :view_context;
      -- kein Eintrag in rdb$relation_fields - Tabellen- oder Feldname falsch
      if (check_exists is null) then
      begin
      -- evtll. Exception
      suspend;
      end
      else
      begin
      -- Feldname ist IMHO nur bei Views not null, kann aber nicht schaden
      feld_name = coalesce(:base_field, :field_name);
      -- keine View
      if (view_context is null) then
      tabelle_name = :relation_name;
      else
      select rdb$relation_name from rdb$view_relations where
      rdb$view_name = :relation_name and rdb$view_context = :view_context
      into :tabelle_name;
      suspend;
      end
      end
      </CODE></PRE>
      Cu, Fran

      Comment

      Working...
      X