powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / И снова это MessageBox!
27 сообщений из 27, показаны все 2 страниц
И снова это MessageBox!
    #32196447
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня существует таблица, где хранятся данные о том, кто и когда брал книгу. Так вот, я сделала модуль, который выдает сообщение о том, что существуют книги, которые не были возвращены в течение 30 дней и о что ставим отметку об их утере. Так вот мне надо, что бы при нажатии на кнопку ОК на этом сообщении вылазила форма, которая выводит мне эти книги. Эта форма у меня уже есть. Я только не знаю, как связать сообщение с этой формой.

Вот этот модуль
Public Function StartProc1()
Dim lRs As DAO.Recordset
Dim sSQL As String
sSQL = "SELECT ReaderCard.idZapis, ReaderCard.invBookNum, ReaderCard.idReader, ReaderCard.dateGiveBook, ReaderCard.BookLost FROM ReaderCard WHERE (Date()-dateGiveBook)>30;"
Set lRs = CurrentDb.OpenRecordset(sSQL)
If Abs(DateDiff("d", Now, lRs("dateGiveBook").Value)) > 30 Then
MsgBox "Книга не возвращена вовремя! Делаем отметку об утере"
End If

End Function

Здесь условие, которое выбирает книги, которые не вернулись за 30 дней. А мне здесь надо еще поставить условие, что в поле BookLost (т.е. книга утеряна) нет отметки.
Т.е. если есть невозвращенные книги и они не отмечены как потерянные, то выводить сообщение об этих книгах и вызывать форму. Если же книга не возвращена и отмечена, то никаких сообщений не надо. Помогите, пожалуйста....
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196460
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после MsgBox "Книга не возвращена вовремя! Делаем отметку об утере" вставляем docmd.OpenForm "FormName"
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196463
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сработало! Спасибо. А с условием что делать?
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196491
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подход не правильный... ПРИНЦИПИАЛЬНО неправельный... концептуально... но, я молчу... //мысли в слух...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196500
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Нуф-нуф ты на вопрос посмотри, ей же для учёбы:)
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196503
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а-а-а, что значит подход неправильный???
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196521
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Здесь условие, которое выбирает книги, которые не вернулись за 30 дней. А мне здесь надо еще поставить условие, что в поле BookLost (т.е. книга утеряна) нет отметки .
Т.е. если есть невозвращенные книги и они не отмечены как потерянные, то выводить сообщение об этих книгах и вызывать форму. Если же книга не возвращена и отмечена, то никаких сообщений не надо . Помогите, пожалуйста....
Во-первых, в запросе надо изменить ВЕР:
Код: plaintext
WHERE ((Date()-dateGiveBook)> 30  AND (BookLost)=False

Во-вторых, сия конструкция возвернет ВСЕ записи (книги), которые не возвращены в течении 30 дней и не утеряны, таким образом, нафик в If проверять еще раз это условие, тем более проверять только в ПЕРВОЙ возвернутой строке, когда их может вернуться 10?
В-третьих, желательно (хотя вообщем-то не обязательно) сделать группировку в запросе;
В-червертых, вместо того, что наваяно в If cltkf... тьфу... сделать:
Код: plaintext
If lRs.RecordCount >  0  Then

Есть еще в-5 и в-6, но в принципе и этого достаточно...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196523
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуем!!!
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196742
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего, не получается! Все равно этот модуль, мне выдает все книги, которые были выданы более, чем 30 дней назад. И даже если, ставишь отметку о том, что она утеряна, он все равно говорит, что есть такие книги, и выдает Форму с этими книгами (причем все отметки на месте). Что делать????
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196750
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код в студию, пожалста. И еще. Уверена, что в таблице дата хранится в формате "Дата/Время" а отметка хранится в логическом формате и если книга утеряна, то отметка = True? //пока просмотрит старый код и возможные нюансы...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196788
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да! Я уверена: поле 'dateGiveBook' у меня типа дата/время и поле 'BookLost' логическое!
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196793
amel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши запрос через UNION!
---------------------------
SELECT ReaderCard.idZapis, ReaderCard.invBookNum, ReaderCard.idReader, ReaderCard.dateGiveBook, ReaderCard.BookLost FROM ReaderCard WHERE (Date()-dateGiveBook)>30
UNION ReaderCard.idZapis, ReaderCard.invBookNum, ReaderCard.idReader, ReaderCard.dateGiveBook, ReaderCard.BookLost FROM ReaderCard WHERE (BookLost)=False
---------------------------
1) В первом будет выбирать все записи, которые не соответствует по дате
2) Во втором будет выбирать все записи, которые соответствует условию BookLost
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196797
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amel, а ты будешь сопровождать девушку далее с таким запросиком? :)
Гала, млин... Код давай!!!
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196816
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нуф-нуф, какой код? Я немного исправила ситуацию. Т.е. сообщение все еще вылазит, но выдает форму, в которой уже нет книг, которые отмечены, что они утеряны. Надо сделать так, чтобы сначала проверялись 2 условия:
1. (Date()-dateGiveBook)>30
2. (BookLost)=False
а потом уже решалось, выдавать сообщение или нет. Если эти условия выполняются, то сообщение выдавать, а если нет, то не надо, Вот как выглядит мой модуль, который отвечает за это сообщение

Public Function StartProc1()
Dim lRs As DAO.Recordset
Dim sSQL As String
sSQL = "SELECT ReaderCard.idZapis, ReaderCard.invBookNum, ReaderCard.idReader, ReaderCard.dateGiveBook, ReaderCard.BookLost FROM ReaderCard WHERE (Date()-dateGiveBook)>30;"
Set lRs = CurrentDb.OpenRecordset(sSQL)
If Abs(DateDiff("d", Now, lRs("dateGiveBook").Value)) > 30 And (BookLost) = False Then
MsgBox "Книга не возвращена вовремя! Делаем отметку об утере"
DoCmd.OpenForm "BookLost"
End If

End Function
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196822
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мил мой человечек... Ты ну абсолютно не вняла моим распинаниям от "Вчера 17:46".
Сначало объясню, почему не работает твой код:
Твой запрос возвращает все записи, в которых просрочена дата выдачи книги (не зависимо от того утеряна она или нет), а ты в твоем "If Abs(DateDiff("d", Now, lRs("dateGiveBook").Value)) > 30 And (BookLost) = False Then" проверяешь ТОЛЬКО ПЕРВУЮ СТРОКУ, которая может быть как отмеченой, что пропала, так и не отмеченой, что пропала, при этом твоему сообщению глубоко пофик, есть ли там вторая, третья и т.п. строки, в которых книги отмечены, что они утеряны. Работать так не будет!
Вот твой же код, но переработанный. Он не тестировался, поэтому может что и не так, но ты ОБЯЗАТЕЛЬНО ПОПРОБУЙ СДЕЛАТЬ ТАК, прежде чем говорить что "Нуф дурак, кто-нибудь помогите пожалуйста" :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function StartProc1() 
Dim lRs As DAO.Recordset 
Dim sSQL As String 
sSQL =  "SELECT ReaderCard.idZapis, ReaderCard.invBookNum, ReaderCard.idReader, ReaderCard.dateGiveBook, ReaderCard.BookLost FROM ReaderCard WHERE ((Date()-dateGiveBook)>30  AND (BookLost) = False);" 
Set lRs = CurrentDb.OpenRecordset(sSQL) 
If lRs.RecordCount >  0  Then
MsgBox  "Книга не возвращена вовремя! Делаем отметку об утере"  
DoCmd.OpenForm  "BookLost"  
End If 
End Function
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196824
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не говорила, что Нуф-Нуф дурак... просто я видимо, не совсем тебя поняла... Ну я попробую этот вариант
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196829
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СРАБОТАЛО! Спасибо большое!!!! Нуф-нуф - ты просто умничка :))
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196873
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста... Тока я не умничка, а всего лишь молодечек... Если бы был умничкой, то посоветовал бы еще и набор записей закрыть, и переменную уничтожить :)
Код: plaintext
1.
2.
3.
4.
5.
6.
...
MsgBox  "Книга не возвращена вовремя! Делаем отметку об утере"  
DoCmd.OpenForm  "BookLost"  
End If 
lRs.close
set lRs = nothing
End Function

Еще раз удачи...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196886
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да? А зачем?
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32196963
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хороший вопрос :) В смысле правельный. Зачем нафик закрывать локальные переменные, если они при выходе из области видимости и так (сами по себе) должны уничтожаться... Вобщем это надо делать, потомучто: будет высвобождаться память, будет меньше глюков и вообще так надо делать (хороший стиль программирования того требует). Да, и еще... Хоть все и так работает, но можно из написанного нами совместно кода повыкидывать из запроса ненужные поля. Вообще-то там ни одно поле нам не нужно (мы ведь ничего из полученного набора записей не читаем, а просто смотрим сколько вернулось записей), но одно все же оставить надо... Сделай примерно так:

sSQL = "SELECT idZapis FROM ReaderCard WHERE ((Date()-dateGiveBook)>30 AND (BookLost) = False);"

Это просто потому, что выполняться будет несколько быстрее и так логичней. Хотя еще логичней сделать группировку в запросе, но луче не надо, а то заболеем "ползучим улучшивизмом" и дипломная даже к следующему лету готова не будет :) //типа, нет пределов совершенству...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197274
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох! Мне сейчас не совершенство нужно, а просто сделать эту чертову базу!!! она меня уже достала.... лето скоро кончится, а я... :(( Так и буду над ней сидеть....
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197285
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и буду над ней сидеть....
Да радуйся ты. Некоторые над базами седеют.
А что до лета - у некоторых (типа москвы) только зима закончилась. Так что тоже радуйся.
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197430
Gala
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у нас уже лето было целую неделю, сейчас опять его ждем!
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197722
Proector
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После строки :msgbox напиши OpenForm "имя формы"
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197793
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proector, тебе тоже эта девушка понравилась? //шепотом: у нее голубые глазки...
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197795
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Нуф:
Просто тылы подоспели :-)
...
Рейтинг: 0 / 0
И снова это MessageBox!
    #32197812
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для Nick987
А! Типа свои :) А я думал просто разговор пытается звести, типа "А который щаз чаз?" :)
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / И снова это MessageBox!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]