Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.041 c
11-1123695011
raskin
2005-08-10 21:30
2006.04.02
KOL - 2.10 - KeyPreview


15-1142157619
perpetum
2006-03-12 13:00
2006.04.02
Графика в с#


1-1141210945
eger
2006-03-01 14:02
2006.04.02
Утечка памяти


2-1142593667
Fenix
2006-03-17 14:07
2006.04.02
Разбиение рисунка на части.


2-1142448874
TimScorp
2006-03-15 21:54
2006.04.02
ListBox