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

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

Поиск записи. [D6, IB6.x]


Страницы:   1 2

suharew ©   (2005-09-02 21:35:00) 

Добрый вечер. Только начал осваивать firebird. и сразу вопрос.
К базе я кое как законектился, таблицу открыл.
можно ли использовать следующее:
Query1.locate(....); и

while not query1.eof do
begin
.....
end;

В книге я прочитал что нельзя использовать методы next, prior, insert. и.т.д. а надо использовать SQL. но тогда как сделать перебор записей всей таблицы?????????


Zacho   (2005-09-05 10:02:00) [1]

}{ander ©   (05.09.05 9:55) [22]
он вкладывает в это определенный смысл, который должен донести до читателя, а не предоставлять ему возможность самому додумать, что же он сказал на самом деле.


Возможно, где-то в книге это и объясняется. Я же её не читал, так что не знаю :) А возможно, это издержки перевода, если книга переводная.

> Ну зачем же так сразу с плеча рубить?-)

Да я и не сомневался, что именно ты знаешь :)


}{ander   (2005-09-05 09:55:00) [2]

2 Zacho ©   (04.09.05 17:09) [20]

> Я знаю, точнее догадываюсь, что имел в виду автор книги. :)

Я тоже примерно догадываюсь. Однако, мне кажется, если автор соединяет два слова (в данном случае "реляционный" и "доступ"), то он вкладывает в это определенный смысл, который должен донести до читателя, а не предоставлять ему возможность самому додумать, что же он сказал на самом деле.

> Если не знаете, что такое "реляционная алгебра" - читайте учебники :)

Ну зачем же так сразу с плеча рубить?-)


Zacho   (2005-09-04 17:14:00) [3]

Кстати, в подтверждение моего поста [15], вот отрывок из статьи гораздо более авторитетного, чем я, специалиста :

Существование IBTransaction дает возможность не только управлять параметрами транзакций целиком и полностью, но и полноценно управлять стартом и завершением транзакций. Возможно, если вы раньше работали с BDE, где практически никакого управления транзациями нет (одна транзакция на коннект), и ваша система имела мало пользователей (до 10-20-ти), то вы не испытывали никаких проблем. Действительно, BDE самостоятельно стартует и завершает транзакции в нужный момент. Однако, вся проблема в том, что получить эффективную многопользовательскую систему без явного управления транзакциями можно только в том случае, когда промежуточное звено (компоненты, BDE и т.п.) гарантирует, что длительность транзакций будет минимальна. Если же управлять транзакциями явно, то можно создать еще более эффективную систему. В противном случае "автоматизированность" управления транзакциями приведет к тому, что приложения будут чаще попадать на блокировки записей, сервер будет страдать от большого числа одновременно активных транзакций, или в базе будет накапливаться мусор из-за того, что какая-то транзакция активна с самого утра рабочего дня.
Весь ужас в том, что при отсутствии контроля над транзакциями вы не можете понять, что происходит. Производительность системы может деградировать с каждым часом, и сделать практически ничего нельзя (кроме рестарта сервера и обретения спокойствия еще на несколько часов).

(c) KDV, www.ibase.ru, 2005


Zacho   (2005-09-04 17:09:00) [4]

}{ander ©   (03.09.05 10:16) [16]
А кто-нибудь знает, что такое "реляционный доступ"?


Я знаю, точнее догадываюсь, что имел в виду автор книги. :)
Это работа с данными методами реляционной алгебры. Например, с помощью SQL, который на ней и основывается. :)

Если не знаете, что такое "реляционная алгебра" - читайте учебники :)


Anatoly Podgoretsky   (2005-09-03 14:12:00) [5]

Кстати по поводу АДО, как мне кажется Борланд пристегнуло его к VCL весьма плохо.


Anatoly Podgoretsky   (2005-09-03 14:11:00) [6]

Desdechado ©   (02.09.05 23:01) [14]
В части применения с dBase/Paradox развитие и не требуется, поскольку сами базы не развиваются. А для других баз лучше использовать другие технологии.

БДЕ сначало было сделано для Парадокса и после покупки Борландом dBase и оно было пристегнуто к нему, без наличия для этих двух баз альтернативных технологий, не зря же Микрософт личензировало БДЕ для включения их в свои продукты доступа JET/ODBC при работе с этими двумя базами, включая и раннии версии ФоксПро.

А вот то что Борланд решило пойти дальше и включила драйвера и для других баз может быть и не плохо, но вот только она не смогла сделать это нормально, с учетом развития этих баз. Включить то включила и при этом и заморозила.

Для себя я давно сделал выбор, если Парадокс и дбейс (особенно версии 7), то не вижу альтернативы в других технологиях от Микрософт и Борланда, да и в альтернативных движках тоже, а вот для других баз не вижу применимости в БДЕ, только во вред.


Виталий Панасенко   (2005-09-03 11:37:00) [7]


> Desdechado ©   (02.09.05 23:01) [14]
> умирает-умирает :)
> ибо БДЕ не развивается
> а только движение - жизнь, недвижение - смерть

А половая жизнь - сплошное движение..:-)) А если серьезно, то можно и TTable  использовать... Есть способ не очень снизить производительность... Нужно по ключевым полям (и, кажись, по всем индексированным) в локальной БД построить аналогичные индексы, но только DESC для ЖарПтицы... При этом на таблице в несколько сот тысяч (и больше) перемещение осуществляется практически мгновенно... Но при переходе с парадокса будут проблемы с сответствием типа (особенно, Дата/Время) полей... Да и писАть программу с использованием возможностей сервера наааааамного проще...Это мое мнение...


}{ander   (2005-09-03 10:16:00) [8]

2 Alexander Panov ©   (02.09.05 22:52) [13]

> Вполне успешно использую для своих задач как BDE

Вы очень смелый человек! (я серьезно).

2 Zacho ©   (02.09.05 22:04) [6] and to all

Обрати внимание на слова "Для реализации реляционного доступа .."

А кто-нибудь знает, что такое "реляционный доступ"? Честно говоря, очень странное сочетание слов... Никогда такого не встречал.


Zacho   (2005-09-02 23:16:00) [9]

Alexander Panov ©   (02.09.05 22:52) [13]
Об умирании BDE говоирить не стоит


Борланд прекратил развитие и поддержку BDE. Imho - это смерть.

> Вполне успешно использую для своих задач как BDE

Ситуации, конечно, разные бывают, но..
Дело в том, что использовать для работы с IB другие компоненты доступа можно гораздо успешнее. Я понимаю, когда в старых пректах продолжается использование BDE. Но начинать новый проект (или переделывать старый на другую СУБД) используя BDE - imho, не стоит. Уж слишком много у него недостатков по сравнению с другими движками.
А насчёт простоты - да, используя BDE можно практически не уделять внимания работе с транзакциями. А в результате получить приложение, которое даже при сравнительно небольшой нагрузке намертво весит сервер. Преценденты были, именно с IB. Вообще, невозможность полноценно управлять транзакциями - imho главный недостаток BDE при работе с IB.


Desdechado   (2005-09-02 23:01:00) [10]

умирает-умирает :)
ибо БДЕ не развивается
а только движение - жизнь, недвижение - смерть


Alexander Panov   (2005-09-02 22:52:00) [11]

Zacho ©   (02.09.05 22:28) [10]
Desdechado ©   (02.09.05 22:41) [11]

Вполне успешно использую для своих задач как BDE, так и ADO, а также(при необходимости работы с IB/FB) компоненты с соответствующей закладки Delphi.

Об умирании BDE говоирить не стоит, так как это один из самых простых методов доступа ко многим базам данных.


Zacho   (2005-09-02 22:44:00) [12]

2 suharew :

Кстати, вот полезная для тебя ссылка:

http://www.ibase.ru/develop.htm

Обрати внимание на http://www.ibase.ru/devinfo/ibx.htm


Desdechado   (2005-09-02 22:41:00) [13]

Боюсь, что употребленная выше терминология новичку понятна не будет...
1. Методы Next, Prior и подобные есть не только в TTable, но и в упомянутом TQuery, и их можно и нужно использовать.
2. Ttable я бы не рекомендовал все-таки применять, ибо очень медленно и неочевидно то, что происходит внутри. Лучше все-таки запросы с наборами данных (SELECT) и модифицирующие (UPDATE,DELETE).
3. При переносе программы с Парадокса на IB лучше сразу озадачиться проблемой многопользовательского доступа к БД, почитать о принципах такой работы. Здесь TTABle - только вред.
4. БДЕ универсален, но в силу этого малофункционален, многого не умеет, что умеют "заточенные" под конкретные СУБД компоненты типа IBExpress.


Zacho   (2005-09-02 22:28:00) [14]

suharew   (02.09.05 22:14) [9]

Да.
Есть и другие компоненты/технологии доступа к IB без BDE. Выбирай по потребностям и возможностям.

Кратко опишу, почему не стоит использовать BDE.
1. BDE уже мертво.
2. BDE не поддерживает полноценное управление транзакциями IB. Да и ещё много чего не поддерживает.
3. BDE много чего делает "само", "прозрачно" для программиста и не позволяет в это вмешаться. В результате может получится ситуация, когда вполне нормально работающая программа при каких-либо условиях перестаёт работать, и ничего кроме полной переделки программы с BDE на что-либо другое сделать нельзя.

Ну и ещё можно аргументы найти, но мне пока ломы :)


suharew   (2005-09-02 22:14:00) [15]

>И не стоит использовать BDE для работы с IB
почему?

Лучше использовать компоненты со страницы InterBase????


Zacho   (2005-09-02 22:08:00) [16]

suharew   (02.09.05 22:06) [7]

Лучше вообще всё полностью переделать, и программу и структуру БД. А то рискуешь получить тормозное глюкало. Впрочем, случаи разные бывают :)

И не стоит использовать BDE для работы с IB


suharew   (2005-09-02 22:06:00) [17]

Все понял. Я написал программу для Парадокса вот теперь перехожу на firebird. т.е. получается мне всего-то надо перенести данные в другие таблицы и код не надо переписывать, за исключением коннекта к серверу.??


Zacho   (2005-09-02 22:04:00) [18]

suharew   (02.09.05 21:52) [3]

Обрати внимание на слова "Для реализации реляционногодоступа .."

А вот если выше (или ниже) в тексте этой книге не объясняется, в каких случаях желательно применять реляционные способы, а в каких - навигационные, то действительно - ерунда книжка.

А вообще, могу посоветовать Шумаков, Фаронов "Дельфи 5. Руководство разработчика баз данных"


Alexander Panov   (2005-09-02 22:01:00) [19]

последний абзац попал случайно - не смотри это -

while not query1.eof do
begin
.....
end;

замени на
Table1.First
while not query1.eof do
begin
.....
end;


Alexander Panov   (2005-09-02 22:01:00) [20]

suharew   (02.09.05 21:52) [3]
Для реализации реляционного доступа к удаленной БД с помощию BDE необходимо использовать только средства языка SQL


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

Если в данный момент тебе нужно просто корректировать вручную, либо посредством сложного алгоритма данные в таблице, смело используй TTable.
Если есть возможность использовать групповую замену данных(UPDATE ... ), используй другой метод.
SQL UPDATE эффективнее, но не всегда применим, поэтому говот\рить катгорично, как сказано в книге, совершенно неправильно.

while not query1.eof do
begin
.....
end;


замени на
Table1.First
while not query1.eof do
begin
.....
end;


Страницы:   1 2

Наверх

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