OberonCore
https://forum.oberoncore.ru/

Вывод текста + Таблица
https://forum.oberoncore.ru/viewtopic.php?f=35&t=1968
Страница 1 из 1

Автор:  l2qwe [ Вторник, 20 Октябрь, 2009 19:51 ]
Заголовок сообщения:  Вывод текста + Таблица

Пытаюсь вывести Текст и следом после текста таблицу(результат SQL запроса) По отдельности все получается в одно мест не получается.

Код:
MODULE TestSQL1;

   IMPORT Dialog, Views,TextMappers, TextModels, TextControllers, SqlDB,
               TextViews, SqlControls, StdLog, StdTables;
   VAR
      dlg*: RECORD
         id*,
         password*,
         database*,
         driver*: ARRAY 255 OF CHAR;
         statement*: ARRAY 1024 OF CHAR
      END;
      table*: SqlDB.Table;   (* anchor for database *)
      vt: Views.View;
      
      
   PROCEDURE CheckResult (tab: SqlDB.Table; par: ANYPTR);
   BEGIN
      vt := SqlControls.dir.NewTableOn(tab);
      (*Views.OpenAux(vt, "#Sql:Result")*)
   END CheckResult;
   
   PROCEDURE ExecuteThis (statement: ARRAY OF CHAR);
      VAR
         res: INTEGER;
         db: SqlDB.
         Database;
         rows,cols,row,col : INTEGER;
   BEGIN
   
         SqlDB.OpenDatabase(dlg.driver, dlg.id, dlg.password, dlg.database,SqlDB.async, SqlDB.showErrors, db, res);
         table := db.NewTable()
         table.Exec(statement);
         table.Call(CheckResult, NIL);      
      StdLog.Int(table.rows);
   END ExecuteThis;

   PROCEDURE Do*;
   VAR
      t:TextModels.Model;
      f:TextMappers.Formatter;
      v:TextViews.View;
   BEGIN
      dlg.id         :="";
      dlg.password   :="";
      dlg.database    :="Volna";
      dlg.driver      :="SqlOdbc";

      t:=TextModels.dir.New();
      f.ConnectTo(t);      
      f.WriteString("ШАПКА");
      f.WriteLn;      
      v:=TextViews.dir.New(t);      
      ExecuteThis("select top 10 product,type from rvwVersions");
      f.WriteView(vt);
      Views.OpenView(v);
   END Do;
   
END TestSQL1.

Если раскоментировть
(*Views.OpenAux(vt, "#Sql:Result")*)
и закоментироват
f.WriteView(vt);
то я получаю 1 окно куда выводиться "ШАПКА"
и второе куда выводиться результат запроса в виде таблице.


Подскажите как эт дело мне объединить.

Автор:  Евгений Темиргалеев [ Вторник, 20 Октябрь, 2009 20:23 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Читать данные из таблицы методом Read и писать их в нужном виде после шапки через TexMappers.Formatter
см. SqlObxTab и Sql/Docu/Sys-Map

Автор:  l2qwe [ Среда, 21 Октябрь, 2009 14:24 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Мне в дальнейшем будет необходимо обрабатывать двойной клик на строку в выведенной таблице.

Автор:  Иван Кузьмицкий [ Среда, 21 Октябрь, 2009 14:29 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Может, опишете задачу целиком?

Автор:  l2qwe [ Среда, 21 Октябрь, 2009 17:07 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Форм. задачи
1)Сформировать временную таблицу
............Диалоговое окно с полями одной записи в таблицу и кнопка добавит
............Временна таблица наполняется пеликаньем на кнопку добавит и единовременно отображается(в том же диалоге или в в другом окне не важно)
............Должна быть возможность редактировать записи этой временно таблицы(в текстовом режиме не приемлемо, есть жесткое ограничение по допустимым значениям)
............Далее эта временна таблица заливается на SQL.
2)Должна быть возможность редактировать ранее занесенные записи
............делается выборка из SQL таблицы. результат во временную таблицу и вывестись к нам на экран
............далее с этой таблице мы будем далее тоже самое что и в пункте 1.
............жмем сохранит и в SQL удаляются те записи которые мы выбрали и заливаются новые.
3)Формирование отчетов...ну это я уже понимаю как делать, с этим проблем у меня нету.

PS Это то что в основном будут делать все модули которые я хочу написать.
Всё это у меня реализовано на делфие, но корява. Захотел переписать все заново с большим функционалом, что бы быстрее работало и интерфейс по дружественней сделать и за одно чутка попробовать ББ освоить + в Делфие у меня очень долго выполняется расчет надеюсь ББ это будет делать быстрее.

Автор:  Евгений Темиргалеев [ Среда, 21 Октябрь, 2009 17:38 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Делал похожую вещь - спец. вьюшка показывала "таблицу" (список) записей конкретного вида. Редактировалось через диалог, как у Вас описано. БД не использовал.

Предлагаю попробовать такой вариант:
- временной таблицей будет текст только для чтения (см. пример ObxWrappers) определённого формата
- диалог единый для всех таблиц (работает с фокусированным текстом). Определяет (по "таймеру" - см. реализацию DevInspector) текущую временную таблицу (TextViews.FocusText()) и номер записи по положению в тексте курсора ( см. TextControllers.Controller.CaretPos() )

Автор:  l2qwe [ Пятница, 23 Октябрь, 2009 19:07 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

Как можно реализовать вот такое:
При запуске ББ заполняется массив, содержимое которого будет доступен в дальнейшем любому модулю(не заполняя массив заново)

Я так понимаю что заполнение массива должно выполняться в Config.Setup
А как его содержимое "опубликовать" для остальных модулей не знаю.

Автор:  Евгений Темиргалеев [ Пятница, 23 Октябрь, 2009 19:42 ]
Заголовок сообщения:  Re: Вывод текста + Таблица

l2qwe писал(а):
При запуске ББ заполняется массив, содержимое которого будет доступен в дальнейшем любому модулю(не заполняя массив заново)
Массив в отдельный модуль, экспортировать массив для чтения. Процедура инициализация массива вызывается из инициализации модуля. Модули, которым массив нужен импортируют модуль с массивом. Для "первого импорта" (при загрузке) - произойдет инициализация, т.е. в Config ничего писать не надо.

См. как пример модуль National из русифицированного 1.5. Массивы toUpper, toLower, fromWin1251, toWin1251. Не хватает только экспорта для чтения "-".

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/