• Виталий (22.11.11 00:02) [0]
    У меня есть программный код в VBA, мне нужно его перевести для Delphi 7. Программный код прилагается ниже. Либо помогите написать код который из БД в Delphi 7 будет отправлять письма через Microsoft Outlook.  За ранние спасибо.

    Private Sub Otpravit_Click()
    On Error GoTo Err_Otpravit_Click
    ' Отправка писем
    Dim prog As Outlook.Application  '
    Объект - программаOutlook
    Dim baza As Database ' Объект - база данных
    Dim tablica As Recordset '
    Таблица ТаблицаПисьма
    Dim i As Integer ' Счетчик цикла
    Dim portion As Integer '
    Счетчик порций
    Dim zapis As Integer ' Номер записи
    Dim pismo As MailItem '
    Объект - почтовое сообщение
    Dim dopfail As String ' Присоединяемый файл
    Dim Copies As Integer '
    Число копий письма
    Dim pauza As Integer ' Величина интервала ожидания
    Dim PauseTime, Start '
    Переменные для таймера
    Dim Konec As Boolean ' Конец таблицы
    Dim myNamespace As Outlook.NameSpace
    '
    Создание объектов для письма
    Set prog = New Outlook.Application
    Set myNamespace = prog.GetNamespace("MAPI")
    ' Начальные значения переменных
    dopfile = \" \"
    If Len(Trim(Me!Text9)) > 0 Then dopfail = Me!Text9
    dopfile = Trim(dopfile)
    pauza = Me!Interval
    Konec = False
    If pauza < 0 Then pauza = 1
    Copies = Me!Kopii
    If Copies < 0 Then Copies = 1
    '
    Подключение таблицы
    Set baza = CurrentDb ' Работаем с этой же БД
    Set tablica = baza.OpenRecordset(\"SELECT * FROM [ТаблицаАдреса] WHERE ([Да]=True);\")
    '
    Основной цикл
     Do While Me!Check34 And Not Konec
     Me.Refresh  ' Пересчет данных формы
       If tablica.RecordCount <> 0 Then '
    Таблица не должна быть пустой
       tablica.MoveLast ' Последняя запись
       tablica.MoveFirst '
    Первая запись
       zapis = 1
       ' Ищем новые записи
         Do While tablica!flag = 1 And zapis < tablica.RecordCount
         tablica.MoveNext '
    Выбор следующей записи
         zapis = zapis + 1
         Loop
         If tablica.RecordCount - zapis >= Copies Then  ' Определение количества адресов
         portion = Copies
         Else
         portion = tablica.RecordCount - zapis + 1
         End If
         '
    Формирование письма в формате Outlook
       Set pismo = prog.CreateItem(olMailItem) ' Создание объекта
       pismo.Subject = Me!Tema '
    Тема сообщения
       pismo.Body = Me!Tekst ' Текст сообщения
       If dopfail <> \"\" Then pismo.Attachments.Add dopfail '
    Дополнительный файл
           For i = 1 To portion ' Перебор очередной порции адресов
           If tablica!Да And Not Konec Then
             If tablica!flag <> 1 Then
             pismo.Recipients.Add tablica!Email '
    Еще один адрес
             tablica.Edit
             tablica!flag = 1 ' Адрес использован
             tablica.Update
             End If
           End If
           If zapis < tablica.RecordCount Then
           tablica.MoveNext '
    Выбор следующего адреса
           zapis = zapis + 1
           Else
           Konec = True
           End If
         Next
       Me!Obrab = zapis  ' Индикация номера записи в форме
      '
    pismo.Display ' Показ письма в окне. Для отладки
       pismo.Send '
    Отправка письма
       Me!Поле93 = "РАССЫЛКА"
       Me!Поле93.BackColor = RGB(0, 250, 0)
       End If
     ' Интервал ожидания
     PauseTime = pauza '
    Установка величины паузы
     Start = Timer    ' Текущее значение таймера
       Do While Timer < Start + PauseTime And Me!Check34 '
    Цикл ожидания
       DoEvents    ' Позволяется работать другим процессам
       Loop
     Loop
    Me!Поле93 = \"ОСТАНОВ\"
    Me!Поле93.BackColor = RGB(200, 200, 200)
    tablica.Close '
    Закрытие таблицы
    ' Обработка ошибки
    Exit_Otpravit_Click:
    prog.Quit
    Exit Sub
    Err_Otpravit_Click:
    MsgBox Err.Description '
    Сообщение об ошибке
    Resume Exit_Otpravit_Click
    End Sub

  • Германн © (22.11.11 00:54) [1]
    Либо на Городскую площадь, ли на помощь студентам.
Есть новые Нет новых   [134431   +10][b:0][p:0.003]