Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.04.2010, 12:46
HTTH HTTH вне форума
Прохожий
 
Регистрация: 03.04.2010
Сообщения: 6
Репутация: 10
По умолчанию сравнение даты и выполнение действия

Здравствуйте. Пишу курсовую работу на Delphi и access. Преподавателей в нашей провинции нормальных нет. Языки программирования на самом примитивном уровне изучались. Над кодом можете посмеяться или поплакать((
БД-access

Задача такая. Нужно реализовать цикл проверки значений поля БД.
1. В столбце Return_b таблицы Резерв находится дата.
2. При совпадении даты поля Return_b с текущей датой, стрОки из таблицы удаляются.
3. При удалении строки из таблицы мы ищем по полю ISBN книгу в таблице Books и прибавляем в столбец Kolvo одну единицу(+1).

Пробовал реализовать, знаю что не правильно. Подскажите пожалуйста.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var b:integer;
c:string;
begin
while not Form1.DataSource1.DataSet.Eof do begin
if Form1.DataSource1.DataSet.FieldByName('Return_b').Value=datetostr(now()) then
begin
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('UPDATE Books SET [Kolvo] = ":b" WHERE ISBN = ":c"'); //изменяем совпадающие поля по ISBN
b:=Form1.DBGrid3.DataSource.DataSet.FieldByName('Kolvo').AsInteger; //присваиваем переменной значение уже имеющихся в наличии книг данного ISBN
Form1.ADOQuery1.Parameters.ParamByName('b').Value:=b+1; //прибавляем
Form1.ADOQuery2.Parameters.ParamByName('c').Value:=Form1.DBGrid1.DataSource.DataSet.FieldByName('ISBN').Value; // присваиваем "с" данные ISBN таблицы РЕЗЕРВА
Form1.ADOQuery1.Open; //выполняем запрос изменения записи
Form1.ADOQuery2.Delete; //удаляем книгу из таблицы резерва
Form1.DataSource1.DataSet.Next; //смотрим след поле
end;
end;
end;
вылезает ошибка Field 'Kolvo' not Found. Проверял всё тысячу раз, все номера ADOQuery, DBGrid и DataSource правильные. Пробовал здесь через DBGrid потому что при обращении через DataSource выдавало такую же ошибку...

Последний раз редактировалось HTTH, 03.04.2010 в 12:48.
Ответить с цитированием
  #2  
Старый 04.04.2010, 03:07
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от HTTH
2. При совпадении даты поля Return_b с текущей датой, стрОки из таблицы удаляются.
3. При удалении строки из таблицы мы ищем по полю ISBN книгу в таблице Books и прибавляем в столбец Kolvo одну единицу(+1).

В какой строке ошибка вылазит?
Если переводить ошибку, то звучит это так - "Поле kolvo не найдено"
Все операции которые ты хочешь делать в дельфях, можно выполнить и 2-мя запросами, а именно:
Код:
update books set Kolvo=Kolvo+1 where ISBN
  in (select isbn from [таблица в которой удаляем строки] 
      where return_b = date()) 

delete from [таблица в которой удаляем строки] where return_b = date()
Эти два запроса сделают все что ты хочешь сделать своим кодом, единственное. Тебе остается их только вызвать с помощью команды Exec
Ответить с цитированием
  #3  
Старый 04.04.2010, 11:32
HTTH HTTH вне форума
Прохожий
 
Регистрация: 03.04.2010
Сообщения: 6
Репутация: 10
По умолчанию

Аааагромное спасибо!!!! Нужно побольше изучать мне теории.

Последний раз редактировалось HTTH, 04.04.2010 в 14:08.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025