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

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

dbExpress [D7, MSSQL]


Страницы:   1 2

DimonNew ©   (2004-03-30 12:59:00) 

Вопрос по компонентам dbExpress. Одна и таже ошибка в 7 и 8 Delphi.
Есть комонеты SQLConnection, SQLQuery, DataSet.
На форме две комоненты DBGrid и DBLookupComboBox.
При связывании таблица с DataSet появляется ошибка :
Operation not allowed on a unidirectional dataset.

А при занесения DataSet в ListSource компонеты DBLookupComboBox при открытии списка во время работы программы, в списке каждая запись повторяется несколько раз и выдает ошибку :
Stack overflow.

Может при работе с dbExpress нужно что-то еще настраивать?


sniknik   (2004-03-30 23:59:00) [1]

> де-то читал, что вроде dbExpress побыстрее ADO работает. Но не проверял.
ну если у него по умолчанию серверный курсор выставлен а у ado локальный то просто бросив компаненты на форму и открыв запросы получим потрясающую разницу в скорости открытия (в пользу dbExpress).
так что слухи обоснованы (значит ли что они правдивы? ;).
думаю если ado настроить аналогично разницы не будет. а вот с настройками в ado гораздо лутше (больше режимов работы), это точно.


YurikGl   (2004-03-30 20:07:00) [2]

А что мешает пользовать SimpleDataset?


Desdechado   (2004-03-30 15:24:00) [3]

для распространения прог с dbExpress нужен еще драйвер dbexpXXXX.dll - той СУБД, которую используешь. есть родные от борланда, есть много от третьих фирм


bushmen   (2004-03-30 15:18:00) [4]

>вот ведь муть какая :), проще по моему на ADO перейти с >клиентским курсором. (аналогично будет выкачивать данные как и >с прицепленным ClientDataset)

Где-то читал, что вроде dbExpress побыстрее ADO работает. Но не проверял.


DimonNew   (2004-03-30 15:06:00) [5]

Если делать приложение в D8 как VCL Forms, то закладка ADO.NET не доступна. Доступны лишь dbExpress и BDE. А если делать Windows Forms то доступно только ADO.NET. Может есть другой способ, но пока я не нашел.

И вопрос по распространению приложения с компонентами dbExpress и DataSetProvider,ClientDataSet. Какие нужны библиотеки, кроме
midas.dll. И нужно ли настраивать где-нибудь их.


Desdechado   (2004-03-30 14:57:00) [6]

2 roottim
midas.dll не требует лицензии при распространении, вкомпоновать в ЕХЕ - 200 кб


sniknik   (2004-03-30 14:51:00) [7]

> Под 8 версией?
а его там нет? а как же ADO.NET про который так много говорят? а если не под net пишеш то там D7.1 должна быть включена(именно для этого) по тем же слухам. (у меня ее нет, только то что слышал)


roottim   (2004-03-30 14:35:00) [8]

2SQLConnection-SQLQuery(SQLDataSet)-DataSetProvider-ClientDataSet-DataSource-DBGrid(etc)

а это значит что в инсталятор пойдет midas.dll... либо он будет прилинкован в exe. т.е некое неудобство по инсталяции и по лицензии..


DimonNew   (2004-03-30 14:23:00) [9]

Все заработало под 7 и 8 версиями:
SQLConnection-SQLQuery(SQLDataSet)-DataSetProvider-ClientDataSet-DataSource-DBGrid(etc)

Спасибо за помощь.


DimonNew   (2004-03-30 14:14:00) [10]

Под 8 версией?


sniknik   (2004-03-30 14:03:00) [11]

вот ведь муть какая :), проще по моему на ADO перейти с клиентским курсором. (аналогично будет выкачивать данные как и с прицепленным ClientDataset)

DimonNew ©   (30.03.04 13:22) [7]
> Нет я сейчас проверил через ADO, все нормально.
там по умолчанию наоборот стоит
у тебя ситуация как если бы
CursorLocation = clUseServer
CursorType = ctOpenForwardOnly

DimonNew ©   (30.03.04 13:35) [12]
> Спасибо, буду разбираться.
зачем? чего нет возможности заменить компоненты?


DimonNew   (2004-03-30 13:35:00) [12]

Спасибо, буду разбираться.


Desdechado   (2004-03-30 13:33:00) [13]

в отличие от БДЕ, dbExpress-овские датасеты однонаправленные, к ним нужно прилеплять ClientDataset (как сказал Johnmen), но только для случаев, когда нужно ходить по датасету вперед-назад (т.е. при работе с визуальными компонентами). Если же надо просто пройтись по датасету один раз (простейший SELECT Count(*)), то можно и без ClientDataset


just me   (2004-03-30 13:32:00) [14]

dbExpress просто так вместе с DBGrid работать не будет - все таки SQLDataSet реально однонаправленные датасеты использует, а грид можно скроллировать в любом направлении. Так что прийдется использовать дополнительный DataSetProvider или SimpleDataSet.
Поищи в сети статейку (вроде она была когда-то на www.ibase.ru) "Перенос приложений с BDE на dbExpress" - там про это написано


DimonNew   (2004-03-30 13:29:00) [15]

Нашел в чем дело, отрывок из книги по Delphi 7 для проф.:

Отображение данных при помощи компонентов со страницы Data Controls также ограничено. Нельзя использовать компоненты TDBGrid и TDBCtrlGrid, а в компоненте TDBNavigator не забудьте отключить кнопки возврата на одну позицию назад и перехода на последнюю запись.


Johnmen   (2004-03-30 13:29:00) [16]

SQLConnection-SQLQuery(SQLDataSet)-DataSetProvider-ClientDataSet-DataSource-DBGrid(etc)
Здесь ClientDataSet уже м.б. двунаправленным.


DimonNew   (2004-03-30 13:22:00) [17]

Нет я сейчас проверил через ADO, все нормально.


sniknik   (2004-03-30 13:20:00) [18]

а вот это хз., сказал по аналогии с ADO там тоже такую ошибку выдает и именно в этом случае.


DimonNew   (2004-03-30 13:17:00) [19]

Где это устанавливается?


sniknik   (2004-03-30 13:14:00) [20]

> Дело в том, что я все делаю визуально.
ну да, а визуально ошибки не делаются?


Страницы:   1 2

Наверх

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