Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];

Вниз

Непонятки с запросом   Найти похожие ветки 

 
petvv   (2011-12-21 09:19) [0]

Есть код:


var
 i:Integer;
begin
 qKard.Close;
 qKard.SQL.Clear;
 qKard.SQL.Add("select KardID, FIO from Kard where AtpID="+IntToStr(
   ComboATP.ItemIndex+1));
 qKard.SQL.Text;
 qKard.Open;
 qKard.First;
 for i :=1  to qKard.RecordCount do
   begin
     qOtch111.Close;
     qOtch111.SQL.Clear;
     qOtch111.SQL.Add(
     "select LitFact, DTCheck, Marka, FIO from Statist, Fuel, Kard where " +
     "Statist.ITR=False and Statist.ATP=:QATP and Statist.DTCheck>=:QDatBeg " +
     "and Statist.DTCheck<=:QDatEnd and Statist.GSM=Fuel.ID and Statist.NKard=" +
     ":QNKard");
     qOtch111.SQL.Text;
     qOtch111.ParamByName("QATP").AsInteger:=ComboATP.ItemIndex+1;
     qOtch111.ParamByName("QDatBeg").AsDateTime:=DTBeg.Date;
     qOtch111.ParamByName("QDatEnd").AsDateTime:=DTEnd.Date;
     qOtch111.ParamByName("QNKard").AsInteger:=qKard.FieldByName("KardID").Value;
     qOtch111.Open;
     qOtch111.RecordCount;
     frxReport2.Variables["DatBeg"] := """" + DateTimeToStr(DTBeg.Date) + """";
     frxReport2.Variables["DatEnd"] := """" + DateTimeToStr(DTEnd.Date) + """";
     frxReport2.Variables["Firm"] := """" + ComboATP.Text + """";
     frxReport2.Variables["FIO"] := """" + qKard.FieldByName("FIO").AsString +"""";
//      frxReport2.PrepareReport(True);
//      frxReport2.Print;
     frxReport2.ShowReport(True);
     qKard.Next;
   end;


который юзает два запроса. Первый запрос выдёргивает из БД номера карт принадлежащие определённой конторе (в базе их всего две).
Далее в цикле по каждой карте выбираются транзакции (в базе оставил всего 2 транзакции, для двух разных карт)

по идее
во здесь qOtch111.RecordCount; =1 для каждого прохода.

но здесь qOtch111.RecordCount; получается =20

Мля откудова, в базе всего 2 записи oO


 
MBo ©   (2011-12-21 09:41) [1]

>qOtch111.RecordCount
А куда записывается результат получения свойства?


 
RWolf ©   (2011-12-21 09:49) [2]

а что удивительного — если перемножить три таблицы, ещё и не столько получится.


 
petvv   (2011-12-21 09:50) [3]


> а что удивительного — если перемножить три таблицы, ещё
> и не столько получится

Ты это к чему


 
Кщд   (2011-12-21 09:55) [4]

>petvv   (21.12.11 09:50) [3]
>Ты это к чему
это он к тому, что в таблице Kard - 10 записей)


 
RWolf ©   (2011-12-21 10:06) [5]

то, что ты делаешь в 16-й строке, называется прямое декартово произведение таблиц. Точнее, Statist и Fuel связаны по ключевому (?) полю, а Kard — нет, значит, если не учитывать ограничения на выборку, получаем набор из числа записей, равного произведению числа записей исходных наборов.


 
RWolf ©   (2011-12-21 10:08) [6]

в общем, предлагаю добавить условие  "and Statist.NKard=Kard.NKard" или что-то вроде.


 
Ega23 ©   (2011-12-21 10:35) [7]

1.  qKard.SQL.Text;  ЩИТО?
2. while not DataSet.Eof    вместо for.
3. qOtch111.SQL.Text; ЩИТО?
4. qOtch111.RecordCount;  ЩИТО?
5. Нахрена каждый раз инициализируется qOtch111.SQL.Text? Сделай это один раз перед циклом, внутри цикла меняй только значения параметров.
5. from Statist, Fuel, Kard    - ты Kard ни с кем не связал, у тебя произведение идёт.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1324408115
Драйвер мыши
2011-12-20 23:08
2012.04.15
Способы программного управления мышью и клавиатурой


15-1323447806
ReadOnly
2011-12-09 20:23
2012.04.15
Сюрпризы от предыдущих разработчиков


15-1323808202
Юрий
2011-12-14 00:30
2012.04.15
С днем рождения ! 14 декабря 2011 среда


6-1255266708
zoomod
2009-10-11 17:11
2012.04.15
Как проверить наличие tcp-ip соединения WinSock


2-1324558095
Gu
2011-12-22 16:48
2012.04.15
dfm





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский