Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание таблиц [D5, IB5.x]


Страницы:   1 2

Лора ©   (2004-02-19 08:59:00) 

Здравствуйте! Подскажите, есть ли возможность в Делфи создать программно рабочую область. То есть как, например в фокспро можно написать:
nnn=1
select naim2 from nsi
where naim1=a into cursor t&nnn,
где t&nnn- это название рабочей области, а nnn-это счетчик


Zacho   (2004-02-19 12:04:00) [21]

Ну и кто мешает например, просто выбрать всю таблицу а потом бегать по датасету как заблагорассудится ? В дельфи для работы с данными из БД существует такая вещь как набор данных (DataSet). Почитай что-нибудь про это.


Лора   (2004-02-19 11:53:00) [22]

Ну не получилось у меня хранимой процедурой. А вот через создание рабочих областей в фокспро практически получилось. Просто большая часть программы уже реализована на делфи и эту часть тоже нужно бы на делфи сделать. Тока пока не пойму как.
Таблица, которая используется для этого одна-это справочник участков станций, наименовае входа, наименование выхода и расстояние:
naim1     naim2        Rast
Джамбул   Луговая      500
Луговая   Чу           300
Луговая   Рыбачье      310
Чу        А-А 1        250
Чу        Кияхты       100
А-А 1     А-А 2        100
А-А 1     актогай      600
Актогай   Семипалатинск 500  
Мне необходимо От Джамбула нарисовать маршрут до Семипалатинска: Джамбул-Луговая-Чу-А-А1-Актогай-Семипалатинск.

и т.д.


Zacho   (2004-02-19 11:41:00) [23]

Не вчитывался в условие задачи, но могу сказать, что в IB есть хранимые процедуры, а в языке ХП и триггеров есть такая конструкция - FOR SELECT .. INTO .. DO ..
Хотя вполне возможно, что это можно сделать и одним запросом, без ХП.
Приведи структуру таблиц, пример данных и желаемый результат.


Лора   (2004-02-19 11:37:00) [24]

Извините, я уходила по делам.
Мне нужно найти маршрут. Есть станция отпарвления и станция назначения, необходима найти те станции, через которые пройдет поезд. Есть участки в справочнике: входная станция и выходная. Но те станции, которые находятся мехду пунктом отправления и назначения, могут иметь ответвления в другую сторону. То есть таким образом выглядит:
станция отправления Джамбул станция назначения Семипалатинск
маршрут выглядит: Джамбул-Луговая-Чу-Моинты-Актогай-Семипалатинск.
Но если я выбираю из справочника станцию отправления Джамбул, то их будет несколько, станций назначения от Джамбул тоже будет несколько, поэтому мне я и делаю select несколько раз пок ане найду Семипалатинск, но я же не знаю сколкьо раз мне его придется делать в цикле, поэтому и не могу создавать столько таблиц через create. Просто знаю, что в фокспро есть такая возможность создать как бы виртуальную таблицу, а потом при закрытии программы она изчезает, то есть ее не надо удалять, просто закрыть и она изчезтнет.
Есть ли такое в делфи?


Desdechado   (2004-02-19 10:46:00) [25]

если речь идет о выборке из БД, которая как-то на клиенте проименована, то это и есть объект TQuery, который содержит результаты выборки


Danilka   (2004-02-19 09:49:00) [26]

а чем простой запрос не катит? результат его выполнения отдается клиенту и не хранится на сервере, скока его не проси об этом.


Соловьев   (2004-02-19 09:46:00) [27]

2 Лора
создай таблицу а потом и удали ее. Как? Drop table


Johnmen   (2004-02-19 09:42:00) [28]

Зачем это ? Что будешь делать с этим ?


Лора   (2004-02-19 09:39:00) [29]

Нет, не создание таблицы конкретно в базе данных, а как бы область наподобие таблицы, которую потом можно закрыть и она не остается в базе. То есть она создается на то время пока программа работает.


Zacho   (2004-02-19 09:31:00) [30]

Объясни, что такое "рабочая область" Ни в Дельфи, ни в IB такого понятия нет.
А создать таблицы - конечно можно, выполнить запрос CREATE TABLE .. , подробнее читай Data Definition Guide,


Лора   (2004-01-23 13:46:00) [31]

Здравствуйте!
По вчерашней проблеме написала процедурку, но она затыкается на разветвлении:

здесь выбираю все станции по станции Джамбул, то есть выбираются такие варианты: Джамбул-Каратау, Джамбул-Луговая, Джамбул-Чимкент. Если по первой ветке не нашлось ничего, то переходит на следующую запись (Джамбул-Луговая) и ищет по ней и т.д.
Но после луговой идет разветвление на 2 станции и он их не просматривает, берет только первую и если она тупиковая, то он переходит на запись Джамбул-Чимкент, хотя нужно пройтись по обоим вариантам.

procedure TForm1.Button5Click(Sender: TObject);
begin
stan1:=edit1.text;
stan2:=edit2.text;
form1.qq1.close;
form1.qq1.SQL.clear;
form1.qq1.SQL.add('select * from stanzii');
form1.qq1.SQL.add('where naim1=:vh');
form1.qq1.params[0].value:=stan1;
form1.qq1.open;
while not (form1.qq1.eof) do begin
  if form1.qq1['naim2']<>stan2 then begin
     aa:=stan2;
     stan1:=form1.qq1['naim2'];
     poisk (stan1, stan2);
     form1.qq1.next;
     strok:='';
  end;
end;
end;

procedure poisk (stan1, stan2:string);
begin
strok:=strok+stan1;
form1.qq2.close;
form1.qq2.SQL.clear;
form1.qq2.SQL.add('select * from stanzii');
form1.qq2.SQL.add('where naim1=:vh');
form1.qq2.params[0].value:=stan1;
form1.qq2.open;
while not (form1.qq2.eof) do begin
  if form1.qq2['naim2']<>stan2 then begin
     aa:=stan2;
     poisk (form1.qq2['naim2'],aa);
     form1.qq2.next;
  end;
end;
end;

Подскажите, что неправильно? Первый раз пишу рекурсию, может и напутала что-то


Danilka   (2004-01-23 13:35:00) [32]

[27] SPIRIT ©   (19.02.04 15:23)
да, вероятно так будет быстрее: либо сделать udf которая забирает таблицу к себе и ее шерстит по этому алгоритму, либо на клиенте, загрузить полностью таблицу и обработать ее на клиенте по этому алгоритму.
Но все равно, правило: среднее время поиска наименьшего пути пропорционально квадрату количества станций останется.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо