Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SendObject срабатывает только один раз... / 25 сообщений из 37, страница 1 из 2
28.10.2003, 17:13
    #32307855
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
В общем проблема описана в сабже.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    While Not RS.EOF
        Mes =  ""
        Hum = RS!Emp
        Do While Not RS.EOF
            If Hum <> RS!Emp Then Exit Do
            Mes = Mes & RS!Day & " :  "
            End If
            RS.MoveNext
        Loop
        Mes = Mes & Chr(13 ) & Chr( 10 ) & "Некий текст "
        DoCmd.SendObject , , , " <Email> ", , , " Subj", Mes, False


Ошибок вроде нет. Строчка ...SendObject... исправно выполняется. Но реально отсылается тока 1 письмо...
...
Рейтинг: 0 / 0
28.10.2003, 17:19
    #32307874
мимоходом
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
На первый взгляд посылаешь письмо выйдя из цикла
...
Рейтинг: 0 / 0
28.10.2003, 17:19
    #32307875
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
А у тебя на каждый record должно по письму отправляться?

тогда вставь во внутренний цикл этот сендобджект
...
Рейтинг: 0 / 0
28.10.2003, 17:19
    #32307876
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
такая же херня...
я конэшно не специалист... а чо ты хотел? как написал так и посылаеться...
со сведениями последней записи...
если хошь каждую запись ставь во внутренний цикл

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 17:20
    #32307879
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Ж))

и каждое новое письмо будет все больше и больше
...
Рейтинг: 0 / 0
28.10.2003, 17:21
    #32307880
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
> со сведениями последней записи...
не, Mes накапливается кажись
...
Рейтинг: 0 / 0
28.10.2003, 17:21
    #32307881
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
мимоходом много не напишешь :)

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 17:32
    #32307902
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Пардон муа...
Разумеется код таков
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    While Not RS.EOF
        Mes =  ""
        Hum = RS!Emp
        Do While Not RS.EOF
            If Hum <> RS!Emp Then Exit Do
            Mes = Mes & RS!Day & " :  "
            End If
            RS.MoveNext
        Loop
        Mes = Mes & Chr(13 ) & Chr( 10 ) & "Некий текст "
        DoCmd.SendObject , , , " <Email> ", , , " Subj", Mes, False
    Wend

Во внутреннем цикле идет накопление сообщения, при определенном условии (смены данных в одном столбце) происходит сброс и все продолжается по новой пока не ЕОФ
...
Рейтинг: 0 / 0
28.10.2003, 17:39
    #32307909
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Для начала просто поставь брейкпоийнт на строке: DoCmd.SendObject и посмотри скоко раз у тебя реально вызывается эта строка, потому как дело скорей всего в этом, а дальше уже будем решать что там и почему
...
Рейтинг: 0 / 0
28.10.2003, 17:41
    #32307912
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Объясни, почему у тебя двойной вложенный цикл по одному и тому же рекордсету. Ты во внутреннем цикле доходишь до последней записи - и баста. Чего ты еще хочешь при повторном прохождении?
...
Рейтинг: 0 / 0
28.10.2003, 17:41
    #32307913
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Я в первом посте об этом и написал: реально она вызывается нужное количесво раз, но посылает тока первое письмо...
...
Рейтинг: 0 / 0
28.10.2003, 17:44
    #32307916
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Знаешь что меня смущает.
в первом цикле ты ставишь условие пока_не_достигнем_конца_набора_записей, и в нём не двигаешься по записям вооще ни где...
во вложенном цикле ты ставишь тоже условие по тому же набору записей, но уже двигаешься по нему(заметь нигде нет досрочного выхода из этого цикла)... следовательно по выходу из вложеного цикла ты находишься на последней записи и внешний цикл тоже оканчивает свою работу так как и у него условие выполнилось... => на строчку с DoCmd.SendObject ты попадаешь всего один раз, что и т.д.

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 17:45
    #32307920
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
В таблице 3 колонки: одна содержит имя чела, вторая некоторый ид, третья данные по иду. Я собираю в ожну строку все даные по одному челу. Так как рекордсет упорядочен по челам, то при "смене" чела я посылаю сформированную строку и начинаю формировать новую для другого чела.
...
Рейтинг: 0 / 0
28.10.2003, 17:46
    #32307926
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
вообщем повторился...

>реально она вызывается нужное количесво раз, но посылает тока первое письмо...

поясни... ты попадаешь на строчку DoCmd.SendObject , , , "<Email>", , , "Subj", Mes, False более 1го раза?

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 17:48
    #32307932
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Sfagnum
ИМенно

А выход из цикла - пожалуйста: exit do!
...
Рейтинг: 0 / 0
28.10.2003, 17:49
    #32307936
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Проверка номер 2:

Поставь подряд 3 строки DoCmd.SendObject , , , "<Email>", , , "Subj", Mes, False и посмотри скоко писем пошлется. ;)

где-то ты все-таки напутал
...
Рейтинг: 0 / 0
28.10.2003, 17:52
    #32307944
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Я то конечно склоняюсь больше к мнению, что строка просто не вызывается больше одного раз. Например сравнение Hum <> RS!Emp запросто может неправльно сравнивать (сам на такое натыкался) когда RS!Emp вернет тебе Null, все-таки лучше в Nz такие вещи заключать
...
Рейтинг: 0 / 0
28.10.2003, 17:53
    #32307948
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Извенини не заметил
попробуй DoEvents после DoCmd.SendObject , , , "<Email>", , , "Subj", Mes, False

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 17:56
    #32307954
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Нулевые значения исключены.
Breakpointom проверил. На sendObject реально пападает чаще одного раза.

Как вы предложили проверил: из трех строчек "выполняются" все, но посылается одно письмо...
...
Рейтинг: 0 / 0
28.10.2003, 17:59
    #32307959
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
DoEvents пробовал, не помогает
...
Рейтинг: 0 / 0
28.10.2003, 18:02
    #32307966
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Думаю, для чистоты эксперимента надо добавить вместо DoEvents паузу, секунда так на 5-10, все таки это посылка через Outlook идет и поэтому такие тормоза, а DoEvents только для Access будет действовать, а не для Outllok

Ща код функции паузы приложу
...
Рейтинг: 0 / 0
28.10.2003, 18:10
    #32307982
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
В модуль:
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

Public Sub pPause(iTimePause As Integer)
' делает паузу
'[iTimePause] - время паузы в секундах.

Dim lTime As Long

lTime = timeGetTime
Do
DoEvents
Loop Until timeGetTime - lTime >= iTimePause * 1000

End Sub

Всунь эту pPause(10) после DoCmd.SendObject - поглядим как она себя будет вести...
...
Рейтинг: 0 / 0
28.10.2003, 18:23
    #32308003
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Те же яйца, только в профиль...

Видимо проблема в другом...
Тока вот в чем...
...
Рейтинг: 0 / 0
28.10.2003, 18:24
    #32308004
Sfagnum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
ну ещё раз пальцем в небо вынеси SendObject в отдельную процедуру

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
28.10.2003, 18:29
    #32308008
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SendObject срабатывает только один раз...
Да, идея недурна.

У меня были похожие глюки с Winsock, работал хорошо из разных процедур
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SendObject срабатывает только один раз... / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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