![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dbExpress [D7, MSSQL]
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]> Дело в том, что я все делаю визуально.
ну да, а визуально ошибки не делаются?