Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Напоминалка


Автор: Vic 23.8.2004, 15:51
У кого есть время и желание напрячь мозги - помогите, пожалуйста.
Есть таблица в Access. В ней есть поля IdКонтрагента и Дата следующего контакта. Мне надо, чтобы при наступлении даты из второго поля в определенное время, например, в 10:00, выскакивало сообщение, что надо позвонить контрагенту Х или, есть их несколько, то Х и Y. Проще говоря, надо создать напоминалку.
При этом надо чтобы была возможность после появления на экране сообщения либо полностью отключить их до следующей загрузки программы, либо чтобы опять она напомнила через определенное время.
Поскольку я не великий спец в VBA, будьте добры, опуститесь до моего уровня и напишите подробнее, если предложите не готовый код, а решение wink.gif

Автор: Akina 23.8.2004, 16:09
Если решать задачу на VBA - придется Держать ее загруженной.
Поищи такие шедулеры, держащие данные в формате Аксесса, и приспособь туда свою базу.

Автор: Vic 23.8.2004, 16:42
Что мне придется держать загруженной? Мне надо, чтобы при открытии моей БД появлялось при необходимости сообщение о наступлении даты. То есть, мне надо описание сообтветствующей процедуры, которая реагирует на загрузку БД. А что касается БД, то предполагается, что она и так юудет загружена весь день

Автор: Akina 23.8.2004, 17:58
Цитата
Мне надо, чтобы при открытии моей БД появлялось при необходимости сообщение о наступлении даты

В таком разе пишешь либо соотв. код в Form_Load открываемой при старте формы, либо в подпрограмму в каком-либо модуле и вызываешь ее из макроса по имени AutoExec.

Автор: Vic 24.8.2004, 10:59
То что пишется код для Form_Load я догадалась, спасибо. ПРоблема именно в том, что я не могу написать правильно код.

Автор: Akina 24.8.2004, 12:11
Что-нить типа:
Код
Sub Form_Load
Dim dbs as Database
Dim rst as Recordset
Dim tmp as string
Set dbs=CurrentDB
Set rst=dbs.Openrecordset "SELECT IDКонтрагент From Контрагенты Where ДатаСледКонтракта = Date(Now)"
If rst.Count > 0 Then
  with rst
  .movefirst
  while not .oef
     tmp=tmp & !IDКонтрагент & vbCR
  wend
  end with
  MsgBox "Позвонить контрагентам:" & vbCR & tmp
EndIf
End Sub

Автор: Vic 24.8.2004, 12:29
OK Спасибо. Я попробую. Вообще-то я уже решила, что создам запрос, который будет выводить контрагентов с текущей датой и именно этот запрос будет выполняться при загрузке БД. Спасибо за помощь. Ваш путь я тоже попробую.

Автор: Akina 24.8.2004, 12:49
Vic
Цитата
создам запрос, который будет выводить контрагентов с текущей датой и именно этот запрос будет выполняться при загрузке БД

Тогда на основе этого запроса создай отчет и установи у него реакцию самонеоткрывания на пустой набор данных. Получится что он будет выводиться только если отобран хотя бы один контрагент. Впрочем что запрос, что отчет придется выводить макросом - как я уже говорил ранее, он должен иметь имя AutoExec.

Автор: Vic 24.8.2004, 13:40
А почему именно AutoExec?

Автор: Akina 24.8.2004, 13:45
Vic
Так... марш читать хелп к Аксессу.

Автор: Vic 24.8.2004, 13:52
А почему именно AutoExec?
Добавлено @ 13:53
Сорри... слона-то я и не заметил

Автор: Vic 24.8.2004, 14:07
Так и не поняла почему Autoexec. В общем, у меня при загрузке БД загружается кнопочная форма, которая не закрывается пока БД открыта. И при загурзки этой формы срабатывает макрос, который будет открывать этот запрос. ЧТо касается открытия через полчаса, то тут я еще подумаю, хотя тут уже проще. Что касается справки Access? то там по поводу Autoexec ф ничего не нашла. Спасибо. Меня обсуждение обычно наводит на мысль smile.gif

Автор: boevik 24.8.2004, 14:35
Цитата
Что касается справки Access? то там по поводу Autoexec ф ничего не нашла

Как не нашла, посмотри тему AutoExec macros.

Автор: Akina 24.8.2004, 17:08
Цитата
Как не нашла, посмотри тему AutoExec macros.

Или в русском варианте - "Настройка параметров открытия файла Microsoft Access"

Автор: Vic 25.8.2004, 09:12
Да, спасибо. Именно эту справку я и нашла

Автор: Akina 25.8.2004, 10:31
Vic
Да, учти - если ты сделаешь макрос AutoExec, то будет стартовать именно он, а кнопчатая форма - нет. Поэтому чтобы кнопочная форма открывалась - ты ее должна открывать тем же макросом после отчета о контрагентах.

Автор: iraklion 21.6.2005, 14:16
Выше приведенный код не работает. как миниму содержт ошибки.. Может кто ее исправит?
Или есть другая возможность выстроит как-нить напоминалку. у меня еще проблемка - напоминалка должна сверяться с датой в подформе (субформе). попробывал сделать через запрос - а он выдает как раз запрос на дату а не фильтрует сама по себе..


Может кто поможет? перерыл весь интернет - ничего не нашел подходящего под напоминалку чтобы работало.. неужели так сложно в Аccess сделать ее?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)