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-29 16:04:00) [21]


> Inovet ©   (29.10.09 15:53) [72]
>Мне вот этот метод больше нравится.


Так это как разновидность метода очистки. Просто EmptyTable как то раньше , на автомате на ум пришло. А вот насчет очистки с помощью
SQL у меня есть непонятки. Когда то задавал вопрос на форуме, но так и не получил ответа. Удаляю из таблицы с 1630918 записями , ну к примеру 110000 строк. Так вот процесс удаления DELETE FROMзанимает некоторое продолжительное время, ну где то сек 30. Не понятно, почему SQL так долго удаляет


Anatoly Podgoretsky   (2009-10-29 15:59:00) [22]

> kyn66  (29.10.2009 15:55:13)  [73]

А ты не путай оценки со своими тараканами, все правильно, оценка точная.


kyn66   (2009-10-29 15:55:00) [23]


> Anatoly Podgoretsky ©   (29.10.09 15:01) [69]
> > kyn66  (29.10.2009 15:00:08)  [68]Ну вот наконец и обругал,
>  а сначала приличным прикидывался.


Да и не думал даже обругивать. Просто форум, тем более ветка "Начинающим" и служит для того, чтобы более грамотные товарищи помогали своим начинающим, неопытным и т.д. коллегам, а не хвалились своим мастерством по отношению к слабейшим. И тем более не красиво высказывать свои оскорбления   И также учитывая твои способности.... Это к тому, что их недостаточно для быстрого решения простейшей задачи.в их сторону. Модерам, сорри за офтоп.


Inovet   (2009-10-29 15:53:00) [24]

> [71] kyn66 ©   (29.10.09 15:49)
>
> > Inovet ©   (29.10.09 15:46) [70]
>
> [53] - точно в цель! Спасибо еще раз.

А на
[54] Inovet ©   (28.10.09 19:52)
ты не ответил. Мне вот этот метод больше нравится.


kyn66   (2009-10-29 15:49:00) [25]


> Inovet ©   (29.10.09 15:46) [70]


[53] - точно в цель! Спасибо еще раз.


Inovet   (2009-10-29 15:46:00) [26]

> Мне твое предложение подошло очень даже. Все пошло работать
> как надо. Большое спасибо за совет.

Пожалуйста, вот только за какой из

> [53] Inovet ©   (28.10.09 18:56)
> [54] Inovet ©   (28.10.09 19:52)


Anatoly Podgoretsky   (2009-10-29 15:01:00) [27]

> kyn66  (29.10.2009 15:00:08)  [68]

Ну вот наконец и обругал, а сначала приличным прикидывался.


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


> Anatoly Podgoretsky ©   (29.10.09 11:31) [65]
> > kyn66  (29.10.2009 10:31:04)  [64]Это к тому, что их недостаточно
> для быстрого решения простейшей задачи.


Ну не всем же носить ордена мастера.... No comments. Некоторые (Inovet) даже дельные советы дают, реально помогающие, прошу заметить...


kyn66   (2009-10-29 14:58:00) [29]


> Inovet ©   (29.10.09 12:51) [66]


Да нет конечно, повторно ничего не нужно делать. Это я просто случайно нажал второй раз и вышла такая ситуация. Вот и решил ее устранить, т.к. юзер тоже может повторить такие  же действия ни о чем не думая.

Мне твое предложение подошло очень даже. Все пошло работать как надо. Большое спасибо за совет.


Inovet   (2009-10-29 12:51:00) [30]

> Тогда определение назначения не совсем понятно.

Закрытие на уровне файлов закрытых Query. Не стоит её тыркать куда не попадя. Вот твоя задача мне не очень понятна всё к тому чтобы отсортировать и без дублей что ли: вводишь данные, "Затем выбираю из нее данные данные по критерию", затем в другой раз старые удаляешь


Anatoly Podgoretsky   (2009-10-29 11:31:00) [31]

> kyn66  (29.10.2009 10:31:04)  [64]

Это к тому, что их недостаточно для быстрого решения простейшей задачи.


kyn66   (2009-10-29 10:31:00) [32]


Anatoly Podgoretsky ©   (29.10.09 10:16) [62]

> А что по твоему делает EmptyTable в рамках твоей задачи?


Пардон, действительно пропустил суть своего-же вопроса...


> Anatoly Podgoretsky ©   (29.10.09 10:17) [63]
> И также учитывая твои способности.


А это к чему?


Anatoly Podgoretsky   (2009-10-29 10:17:00) [33]

И также учитывая твои способности.


Anatoly Podgoretsky   (2009-10-29 10:16:00) [34]

> kyn66  (29.10.2009 09:30:00)  [60]

А что по твоему делает EmptyTable в рамках твоей задачи?


kyn66   (2009-10-29 10:05:00) [35]


> Inovet ©   (28.10.09 18:56) [53]
> Короче. Всю ветку не стал читать. ADS может оставлять файлы
> открытыми после закрытия Query для более быстрого открытия
> в следующий раз, не знаю как это с данной проблемой с очичткой
> таблицы соотносится. Попробую AdsCloseSQLStatement - закрывает
> все.


AdsCloseSQLStatement
Completely closes all files associated with any TAdsQuery instance.
Вроде заработало, однако нужно предварительно закрывать CpsQuery.Close. Тогда определение назначения не совсем понятно.


kyn66   (2009-10-29 09:30:00) [36]


> А чем "DELETE FROM Cps1tbl" не устраивает или у тебя DBF?
>  Потом под временные лучше временные и применять #Cps1t


Так здесь не удалять нужно. Сперва с одной таблицы(OborotTbl) идет разделенный отбор в две другие(SborTbl и Cps1Tbl) таблицы, данные одной из которых(Cps1) в последствии подвергаются  отбору по критерию CpsQuery.SQL.Add('SELECT DISTINCT RegKod,TovKod,TovCena FROM Cps1 ORDER BY RegKod')Вот такая технология.


kyn66   (2009-10-29 09:24:00) [37]


> turbouser ©   (28.10.09 18:30) [52]
> Точно EmptyTable закрывает таблицу? А если сделать


Похоже на закрытие силком :). Дело в том, что EmptyTable не начнет свою работу, пока таблица активна. Выдается ошибочное сообщение. Поэтому повторное закрытие совершеннот никчему.


turbouser   (2009-10-29 02:07:00) [38]


> Amoeba ©   (29.10.09 01:17) [57]
>
>


> Если


Amoeba   (2009-10-29 01:17:00) [39]


> turbouser ©   (29.10.09 00:01) [56]
>
>
> > Amoeba ©   (28.10.09 21:13) [55]
>
>
> > это абсолютно излишне
>
> :) не факт. компоненты разные бывают.

Если правильный наследник TDataSet, то факт.


turbouser   (2009-10-29 00:01:00) [40]


> Amoeba ©   (28.10.09 21:13) [55]


> это абсолютно излишне

:) не факт. компоненты разные бывают.


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

Наверх

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