OberonCore
https://forum.oberoncore.ru/

Вывод данных из таблицы
https://forum.oberoncore.ru/viewtopic.php?f=35&t=3461
Страница 1 из 1

Автор:  Иван Колодяжный [ Среда, 25 Май, 2011 13:24 ]
Заголовок сообщения:  Вывод данных из таблицы

В общем не могу разобраться как вывести данные из таблицы. Создаю в базе test таблицу proba:
db.Exec("CREATE TABLE proba (id INTEGER, name VARCHAR(255))");
db.Exec("INSERT INTO proba VALUES (11, 'privet privet')");
db.Commit
все работает, через mysql смотрю все сздалось.

а как вывести эти данные и куда вообще их можно вывести в бб?

Автор:  Евгений Темиргалеев [ Среда, 25 Май, 2011 13:31 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Например, в текст (см. F1, 5 Text, конкретнее --- подойдёт ObxDb). Для пробы проще в журнал (тот же текст, см. StdLog).

Пример простой базы с соотв. гуём SqlObx... см. Sql Dev-Man, в конце, п. Example.

Автор:  Иван Кузьмицкий [ Среда, 25 Май, 2011 13:31 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Создайте экземпляр таблицы table := db.NewTable(), затем выполните запрос table.Exec("SELECT * FROM ...") и читайте результат с помощью table.Read(row, readRec).

Учтите, что поля и типы структуры readRec должны совпадать с полями, перечисленными в запросе SELECT.

Автор:  Иван Колодяжный [ Среда, 25 Май, 2011 17:44 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Спасибо за ответы, вроде разобрался немного)

Автор:  Иван Колодяжный [ Четверг, 26 Май, 2011 11:42 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

А как можно вывести таблицу в диалоговое окно?

Автор:  Иван Денисов [ Четверг, 26 Май, 2011 13:32 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Если просто быстро открыть, то смотрите SqlBrowser как сделан.

Если, хочется свои поля задавать и как-то по своему формировать таблицу, то пример есть сдесь:
viewtopic.php?f=35&t=3268

Если хочется именно в форму добавить таблицу, то создаете форму, вставляете через меню в форму контрол "таблица", в настройках контрола привязываете его к объекту таблица из вашего модуля.

Если не разберетесь, то я сделаю видеоурок :) и выложу на форум.

Автор:  Евгений Темиргалеев [ Четверг, 26 Май, 2011 17:14 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Иван Колодяжный писал(а):
А как можно вывести таблицу в диалоговое окно?
Почему именно туда? В тексте хуже видны?

Автор:  Иван Колодяжный [ Четверг, 26 Май, 2011 21:19 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

нет, просто мне нужно именно туда, т.к. я пытаюсь сделать что то вроде автоматизированной системы. К примеру есть список товаров или услуг, не важно, можно выбрать нужные, нажимаеш кнопку, производится расчет стоймости, затраченого времени ну типо того...

Автор:  Иван Колодяжный [ Пятница, 27 Май, 2011 14:52 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Подскажите пожалуйста, вот мой пример
Код:
MODULE DbTest2;

   IMPORT ObxRandom, (*MysqlLibWin, *)Math, Files, Dates, (*Services, *)Strings, (*MysqlStrings, *)SqlDB, SqlDrivers, Dialog, (*Mysql := MysqlDriver, *)Log := StdLog;

   CONST
      protocol = 'MysqlDriver';
      host = 'localhost';
      dbName = 'test2';
      user = 'root'+':'+dbName;
      pwd = 'ghbdtn';
      port = 0;
      client_flag = {};
      
   TYPE
      ReadRec = RECORD
      id*: INTEGER;
      name*: ARRAY 51 OF CHAR;
      value*: INTEGER;
   END;

   VAR
      db: SqlDB.Database;
      rec*: RECORD
      id: INTEGER;
      name: ARRAY 51 OF CHAR;
      value: INTEGER;
   END;
      
   table*: SqlDB.Table;
   
   PROCEDURE Connect*;
      VAR res: INTEGER;
   BEGIN
      SqlDB.OpenDatabase(protocol, user, pwd, host, SqlDB.sync, SqlDB.showErrors, db, res);
      table := db.NewTable();
      Log.String("Подключение к базе выполнено");Log.Ln;
   END Connect;
   
   PROCEDURE Create*;
      VAR
   BEGIN
      db.Exec("CREATE TABLE proba (id INT, name VARCHAR(255), value INT)");
      db.Exec("INSERT INTO proba VALUES ('1', 'usluga 1', '310')");
      db.Exec("INSERT INTO proba VALUES ('2', 'usluga 2', '230')");
      db.Exec("INSERT INTO proba VALUES ('3', 'usluga 3', '450')");
      db.Commit
   END Create;
   
   PROCEDURE Del*;
      VAR
   BEGIN
      db.Exec("drop table proba");
      Log.String("Tables Delete");Log.Ln;
   END Del;
   
   PROCEDURE Show*;
      BEGIN
      table.Exec("SELECT * FROM proba");
      Dialog.Update(table);
   END Show;
END DbTest2.
^QDbTest2.Connect
^QDbTest2.Create
^QDbTest2.Del
^QDbTest2.Show

что здесь не правильно? в диалоговом окне таблица отображается както странно:Изображение , хотя в mysql все нормально: Изображение

Вложения:
Db.rar [4.19 КБ]
Скачиваний: 370

Автор:  Пётр Кушнир [ Пятница, 27 Май, 2011 15:09 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

крайний символ теряется, вроде кто-то недавно исправлял подобный баг в ветке про драйвер мускля

Автор:  Иван Колодяжный [ Суббота, 28 Май, 2011 11:54 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

не думаю что с драйвером проблема, потому что если выводить в журнал то все нормально...

Автор:  Вячеслав Бойко [ Среда, 15 Июнь, 2011 11:58 ]
Заголовок сообщения:  Re: Вывод данных из таблицы

Иван Колодяжный писал(а):
не думаю что с драйвером проблема, потому что если выводить в журнал то все нормально...


Проблема с драйвером.
На рисунке показана ваша форма и место исправления в драйвере (помечена красным цветом)

Вложения:
db.jpg
db.jpg [ 82.88 КБ | Просмотров: 8213 ]

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