| 
| 
 | Вопрос # 4 239/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Помогите разобраться со следующей проблемой, при нажатии на кнопку необходимо наименование услуг  из одного столбца таблицы вывести в другую таблицу, но только в строку (ячейку) через запятую. Прикреплен файл.
 В качестве СУБД используется Мicrosoft Аccеss. Доступ к базе осуществляется посредствам технологи АDО. Для вывода данных используется DBGrid.
 Помогите пожалуйста! Спасибо!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задала: Geny (статус: Посетитель)Вопрос отправлен: 28 мая 2010, 12:54
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Vic Здравствуйте, Geny!Если в качестве СУБД используется MSACCESS тогда эту операцию
 лучше выполнить не средствами БД, а программно с помощью приложения.
 Допустим, что у Вас 3 таблицы
 1ая - услуги -назовем ее tbl1
 которая содержит 2 поля:
 usluga (название услуги)
 client (индекс клиента)
 2ая - клиенты - tbl2
 которая содержит 2 поля:
 id (индекс клиента)
 clientname (название клиента)
 3-я - итого для клиента - tbl3 - куда и будут заносится все услуги для выбранного клиента в строку
 которая содержит 2 поля:
 id (индекс клиента)
 itog (услуги в строку)
 Выбрав из tbl2 клиента запросим все его услуги
 SELECT usluga from tbl1 where client = :client (допустим ADOQuery1)
 далее в цикле по нашему набору формируем строку (str - переменная строка)
 куда и заносим все услуги из набора
 while not ADOQuery1.eof do
 str := str + ADOQuery1.FieldByName('usluga').AsString+', ';
 после окончания цикла убираем последний знак запятой из нашей переменной str
 вставим с помощью ADOcommad1 значение переменной в tbl3
 INSERT INTO tbl3 (client,itog) VALUES (:client,:str)
 здесь :client - значение параметра поле id из tbl2
 :str - значение параметра из переменной str
 Надеюсь что все понятно
 
|  | Ответ отправил: Vic (статус: 1-ый класс)Время отправки: 28 мая 2010, 17:12
 Оценка за ответ: 5
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |