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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2008, 12:44   #41
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ ВСЕМ!!!

Алгоритм учёта книг вроде бы сделан (с помощью форумчан, с горем пополам и написан на ужасном абанцком коде), осталось запросики сделать... )))
Если что, я опять к вам с вопросами...

Ещё я косячок нашёл... Когда открываешь EditForm в режиме добавления "Реальной даты возврата" указатель всё время хранит данные на последнюю запись... Даже если выбираешь в гриде всё равно эффект один... Теперь как это исправить подскажите...

Для перехода на нужную книгу (при возврате) действует, а для кнопки с реальной датой нет...

Код:
procedure TDataModule2.DistribAfterScroll(DataSet: TDataSet);
begin
DataModule2.Readers.Locate('ReaderID',DistribReaderID.AsString,[]);
DataModule2.Book.Locate('BookID',DistribBookID.AsString,[]);
end;

Последний раз редактировалось mihali4; 13.02.2009 в 23:36. Причина: Объединение постов
Arkuz вне форума Ответить с цитированием
Старый 27.10.2008, 12:56   #42
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Ещё я косячок нашёл... Когда открываешь EditForm в режиме добавления "Реальной даты возврата" указатель всё время хранит данные на последнюю запись... Для перехода на нужную книгу (при возврате) действует, а для кнопки с реальной датой нет...
Что это за "Когда открываешь EditForm в режиме добавления "Реальной даты возврата""?
EditForm не должна открываться при возврате!
Я ж вам привел полный код обработчика нажатия кнопки возврата (там, где про бред сивой кобылы)!

Последний раз редактировалось mihali4; 27.10.2008 в 12:58.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2008, 20:00   #43
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Я что-то не совсем понял...
Код:
DataModule2.Distrib.Edit;
DataModule2.DistribDateOfReal.Value:=Now;
DataModule2.Distrib.Post; 
DataModule2.Book.Edit;
DataModule2.BookDistBook.Value:=DataModule2.BookDistBook.Value+1;
DataModule2.Book.Post;
Это будет дата реальная в реальный дэйттаймпикер добавляться при создании новой выдачи.
А мне пригла идея. Может сделать так... Что при каждом запуске программы будет проходить цикл, который во все картежи в атрибут реальной даты будет писать реальную дату... Как вы думаете? Мне кажется неплохой вариант...
Arkuz вне форума Ответить с цитированием
Старый 27.10.2008, 20:35   #44
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это где там хоть слово про дэйттаймпикер реальной даты??? На хрена он нужен, если мы текущую дату и без него знаем??? Выкиньте его к едрене фене!
Цитата:
Что при каждом запуске программы будет проходить цикл, который во все картежи в атрибут реальной даты будет писать реальную дату...
Ага... Сегодня запишет, что все возвраты были сделаны сегодня, завтра перепишет и все возвраты будут помечены завтрашним числом...
По-моему, вы здорово переутомились. Сходите, пивка возьмите, что ли...
Код с комментами:
Код:
//переводим в режим редактирования
DataModule2.Distrib.Edit;
//проставляем сегодняшнюю дату как дату возврата (а как же иначе, он же сегодня пришел 
и вот - стоит перед нами, хочет вернуть книгу. Причем СЕГОДНЯ, а не вчера и не завтра!
DataModule2.DistribDateOfReal.Value:=Now;
//закрепляем результат
DataModule2.Distrib.Post;
//переводим в режим редактирования
DataModule2.Book.Edit;
//записываем увеличенное число экземпляров, доступных к выдаче (по-хорошему тут не 1
должна быть, а то количество экземпляров этой книги, которое он вернул
DataModule2.BookDistBook.Value:=DataModule2.BookDistBook.Value+1;
//закрепляем результат
DataModule2.Book.Post;
Не помню, писал или нет...
Таблица DISTRIB должна иметь фильтр DateOfReal=null, чтобы отображались только
должники, за которыми числятся невозвращенные книги.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2008, 20:50   #45
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Да вы правы я устал...
И до меня только дошло, что мне нужно хранить все данные о взятиях книги и возвратах... и удалять никого не нужно...
Короче буду делать дальше... Спасибо... Очень помогли...

Это снова я )))
На сей раз нужна помощь с запросом. Хочу сделать так. Когда набираешь в эдите текст, чтобы в гриде оставались те фамилии шаблон которых введён в эдите.
Ну т.е. Edit1.Text+'%' Вот только как это всё дело правильно в запрос вписать?

SELECT * FROM Books WHERE Author LIKE {здесь нужно указать эдит}

mihali4, вы мне говорили, что у меня в EditForm добавление сразу происходит в таблицу... Да это так, а как сделать, чтобы добавилась запись после нажатия на кнопку сохранить?

Как один из вариантов(к которому я сам пришёл) можно ли сделать так:
1.Из всех компонентов заносить данные в переменные
2.Из переменных в поля таблицы
3.Постить

Такой вариант пойдёт?

И следующий элемент... (подскажите как реализовать)

Как осуществить историю выдачи и сдачи всех книг?
Ведь когда книгу сдают этот картеж долен больше не работать... Ну т.е. его нельзя больше выделить, нельзя его использовать. Он остаётся только для использования в запросах... Как это можно реализовать?
Предложите какой-нибудь вариант...

Последний раз редактировалось mihali4; 13.02.2009 в 23:40. Причина: Объединение постов
Arkuz вне форума Ответить с цитированием
Старый 29.10.2008, 19:33   #46
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так, я только что приехал...
По порядку:
Цитата:
На сей раз нужна помощь с запросом. Хочу сделать так. Когда набираешь в эдите текст, чтобы в гриде оставались те фамилии шаблон которых введён в эдите.
Ну т.е. Edit1.Text+'%' Вот только как это всё дело правильно в запрос вписать?
SELECT * FROM Books WHERE Author LIKE {здесь нужно указать эдит}
'SELECT * FROM Books WHERE Author LIKE ('+QuotedStr(Edit1.Text)+')'
Цитата:
Как один из вариантов(к которому я сам пришёл) можно ли сделать так:
1.Из всех компонентов заносить данные в переменные
2.Из переменных в поля таблицы
3.Постить
Такой вариант пойдёт?
Именно такой, но... Какие переменные?! А что, Edit.Text не переменная???
1.Из всех компонентов заносить данные в поля таблицы
2.Постить
Цитата:
Как осуществить историю выдачи и сдачи всех книг?
Предложите какой-нибудь вариант...
DIstrib.Filter:='';
mihali4 вне форума Ответить с цитированием
Старый 29.10.2008, 19:52   #47
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Я за вами заскучал....
Думаю куда это mihali4 запропостился???
Аж сил прибавилось... Спасибо за ответ...

Цитата:
'SELECT * FROM Books WHERE Author LIKE ('+QuotedStr(Edit1.Text)+')'
А как в него добавить ещё '%' - любое кол-во любых символов?

Последний раз редактировалось Arkuz; 29.10.2008 в 19:56.
Arkuz вне форума Ответить с цитированием
Старый 29.10.2008, 20:28   #48
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
А как в него добавить ещё '%' - любое кол-во любых символов?
'SELECT * FROM Books WHERE Author LIKE (QuotedStr('%'+Edit1.Text)+')'
'SELECT * FROM Books WHERE Author LIKE ('+QuotedStr(Edit1.Text+'%')+')'
Учитесь пользоваться литературой.
Цитата:
Предикат LIKE используется только с символьными данными. Он проверяет, соответствует ли данное символьное значение строке с указанной маской. В качестве маски используются все разрешенные символы (с учетом верхнего и нижнего регистров), а также специальные символы:
% - замещает любое количество символов (в том числе и 0),
_ - замещает только один символ.
mihali4 вне форума Ответить с цитированием
Старый 29.10.2008, 23:40   #49
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Учитесь пользоваться литературой.
Я пробовал сделать свой запрос обычный... Как в библии делфи написано... Так среда ругалась постоянно, что неверный синтаксис в запросе...

Брал даже оттуда запрос полностью, всё равно ошибку выдавало...

И вот ещё вопрос... Когда заполняю грид данными и нажимаю стрелочку вниз, и если не заполнено поле, которое должно быть НЕ пустым срабатывает исключение. Какое здесь событие происходит? Никак понять не могу... Получается, что после нажатия стрелки вниз или вверх, таблица пытается пропоститься и ошибка...

Если срабатывает OnPostError, то как там прописать ShowMessage

Последний раз редактировалось mihali4; 13.02.2009 в 23:43. Причина: Объединение постов
Arkuz вне форума Ответить с цитированием
Старый 30.10.2008, 02:22   #50
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Я вообще всегда ставлю грид в ReadOnly. Тогда таких казусов не возникает. Грид - только для отображения, все изменения должны идти другими путями (а мы с вами так и сделали).
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
библиотека Free Internet Titan123 Свободное общение 7 20.08.2008 15:19
Библиотека для Delphi Irat Помощь студентам 2 12.02.2008 20:13
Моя библиотека mochaliviy Свободное общение 3 11.01.2008 13:23
библиотека TK и Ruby kpp2 Ruby 5 22.12.2007 02:02
Стандартная библиотека... Sota Общие вопросы C/C++ 3 17.07.2007 19:18