Главная страница
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.043 c
2-1142520097
Fenix
2006-03-16 17:41
2006.04.02
Динамически создать ListView


2-1142862337
Alex7
2006-03-20 16:45
2006.04.02
Операция :=


3-1139400405
Ega23
2006-02-08 15:06
2006.04.02
Как лучше всего пинговать сервер?


15-1142006670
Express
2006-03-10 19:04
2006.04.02
сколько строчек программного кода написано во всем проекте????


15-1142244055
Nic
2006-03-13 13:00
2006.04.02
Что думаете о дизане компашки?