Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизНе срабатывает позиционирование в таблице !!! Найти похожие ветки
← →
kyn66 © (2006-02-09 10:56) [0]Уважаемые мастера,работаю с базой MSSql. Есть две таблицы (Tab и ListTab), вторая таблица по ключу зависимая от первой через MasterSource. Вот кусок кода:
.....
Tab.First;
while not Tab.Eof do
begin
ListTab.First;
if (ListTab.RecordCount <> 0) and ListTab.Locate("UslKod", UslTblKod.Value, []) then
begin
K1 := K1 + ListTab.FieldByName("Kol1").Value;
K2 := K2 + ListTab.FieldByName("Kol2").Value;
K3 := K3 + ListTab.FieldByName("Kol3").Value;
K4 := K4 + ListTab.FieldByName("Kol4").Value;
S1 := S1 + ListTab.FieldByName("Sum1").Value;
S2 := S2 + ListTab.FieldByName("Sum2").Value;
end;
Tab.Next;
end;
Проблема в том, что подсчет K1..S2 выполняется, якобы правильно срабатывает Locate, однако в действительности позиционирование не выполняется, таблица ListTab остается на первойзаписи и ессно данные считываются не верные. В чем дело? Locate не работает?
← →
Sergey13 © (2006-02-09 11:02) [1]И зачем в названии сервера SQL поставили? Нафик он не нужен. 8-)
← →
stone © (2006-02-09 11:07) [2]
> UslTblKod.Value
Это что такое? Мне так кажется, что ты постоянно одну и ту же запись ищешь...
← →
paul_k © (2006-02-09 11:24) [3]Настоятельно рекомендую воспользоватся для вычислений запросом вида
select sum(kol1),.... from Table where UslKod = :UslTblKod.Value
на что, собственно, и намекает
> [1] Sergey13 © (09.02.06 11:02)
для этого читать AdoDataSet, обратив внимание на CommandText и Parametrs
в хелпе Дельфи и про агрегатные функции (sum, avg,...) в хелпе МсСкл (точнее в хелпе к Квери Аналайзеру.)
← →
kyn66 © (2006-02-09 11:26) [4]UslTblKod.Value это значение таблицы, которая тоже проходит в цикле, я ее просто не описывал. Это значение меняется.
← →
vovnuke © (2006-02-09 11:31) [5]подцепи обе таблички, да хоть к DBGrid, и посмотри, есть ли там вообще значения.
← →
paul_k © (2006-02-09 11:32) [6]что же происходит у тебя.
перешли к первой записи в TAB
1.Перешли к первой записи в ListTab
проверили что в ListTab есть записи, проверили что есть запись с UslKod=UslTblKod.Value и переходим к ней
суммируем эту строку
смещаемся в TAB на одну строку
переходим к 1
кауова настроенная сруктура данных? Таb и ListTab связаны как master-detile?
← →
paul_k © (2006-02-09 11:33) [7]> [4] kyn66 © (09.02.06 11:26)
Все-таки напиши один запрос. Будет намного понятнее и быстрее
← →
kyn66 © (2006-02-09 14:29) [8]Вся беда из-за того, что таблицы были связаны через MasterSource. Пришлось делать через SQL-запросы, это и помогло.
← →
paul_k © (2006-02-09 14:43) [9]> [8] kyn66 © (09.02.06 14:29)
> Пришлось делать через SQL-запросы,
а почему не в один запрос?
← →
Виталий Панасенко (2006-02-09 16:11) [10]select Table1.UslKod, sum(Table1.kol1),.... from Table1, Table2 where Table1.UslKod = Table2.UslTblKod
group by 1
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.039 c