![]() |
|
|
![]()
|
|
| madmanStas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.8.2004 Где: Россия Волгоград Репутация: нет Всего: нет |
как грамотно написать рекурсивную процедуру обрашения к бд ?на основе sql ?
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Раскажи по подробней о своей задаче.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| madmanStas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 12.8.2004 Где: Россия Волгоград Репутация: нет Всего: нет |
Тут где-то идет моя ошибка мне кажется что просто результаты sql запроса каждый раз изменяються что и приводит к зацикливанию проги.. Добавлено @ 08:44 Или может вся подпрограмма изначальна не верна |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 2 Всего: 7 |
Блин, объясни задачу.
Вот у всех проблема.... толи с русским языком, толи с авторскими правами. Никто толком никогда не расскажет что он делает. Как помогать-то? Дальше по коду: Procedure wetka ( wet : TTreeNode; ids :Integer); var i, LIM : integer; sqls : string; wetk : TTreeNode; begin sqls := 'SELECT ID, TIP, IMG, NAM FROM INSTR WHERE UPID="'+IntToStr(ids)+'"'; form1.Query1.Close; form1.Query1.SQL.Text := sqls; form1.Query1.active:=true; query1.first; repeat wetk := form1.TreeView1.Items.AddChildObject(wet,form1.Query1.fieldByName('NAM').AsString ,nil); wetka (wetk,form1.Query1.fieldByName('ID').asInteger ); until query1.findnext=false; end; Может так, если я правильно домыслил вашу задачу? Кстати, рекурсия так не получится, поскольку при следующем вызове текст квери меняется и при возвращении в предыдущую процедуру текст квери уже будет другой, причем при переходе в верхнюю процедуру указатель квери будет в самом конце и процедура завешится. Тебе надо или для каждой ф-ии создавать свой квери или все сливать в массив запросов и потом с хвоста массива брать эти запросы(удаляя эти запросы) а новые опять добавлять. Вообщем известный прием. Это сообщение отредактировал(а) Bes - 24.2.2005, 09:54 |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Первая ошибка в том, что у тебя при каждом цикле будет закрываться Query1 и в него грузятся другие данные.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
madmanStas, думаю, что должно, это все выглядить так:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |