This is topic Работа с MS Access in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000341.html

Posted by Константин А (Участник № / Member № 2718) on :
 
Здравствуйте, у меня возникают некотороые проблемы по работе с БД. А именно, не мего понять следующее:
Пусть имеется таблица в БД где содержится список пород древесины. В таблице 2 поля: id древесины и Name - название породы.
Вопрос состоит в следующем: Как при открытии данного приложения происходил бы вывод этих древесин на экран и пользователь мог бы выбрать соответвующую древесину? (наподобие ListBox)
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если у Вас заранее известно количество строк в БД, то надо считывать поочередно нужные строки и выводить значения полей на экран. Для вывода наименования породы можно в качестве промежуочного носителя использовать строковый атрибут какого-либо канала (например, КОММЕНТАРИЙ).
Если количество нужных строк в БД заранее неизвестно, надо сначала запросить их количество (по соответствующему условию), а затем выбирать нужные строки из выборки меняя ПАРАМЕТР канала, реализующего запрос.
Можно организовать это как интерактивными процедурами, так и программно.
В HELP это описано в разделе "Примеры SQL-запросов/.../Выборка данных из БД".
 
Posted by Константин А (Участник № / Member № 2718) on :
 
Да, это все понятно. Так оно и будет работать, если реализовать выборку потом из списка, тыкая наугад номер древесины, чтобы показать древесину, например, ЯСЕНЬ, который в таблице содержится под номером 172. Сколько же времени потребуется пользователю и нервов тоже, чтобы выбрать из списка нужную ему древесину, тыкая, отобразить каждое дерево, начиная с номера "0" до номера "172"??? Получается, он проделает ненужную работу 172 раза....
Хотелось бы реализовать немного не так... Чтобы пользователь выбрал нужную ему древесину, глядя на весь список древесины. Пусть этот список отображался бы ListBox. Как до этого добиться? Помогите... Заранее благодарен.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Можно создать таблицу некоторого объема, например, 60 строк.
В первичном запросе выводить в таблицу первые 60 имен древесины.
Оператору надо дать возможность вывести вторую группу, а при необходимости третью и т.д.
Номер группы и номер строки в таблице будут идентифицировать нужную строку в таблице БД.
Результатом действий оператора будет формирование запроса с идентификаторами, выбранными оператором, для получения более полной информации по выбранному типу древесины.
Параметры конечного запроса могут формироваться программно в реальном времени через текстовые или числовые атрибуты вспомогательных каналов.
Но, возможно, при значительной неопределенности и громозкости задачи она может быть решена путем создания специального ActiveX.
 
Posted by Константин А (Участник № / Member № 2718) on :
 
Здравствуйте еще раз. Вот начал смотреть, чтобы в таблице отображались деревья. В Helpe при использовании таблицы "переключатель каналов" используются насосы. Но какналы Насос1, Насос2, Насос3 создают в ручную и потом их показывают в таблице.
В архивных таблицах - там просто в зависимости от времни показ значения.

У меня же вто что:
В БД MS Aссess содержится таблица trees:
id | name
==============
1 | Сосна
2 | Ель
3 | Дуб

Пользователю после открытия приложения надо указать, какое дерево ему надо обработать. Как ему выбрать данное дерево в программе? С помощью какой
 
Posted by Константин А (Участник № / Member № 2718) on :
 
Здравствуйте еще раз. Вот начал смотреть, чтобы в таблице отображались деревья. В Helpe при использовании таблицы "переключатель каналов" используются насосы. Но какналы Насос1, Насос2, Насос3 создают в ручную и потом их показывают в таблице.
В архивных таблицах - там просто в зависимости от времни показ значения.

У меня же вто что:
В БД MS Aссess содержится таблица trees:
id | name
==============
1 | Сосна
2 | Ель
3 | Дуб

Пользователю после открытия приложения надо указать, какое дерево ему надо обработать. Как ему выбрать данное дерево в программе? В какую таблицу записать этот спсисок деревьев и каким образом? К каком аргументу привязывать и как в этот аргумент записать весь этот список деревьев? Не понятно. [Неодобрение / Frown]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Сделайте на экране набор ГЭ "Текст" в виде стобца из n строк. Количество строк в столбце n должно определять некую группу строк таблицы БД.
Строка таблицы БД может быть определена как
i=k*n+m, где аргументы экрана
k - номер выбраной группы (от 0 до возможного количества групп),
m - номер строки в группе (от 1 до n).
Выполните запрос количества нужных строк в таблице БД и выведите первые n строк в столбец на экране.
Предоставьте оператору возможность "листать" таблицу изменением аргумента k. Выводите на экран
строки k-й группы.
Найдя нужную группу, оператор может выбрать нужную породу дерева, указав на соответствующий ГЭ столбца на экране. При этом он в аргумент m введет номер нужной ему строки.
Программно вычисляете номер строки в БД по приведенной выше формуле и делате окончательную выборку из БД всей неоходимой оператору информации из этой строки таблицы БД.
 
Posted by Константин А (Участник № / Member № 2718) on :
 
То, что нужно. Спасибо. Вроде работает, только медленно.... Медленно выводит строки "n" на экран. (количество строк на экране n = 10). Реализовал так, что полчается выполнение 10 запросов по запросу на каждую строку.
Подскажите, пожалуйста, можно ли одним запросом выбрать сразу первые 10 строк и записать в соответсвующие разные 10 переменных? Например, выбрать 10 пород деревьев от номера 11 до новера 20. Если да, то как это реализовать одним запросом?
 
Posted by Константин А (Участник № / Member № 2718) on :
 
или так бы реализовать -
Допустим запрос:

SELECT tree.name #names#
FROM tree
WHERE id >= 11 AND id <= 20

Как бы сделатьтак, чтобы в переменную names записались все деревья, а не только последняя запись?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Trace Mode 6 каждый запрос возвращает только 1 запись. Такова логика используемого интерфейса.
 
Posted by arido (Участник № / Member № 2961) on :
 
Вышлите, пожалуйста, пример?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Быстром Старте, в первой части есть пример создания БД в MS Access и обращения к ней.
 
Posted by arido (Участник № / Member № 2961) on :
 
Нужен пример "считывания" данных из БД и отображения на экране. (Запись в БД работает)
 
Posted by arido (Участник № / Member № 2961) on :
 
Константин А, скиньте, пожалуйста, проект, посмотреть. [Улыбка / Smile]
 
Posted by arido (Участник № / Member № 2961) on :
 
Пожалуйста!
Срочно нужен пример вывода значений из БД на экран!! :0
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлено.
 
Posted by Vjam (Участник № / Member № 2261) on :
 
2 Констатнтин. Можно ли прислать пример как организован запрос в вашем проекте. У меня тоже проблема такого рода, только надо вывести список рецептур. выпадающий список к сожалению в ТМ не получается/ мыло vjam@mail.ru
 
Posted by SATER (Участник № / Member № 1414) on :
 
Здравствуйте, Константин. Можете ли прислать Ваш пример? rokise@rambler.ru
Заранее спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Возможно, в текущем релизе подобные задачи удобнее решать с использованием ГЭ "Таблица БД".
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2