Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 10:18   #1
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию Выборка из БД

Доброго времени суток. Помогите пожалуйста. Выбираю данные из БД, но почему то выводит одни нули.
Вот код:
Код:
procedure SumHours2();
begin
  sum:=0;
  while not Form8.ADOQuery1.Eof do
  begin
    sum:=sum+Form8.ADOQuery1.FieldByName('NumberHours').AsInteger;
    Form8.ADOQuery1.Next;
  end;
 
end;
 
procedure TForm8.BitBtn1Click(Sender: TObject);
var
  i: Integer;
  j,k: Integer;
begin
StringGrid2.Cells[0,1]:='Январь';
StringGrid2.Cells[0,2]:='Февраль';
StringGrid2.Cells[0,3]:='Март';
StringGrid2.Cells[0,4]:='Апрель';
StringGrid2.Cells[0,5]:='Май';
StringGrid2.Cells[0,6]:='Июнь';
StringGrid2.Cells[0,7]:='Июль';
StringGrid2.Cells[0,8]:='Август';
StringGrid2.Cells[0,9]:='Сентябрь';
StringGrid2.Cells[0,10]:='Октябрь';
StringGrid2.Cells[0,11]:='Ноябрь';
StringGrid2.Cells[0,12]:='Декабрь';
Form2.ADOQuery3.First;  i:=1; k:=1;
while not Form2.ADOQuery3.Eof do
begin
  StringGrid2.Cells[i,0]:=Form2.ADOQuery3.FieldByName('NameGroup').AsString;
  ADOQuery1.SQL.Clear;
  for j := 1 to 12 do
  begin
    if j<10 then
    begin
      date1:='01.0'+inttostr(j)+'.'+ComboBox3.Text;
      date2:='31.0'+inttoStr(j)+'.'+combobox3.Text;
    end;
    if j>=10 then
    begin
      date1:='01.'+inttostr(j)+'.'+combobox3.Text;
      date2:='31.'+inttostr(j)+'.'+combobox3.Text;
    end;
    ADOQuery1.SQL.Add('SELECT NumberHours FROM Hours WHERE MONTH(DateSubject)='+IntToStr(j)
+' AND YEAR(DateSubject)='+QuotedStr(ComboBox3.Text)+' AND NameTeacher='+QuotedStr(ComboBox4.Text)
+' AND NameGroup='+QuotedStr(Form2.ADOQuery3.FieldByName('NameGroup').AsString));
    SumHours2;
    StringGrid2.Cells[k,j]:=IntToStr(sum);
    Memo1.Lines.Add(date1+' '+date2+' '+ComboBox4.Text+' '+Form2.ADOQuery3.FieldByName('NameGroup').AsString+' ');
  end;
  Form2.ADOQuery3.Next;
  inc(i);
  inc(k);
end;
    Label4.Caption:=date1;
    Label5.Caption:=date2;
    Label6.Caption:=ComboBox4.Text;
    Label7.Caption:=Form2.ADOQuery3.FieldByName('NameGroup').AsString;
end;

Последний раз редактировалось Stilet; 04.06.2014 в 10:46.
EgorKa1 вне форума Ответить с цитированием
Старый 04.06.2014, 10:50   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Код:
ADOQuery1.SQL.Add('SELECT NumberHours FROM Hours WHERE MONTH(DateSubject)='+IntToStr(j)+' AND YEAR(DateSubject)='+QuotedStr(ComboBox3.Text)+' AND NameTeacher='+QuotedStr(ComboBox4.Text)+' AND NameGroup='+QuotedStr(Form2.ADOQuery3.FieldByName('NameGroup').AsString));
такого делать не надо, делай так
Код:
ADOQuery1.SQL.Add('SELECT NumberHours FROM Hours WHERE MONTH(DateSubject)=:pmonth AND YEAR(DateSubject)=:pyear AND NameTeacher=:pnameteacher AND NameGroup=:pnamegroup');
ADOQuery1.parambyname('pmonth').datatype := ftinteger;
ADOQuery1.parambyname('pyear').datatype := ftinteger;
ADOQuery1.parambyname('pnameteacher').datatype := ftstring;
ADOQuery1.parambyname('pnamegroup').datatype := ftstring;
ADOQuery1.parambyname('pmonth').value:= j;
ADOQuery1.parambyname('pyear').value:= ComboBox3.Text;
ADOQuery1.parambyname('pnameteacher').value:= ComboBox4.Text;
ADOQuery1.parambyname('pnamegroup').value:= Form2.ADOQuery3.FieldByName('NameGroup').AsString;
вызывай ADOQuery1.SQL.Clear; перед ADOQuery1.SQL.Add, иначе после первого прохода цикла в query будет 2 селекта и выборки не будет

ну и собсно, где же открытие ADOQuery1? если бы начал дебажить, то увидел бы где проблема,
этот цикл будет проскакивать
Код:
while not Form8.ADOQuery1.Eof do
З.Ы. код писал по памяти
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 04.06.2014, 11:32   #3
EgorKa1
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 18
По умолчанию

Спасибо большое....Очень очень большое...
EgorKa1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка Влада92 Microsoft Office Excel 1 13.08.2013 13:48
Выборка выборка с таблицы с отношением многие-ко-многим 8alig8 БД в Delphi 2 24.06.2010 12:21
Выборка из БД Claster Помощь студентам 1 11.05.2010 23:01
Выборка из БД ИВАНьКа Общие вопросы C/C++ 4 21.08.2009 10:02
выборка из БД xvipx Microsoft Office Excel 13 30.01.2009 12:43