> -- Пётр Кушнир писал(а):
> в Блэкбоксе контрол связан с вашим кодом через  определённого типа.
но у меня этот интекактор типа SqlDB.Table	!

## Код:
```
MODULE OraAdmin;

IMPORT Dialog, Views, TextModels, TextControllers, SqlDB, SqlControls, StdTables, StdCmds;
VAR

TConnectionDescr*: RECORD 
    UserName* : ARRAY 30 OF CHAR;
    Password* : ARRAY 1024 OF CHAR;
    Database*,
    Driver* : ARRAY 30 OF CHAR;
END;

TFilter* : RECORD 
    likeName*: ARRAY 30 OF CHAR;
END;

table*: SqlDB.Table;   
stdTable*: StdTables.Table;   
db:  SqlDB.Database;

PROCEDURE GetDB*();
VAR 
    res: INTEGER; 
BEGIN
   SqlDB.OpenDatabase(TConnectionDescr.Driver, 
           TConnectionDescr.UserName, TConnectionDescr.Password, TConnectionDescr.Database,
                  SqlDB.async, SqlDB.showErrors, db, res);
         IF res = 0 THEN
            table := db.NewTable();
            Dialog.ShowMsg("#Sql:Connected & table RESERVED");
            StdCmds.OpenAuxDialog("Ora/Rsrc/ListOraUser", "ORACLE USERS EDITOR");
         ELSIF res <= 3 THEN
            Dialog.ShowMsg("#Sql:CannotLoadDriver")
         ELSE
            Dialog.ShowMsg("#Sql:ConnectionFailed")
         END;
END GetDB;

   PROCEDURE CheckResult (tab: SqlDB.Table; par: ANYPTR);
      VAR v: Views.View;
   BEGIN
      IF tab.res = 0 THEN
         IF tab.columns > 0 THEN
            v := SqlControls.dir.NewTableOn(tab);
            Views.OpenAux(v, "#Sql:Result");
         ELSE Dialog.ShowMsg("#Sql:StatementExecuted")
         END
      ELSE Dialog.ShowMsg("#Sql:ExecutionFailed")
      END;
   END CheckResult;

PROCEDURE ExecThis(stmt: ARRAY OF CHAR; table : SqlDB.Table);
VAR
   v : Views.View;
BEGIN
      IF (stmt # "") & (table # NIL) THEN
         (* allocate separate table to allow for multiple open tables *)
         table.Clear();
         table.Exec(stmt);
         Dialog.Update(table);
         (* separate result check from execution to allow for asynchronous operation *)
            (*   table.Call(CheckResult, NIL);   *)
(*                v := SqlControls.dir.NewTableOn(table); *)
      END;
END ExecThis;

PROCEDURE OpenConnectDlg* ();
BEGIN
 StdCmds.OpenToolDialog('Ora/Rsrc/TConnectionDescrDlg', 'Connect to ...');
END OpenConnectDlg;

PROCEDURE OraUsersFilterNotifier* (op, from, to: INTEGER);
VAR 
      stmt : ARRAY 1024 OF CHAR; 
BEGIN
     stmt := "select * from dba_users where username like '%" +TFilter.likeName + "%'" ;
     ExecThis(stmt  , table)  ;
    Dialog.ShowMsg("Executed");
END OraUsersFilterNotifier;

PROCEDURE OraUsersListNotifier* (t: SqlDB.Table; row, column: INTEGER; modifiers: SET);
BEGIN
    
    Dialog.ShowMsg("OraUsersListNotifier");

END OraUsersListNotifier;



BEGIN

   TConnectionDescr.Driver := "SqlOdbc3";
   TConnectionDescr.UserName := "POSITION"; 
   TConnectionDescr.Password := "";
   TConnectionDescr.Database := "PROG.WORLD";

END OraAdmin.

StdCmds.OpenAuxDialog('TConnectionDescrDlg', 'Connect')
```
