OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 20:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Вывод текста + Таблица
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 19:51 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Пытаюсь вывести Текст и следом после текста таблицу(результат 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 окно куда выводиться "ШАПКА"
и второе куда выводиться результат запроса в виде таблице.


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 20:23 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Читать данные из таблицы методом Read и писать их в нужном виде после шапки через TexMappers.Formatter
см. SqlObxTab и Sql/Docu/Sys-Map


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Среда, 21 Октябрь, 2009 14:24 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Мне в дальнейшем будет необходимо обрабатывать двойной клик на строку в выведенной таблице.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Среда, 21 Октябрь, 2009 14:29 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Может, опишете задачу целиком?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Среда, 21 Октябрь, 2009 17:07 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Среда, 21 Октябрь, 2009 17:38 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Делал похожую вещь - спец. вьюшка показывала "таблицу" (список) записей конкретного вида. Редактировалось через диалог, как у Вас описано. БД не использовал.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Пятница, 23 Октябрь, 2009 19:07 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Как можно реализовать вот такое:
При запуске ББ заполняется массив, содержимое которого будет доступен в дальнейшем любому модулю(не заполняя массив заново)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вывод текста + Таблица
СообщениеДобавлено: Пятница, 23 Октябрь, 2009 19:42 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
l2qwe писал(а):
При запуске ББ заполняется массив, содержимое которого будет доступен в дальнейшем любому модулю(не заполняя массив заново)
Массив в отдельный модуль, экспортировать массив для чтения. Процедура инициализация массива вызывается из инициализации модуля. Модули, которым массив нужен импортируют модуль с массивом. Для "первого импорта" (при загрузке) - произойдет инициализация, т.е. в Config ничего писать не надо.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB