Консультация № 172912
05.10.2009, 09:57
0.00 руб.
0 5 0
Уважаемые эксперты,
можно ли в Builder 6 получить результат запроса SELECT в виде массива/структуры и т.п.?
Я использую Query->Open(). Но он похоже годится только для непосредственного отображения на TDBGrid.

Обсуждение

Неизвестный
05.10.2009, 16:09
общий
Warobushek:
Я использую Query->Open(). Но он похоже годится только для непосредственного отображения на TDBGrid.

Нет, конструкция

Query1->First(); // установить на первую запись
while( ! Query1->Eof) // пока не конец таблицы
{
Memo1->Lines->Add( Query1->FieldByName("pole1")->AsString);
Query1->Next(); //перейти на следующую запись
}

позволяет "пробежаться по всему набору данных и получить/сделать что-то с ними.. Фактически, это НАБОР ДАННЫХ - массив.
можно обращаться по индексу, по имени, по.. в общем, удобная штукаА вот вопрос, зачем Вам данные из базы перемещать в массив - остаётся открытым.. Я просто не могу найти объяснения этому (кроме одного )
Неизвестный
06.10.2009, 15:18
общий
Спасибо большое)))))))))
У меня в базе хранится информация о ж\д рейсах. Моя задача подбирать рейсы с учетом пересадок по минимальной стоимости.
А какое у Вас объяснение?
Неизвестный
06.10.2009, 15:35
общий
Warobushek:
А какое у Вас объяснение?

Незнание предмета.
Когда человек не знает, но хочет что-то сделать, он начинает изобретать колесо..
Дело в том, что РСУБД может решить практически любую задачу, есть конечно там нюансы.. но они касаются более глубоких и специализированных подходов/требований уходящих корнями в сугубо научную проблематику.
Вам незачем использовать массивы и т.д. (в контексте того что Вы говорите). Даже еще проще - можно (и нужно) спроектировать так базу данных, что бы пользователь/программа (проще - клиент) обращались к ней на обычном языке, типа ("покажи мне свободные места на рейс №...", Найди мне оптимальный маршрут в ... - у меня мало денег, а лететь хочется", и т.д.). "Нормальный" язык - утрировано конечно, но суть не меняется - надо выстроить так базу, что бы код приложения заключался в элементарных операциях: выборка, вставка, обновление, удаление.. возможно фильтрация (и то, локального кэша, т.е. видимых строк на экране).
Неизвестный
06.10.2009, 19:20
общий
В данном случае подбирается ведь не один рейс минимальной стоимости.
Пересадок может быть сколь угодно много.
Тут уж не обойтись, наверно, без решения задачи поиска минимального пути в графе.
Разве это можно реализовать с помощью использования обычных операций выборки ?
-------
P.S. с РСУБД в билдере действительно работаю в первый раз.
Неизвестный
06.10.2009, 21:27
общий
Warobushek:
Задачи оптимизации конечно отдельная тема.. И если есть требование решить именно каким то определенным методом или в принципе использовать методы поиска решения / оптимального плана - то тут.. удачи
Я говорю с точки зрения баз данных.. Возможно, организовать данные так, что по сути отпадает необходимость в расчетах..

PS: "всякую задачу можно решить как минимум 3 способами.."
Форма ответа