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

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

Не понятно что удерживает таблицу [D7, ADS]


Страницы:   1 2 3 4 5

kyn66 ©   (2009-10-28 12:42:00) 

Добрый день. Для временного хранения использую таблицу на диске. Перед использованием ее очищаю

   if Cps1Tbl.Active then
     Cps1Tbl.Close;
   Cps1Tbl.Exclusive := True;
   Cps1Tbl.EmptyTable;
   Cps1Tbl.Exclusive := False;
   Cps1Tbl.Open;

.. Нашпиговываю данными

 while not OborotQuery.EOF do
   begin
     Cps1Tbl.InsertRecord([OpsTblKod.Value, OborotQueryTovKod.Value,
                                        OborotQueryCena.Value,
                                        OborotQueryKolOst.Value, OborotQuerySumOst.Value,
                                        OborotQueryKolPol.Value, OborotQuerySumPol.Value,
                                        OborotQueryKolReal.Value, OborotQuerySumReal.Value,
                                        OborotQueryOstMesKol.Value, OborotQueryOstMesSum.Value]);
                   OborotQuery.Next;
 end;



Затем выбираю из нее данные данные по критерию

   CpsQuery.SQL.Clear;
   CpsQuery.SQL.Add('SELECT DISTINCT RegKod,TovKod,TovCena FROM Cps1 ORDER BY RegKod');
   CpsQuery.Open;
   CpsQuery.First;
   while not CpsQuery.EOF do
     begin
        Cps2Tbl.InsertRecord([CpsQueryRegKod.Value, CpsQueryTovKod.Value, CpsQueryTovCena.Value]);
        CpsQuery.Next;
     end;


За первым проходом все нормально. Стоит повторно выполнить эту опреацию - ошибка именно на этом месте Cps1Tbl.EmptyTable; http://yurec66.narod.ru/Vopros/errcps1.jpg/Такое ощущение, что таблица почему то не закрывается, чтото ее удерживает.


kyn66   (2009-10-28 13:43:00) [81]

Да, забыл добавить(плохо что форум не оборудован редактированием постов) что таблица не имеет ни индексов, ни мемо полей...


Сергей М.   (2009-10-28 13:41:00) [82]


> я же ошибку и указал


Это ты видишь при запуске под отладчиком или автономно ?


kyn66   (2009-10-28 13:40:00) [83]

Я пошагово прошел полностью для CpsQuery.CloseТАм закрываются курсоры и т.д. и т.п. Т. е. выхода на исключения нету. А за вторым разом до брекпоинта уже не доходит, тем более я писал, что таблица принимает статус [5]


kyn66   (2009-10-28 13:37:00) [84]


> Но для начала [3]


Ну так я же ошибку и указал http://yurec66.narod.ru/Vopros/errcps1.jpg


Сергей М.   (2009-10-28 13:34:00) [85]


> Знать бы в каком месте ожидать подвоха


Да что там искать-то ? У тебя там всего-то дюжина строк, можно и пошагово пройтись ..
Но для начала [3]


kyn66   (2009-10-28 13:31:00) [86]

Не успел сказать об этом. Действительно, отлавливать закрытие сложно. Знать бы в каком месте ожидать подвоха, на что конкретно обратить внимание.


Сергей М.   (2009-10-28 13:24:00) [87]


> Anatoly Podgoretsky ©   (28.10.09 13:21) [8]


Можно и не поймать.
Но в голове при этом должна родиться мысль - искать почемуоно не клюёт


Anatoly Podgoretsky   (2009-10-28 13:21:00) [88]

> Сергей М.  (28.10.2009 13:18:07)  [7]

Можно и не поймать, ведь никакой обработки ошибок в коде нет, есть увереность, что ошибок НИКОГДА не будет.


Сергей М.   (2009-10-28 13:18:00) [89]


> kyn66 ©   (28.10.09 13:06) [2]
>
> Закрыл


Значит не закрыл. Чудес-то не бывает)
Ставь брейкпойнт на CpsQuery.Close и лови закрытие.
Вот как поймаешь, так и поедем дальше.


Anatoly Podgoretsky   (2009-10-28 13:17:00) [90]


> Подсознательно я понимаю, что ошибка в этом коде

В этом коде ошибки нет.


kyn66   (2009-10-28 13:15:00) [91]

Если размышлять логически без кода... Есть открытая таблица с набором данных. Выполняем запрос для олучения данных из этой таблицы. После получения запроса таблица не нужна. Закрываем ее. Обработав запрос , закрываем и его. Повторяем действия..... - в отладчике свойства таблицы:

  Active - False
  Exclusive - True;


Вроде все должно быть нормально. Выполняю очистку - обломс!


kyn66   (2009-10-28 13:09:00) [92]

Подсознательно я понимаю, что ошибка в этом коде

  CpsQuery.SQL.Clear;
  CpsQuery.SQL.Add('SELECT DISTINCT RegKod,TovKod,TovCena FROM Cps1 ORDER BY RegKod');
  CpsQuery.Open;
  CpsQuery.First;


Т.к. отключая его, ошибки не возникает. Но без этого куска никак. Вот и непонимаю, в чем дело...


Anatoly Podgoretsky   (2009-10-28 13:09:00) [93]

> kyn66  (28.10.2009 12:42:00)  [0]

Между прочим, обычно приложение указывает ошибку, если нет то убери except end


kyn66   (2009-10-28 13:06:00) [94]

Закрыл, просто строка не захватилась в код


  while not CpsQuery.EOF do
    begin
       Cps2Tbl.InsertRecord([CpsQueryRegKod.Value, CpsQueryTovKod.Value,
                                    CpsQueryTovCena.Value]);
       CpsQuery.Next;
    end;
 CpsQuery.Close;


Сергей М.   (2009-10-28 13:02:00) [95]


> чтото ее удерживает


CpsQuery ее удерживает - ты же не закрыл этот запрос


Страницы:   1 2 3 4 5

Наверх

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