|
Вопрос # 5 086/ вопрос открыт / |
|
Здравствуйте, эксперты!
Есть связка ClientDataSet-DataSource-DBGridEh, проблема при сортировке данных в DBGridEh данные в ClientDataSet не сортируются. Нужно их как то там обновить, пробовал ApplyUpdates выдает ошибку "Mising ... provider".
И еще в таблице для одного из полей нужно сделать контроль дубликатов, сейчас это реализовано вот так: (приложение).
если таблица не сортируется, все работает, если отсортировал, то cdsDList и cdsList получаются разными таблицами. ПОЧЕМУ? и можно ли как то по другому проводить проверку на дубликаты?
Приложение: Переключить в обычный режим-
- cdsDList:=TClientDataSet.Create(nil);
- cdsDList.Data:=cdsList.Data;
- cdsDList.First;
- for j:=1 to cdsDList.RecordCount do
- begin
- cdsList.First;
- for i:=1 to cdsList.RecordCount do
- begin
- showmessage('iiii'+cdsList.FieldByName('POSITION').AsString+'
'+cdsDList.FieldByName('POSITION').AsString);
- showmessage(inttostr(j)+' '+inttostr(i));
- if (cdsList.FieldByName('POSITION').AsString<>'') and
- (cdsList.FieldByName('POSITION').AsString=cdsDList.FieldByName('POSITION').AsString) and
- (i<>j) then
- begin
-
- exit;
- end;
- cdsList.Next;
- end;
- cdsDList.Next;
- end;
- cdsDList.Free;
Мини-форум вопроса
Всего сообщений: 10; последнее сообщение — 21 марта 2011, 19:15; участников в обсуждении: 3.
|
Мережников Андрей (статус: Абитуриент), 14 марта 2011, 17:48 [#1]:
в clientdataset данные откуда берутся? Какая БД? Контроль дубликатов можно сделать на уровне БД - достаточно сделать поле POSITION с признаком UNIQUE. Тогда не надо будет извращаться с циклами. Тем более, что будете сильно удивлены "скоростью" работы Вашего алгоритма на реальных объемах данных.
|
|
corban (статус: 2-ой класс), 16 марта 2011, 03:30 [#2]:
DBGridEh - только отображает содержимое таблицы ClientDataSet; если отсортировать сетку то с самой таблицей ничего не произойдет и передать из DBGridEh в ClientDataSet сортировку нереально. А смысл сортировки данных в ClientDataSet какой? При использовании SQLзапроса можно получить любую выборку данных отсортированную по любому полю...
|
|
Казаков Николай Константинович (статус: 1-ый класс), 16 марта 2011, 08:25 [#3]:
нужно, чтобы данные в поле POSITION были отсортированы по возрастанию, я уже понял, что DBGridEh - только отображает содержимое таблицы ClientDataSet, но в самой CDS они должны как то обновляться, иначе путаница может возникнуть, видим одно, а на самом деле другое, разъясните плииз
|
|
Мережников Андрей (статус: Абитуриент), 17 марта 2011, 18:15 [#4]:
ClientDataSet - это не таблица! Если хотите получить ответ на свой вопрос, то дайте ответ на уточняющие вопросы.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 18 марта 2011, 08:17 [#5]:
в CDS данные формируются в самой программе, где выставить для поля POSITION свойство UNIQUE
|
|
corban (статус: 2-ой класс), 18 марта 2011, 10:46 [#6]:
свойство UNIQUE выставляются для поля на стадии создания таблицы в БД. ClientDataSet подключается к таблице из БД позволяет манипулировать с записями таблицы, сортировка записей по какому либо полю делается для удобочитаемости при выводе информации для пользователя причем данные в самой таблице никаким изменениям не подвергаются. Если не секрет какая БД используется?
|
|
Казаков Николай Константинович (статус: 1-ый класс), 18 марта 2011, 15:22 [#7]:
есть вообще способ отсортировать данные в CDS, в базе мне вообще ничего трогать не надо, только в ClientDataSet
|
|
Мережников Андрей (статус: Абитуриент), 20 марта 2011, 20:26 [#8]:
Цитата (Казаков Николай Константинович):
есть вообще способ отсортировать данные в CDS, в базе мне вообще ничего трогать не надо, только в ClientDataSet
есть несколько способов:
1) прочитать книжку;
2) прочитать уточняющие вопросы и ответить на них;
3) сконструировать прибор для чтения мыслей и разослать его всем, кому задаете вопросы.
|
|
Казаков Николай Константинович (статус: 1-ый класс), 21 марта 2011, 08:32 [#9]:
я ответил на уточняющие вопросы уже несколько раз читайте выше, здесь повторю еще раз. БД нет! CDS Заполняется вручную, структура определяется в программе и значения полей определяются в цикле, никаких ACCESS, ни каких PARADOX НЕТ! мне нужно просто отсортировать данные.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|