Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 086

/ вопрос открыт /

Здравствуйте, эксперты!
Есть связка ClientDataSet-DataSource-DBGridEh, проблема при сортировке данных в DBGridEh данные в ClientDataSet не сортируются. Нужно их как то там обновить, пробовал ApplyUpdates выдает ошибку "Mising ... provider".
И еще в таблице для одного из полей нужно сделать контроль дубликатов, сейчас это реализовано вот так: (приложение).

если таблица не сортируется, все работает, если отсортировал, то cdsDList и cdsList получаются разными таблицами. ПОЧЕМУ? и можно ли как то по другому проводить проверку на дубликаты?

Приложение:
  1.  
  2. cdsDList:=TClientDataSet.Create(nil);
  3. cdsDList.Data:=cdsList.Data;
  4. cdsDList.First;
  5. for j:=1 to cdsDList.RecordCount do
  6. begin
  7. cdsList.First;
  8. for i:=1 to cdsList.RecordCount do
  9. begin
  10. showmessage('iiii'+cdsList.FieldByName('POSITION').AsString+' '+cdsDList.FieldByName('POSITION').AsString);
  11. showmessage(inttostr(j)+' '+inttostr(i));
  12. if (cdsList.FieldByName('POSITION').AsString<>'') and
  13. (cdsList.FieldByName('POSITION').AsString=cdsDList.FieldByName('POSITION').AsString) and
  14. (i<>j) then
  15. begin
  16.  
  17. exit;
  18. end;
  19. cdsList.Next;
  20. end;
  21. cdsDList.Next;
  22. end;
  23. cdsDList.Free;


Казаков Николай Константинович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Казаков Николай Константинович (статус: 1-ый класс)
Вопрос отправлен: 14 марта 2011, 14:12
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 21 марта 2011, 19:15; участников в обсуждении: 3.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 14 марта 2011, 17:48 [#1]:

в clientdataset данные откуда берутся? Какая БД? Контроль дубликатов можно сделать на уровне БД - достаточно сделать поле POSITION с признаком UNIQUE. Тогда не надо будет извращаться с циклами. Тем более, что будете сильно удивлены "скоростью" работы Вашего алгоритма на реальных объемах данных.
corban

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

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 НЕТ! мне нужно просто отсортировать данные.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 21 марта 2011, 19:15 [#10]:

посмотрите описание TClientDatSet по этим ссылкам:
http://www.intbook.info/delphi/Glava22/Index4.html
http://www.programmersclub.ru/ahillesbd1/

может быть найдете что-то полезное

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 октября 2017, 20:39
Выполнено за 0.04 сек.
Рейтинг@Mail.ru