На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> Сортировка , Сортировка
    1)dBASE tables
    2) BDE
    Здравствуйте у меня проблемка.
    При попытке сортировки элементов в DBGrid1 таким кодом

    if table1.IndexFieldNames='NAZVA' then table1.IndexFieldNames:='NAZVA'
    else table1.IndexFieldNames:='WID_TRANSP';

    возникает ошибка
    Project Project1.exe raised exception class EDatabaseError with message ‘Table: No index for fields ‘WID_TRANSP’’. Process stopped. Use step or run to continue. :wall:

    Подскажете как можно отсортировать.
      Цитата neznayka @
      возникает ошибка
      Project Project1.exe raised exception class EDatabaseError with message ‘Table: No index for fields ‘WID_TRANSP’’. Process stopped. Use step or run to continue

      нет индекса для поля WID_TRANSP

      Цитата neznayka @
      Подскажете как можно отсортировать

      или индекс создать, дла вышеуказанного поля, или запрос с Order By:
      ExpandedWrap disabled
        Select * From YorTable
        Order By  WID_TRANSP
        И вместо IndexFieldNames используй IndexName
          СЕТИМ РАЗОБРАЛСЯ СОРТИРУЮ ТАК

          ExpandedWrap disabled
            procedure sort1(TABLE1:TTable;listbox1:TListBox);
            var s:string;
               List: TStrings;
               i:integer;
            begin
            Table1.IndexDefs.Update;
            TABLE1.GetIndexNames(listbox1.Items);
            if listbox1.Items.Count>0 then  begin
            for i:=0 to listbox1.Items.Count do begin
                 if listbox1.Items.Strings[i]='NEWINDEX2' then begin
             
             
            Table1.AddIndex('NewIndex1', 'NAZVA', [IxExpression]);
            Table1.IndexName:='NewIndex1';
            Table1.IndexDefs.Update;
            Table1.DeleteIndex('NewIndex2');
            end
            else begin
                Table1.AddIndex('NewIndex2', 'NAZVA', [IxExpression]);
            Table1.IndexName:='NewIndex2';
            Table1.IndexDefs.Update;
            Table1.DeleteIndex('NewIndex1');
                    end;
                    break;
                    end;
                    end
                    else  begin
            Table1.AddIndex('NewIndex2', 'NAZVA', [IxExpression]);
            Table1.IndexDefs.Update;
            Table1.IndexName:='NewIndex2';
             Table1.IndexDefs.Update;
             
                          end;
             
            TABLE1.Refresh;
            end;

          Проблема другая всё харашо работала в друг начло писать
          Цитата
          Class EDBEngine error whith message ‘Table is busy’
          Сообщение отредактировано: Bas -
            1.Таблица открыта другим пользователем в режиме монопольного доступа
            2.BDE - не отпустило таблицу
            3.При создании индексов таблица должна быть открыта в монопольном режиме.
              Какие то странные манипуляции с индексами. Зачем?
                Цитата Anatoly Podgoretsky @
                Какие то странные манипуляции с индексами. Зачем?

                :yes:
                Не проще на этапе проектирования добавить все индексы в IndexDefs , а нужный индекс активировать по клику на Title грида(кнопку,выбрать из списка,....)
                  Цитата
                  Не проще на этапе проектирования добавить все индексы в IndexDefs , а нужный индекс активировать по клику на Title грида(кнопку,выбрать из списка,....)


                  И так пробовал через IndexDefs на уровне проектирования создавал.
                  (при этом по идеи чуть ниже список с индексами таблицы (IndexName) если я добавил то они должны били там появится а их там нету :((( )

                  При попытке выбрать индекс через Table1.IndexName:='NAZ'; пишет

                  Цитата
                  Table1: index does not exist index: NAZ
                  :wacko:

                  Я так понял что надо создать индексный файл. Как это сделать? И после добавления записей его надо обновлять.
                  Сообщение отредактировано: neznayka -
                    Цитата neznayka @
                    Я так понял что надо создать индексный файл.

                    :yes:
                    ExpandedWrap disabled
                      create index

                    Цитата neznayka @
                    И после добавления записей его надо обновлять.

                    Cтруктурные индексы (MDX) всегда подключенны к базе и при изменении записей - обновляються автоматически.
                      Никаких IndexDefs не надо, индексы создаются один раз, например с помощью Database Desktop и потом просто используются, путем указания в IndexName
                        :) Большое всем спасибо!!! :)


                        ТЕМА ЗАКРЫТА :'(
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0384 ]   [ 16 queries used ]   [ Generated: 28.10.24, 08:54 GMT ]