У меня есть этот код, который работает ... Я прочитал из базы данных MS SQL несколько строк из таблицы, а затем отправлю электронное письмо для каждой строки.lotuscript: некоторые вопросы о подключении к SQL DB
Я собираюсь добавить поле «вложения» в базу данных SQL, и я хотел бы добавить вложение в конце своего тела.
У меня есть два вопроса: 1) какой тип данных следует использовать на MS SQL? (Возможно, двоичное поле) и 2) если у кого-то есть какой-то пример кода, я бы очень признателен.
Бонусный вопрос: в более продвинутой версии этого сценария я сначала запускаю все мои результаты из моего набора результатов, чтобы получить идентификаторы из сообщений, а затем обновить их статус в таблице MS SQL. Затем я попытаюсь снова запустить тот же набор результатов, чтобы фактически выполнить отправку .... Как-то во втором прогоне у меня возникают проблемы, начиная с строки 1, используя тот же код, что и ниже ... любые советы на что это лучший способ сделать это ?: Мое требование состоит в том, что я должен дважды запускать тот же набор результатов. :)
Заранее спасибо.
Option Public
Uselsx "*LSXODBC"
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim subject As String, cc As String, bcc As String, sender As String, OID As String, mailto As String, bodyNotMIME As String
Dim body As NotesMIMEEntity
On Error Goto errorCounter
Set db = session.CurrentDatabase
Gosub SendMailGeneral
Exit Sub
SendMailGeneral:
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim defaultQuery As String
Set qry.Connection = con
con.SilentMode = True
If con.ConnectTo("DSN_Name","USER_NAME", "PASSWORD") Then
Set result.Query = qry
defaultQuery = "select TOP (10) * from Message where StatusType=0"
qry.SQL = defaultQuery
result.Execute
If (result.IsResultSetAvailable) Then
Do
result.NextRow
Gosub GetRowFields
Gosub SendMail
Loop Until result.IsEndOfData
End If
End If
result.Close(DB_CLOSE)
Return
End Sub
GetRowFields:
mailto = result.GetValue("To")
cc = result.GetValue("CC")
bcc = result.GetValue("Bcc")
sender = result.GetValue("Sender")
subject = result.GetValue("Subject")
bodyNotMIME = result.GetValue("Body")
OID = result.GetValue("OID")
Return
SendMail:
Dim mail As NotesDocument
Set mail = New NotesDocument(db)
Dim stream As NotesStream
Set stream = session.CreateStream
'Recipients
mail.SendTo = mailto
mail.CopyTo = cc
mail.BlindCopyTo = bcc
' Set all sender-related fields
mail.ReplyTo = sender
mail.Principal = sender
mail.From = sender
mail.AltFrom = sender
mail.SendFrom = sender
mail.INetFrom = sender
mail.tmpDisplaySentBy = sender
mail.tmpDisplayFrom_Preview = sender
mail.DisplaySent = sender
'Body
Call stream.WriteText(bodyNotMIME)
Set body = mail.CreateMIMEEntity
Call body.SetContentFromText _
(stream, "text/html; charser=iso-8859-1", ENC_NONE)
'Subject
mail.Subject = subject
'Send
Call mail.Send(False, False)
Return
Спасибо за сообщение. Код + код был опечаткой. Я только что исправил это. – frenetix
Привет, спасибо за ваш ответ. + NextRowcode был опечаткой, просто исправил его :). Что касается хранения файлов в файловой системе, дело в том, что у меня есть некоторые ограничения: сервер Notes не может получить доступ к какой-либо другой файловой системе, кроме локальной файловой системы, а приложение, которое генерирует сообщения, не имеет доступа к файловой системе Notes Server. Я думаю, мне придется хранить файлы на эквиваленте MS SQL Blobl/Clob - я считаю, что он называется двоичным типом - и молюсь, чтобы я мог правильно его прочитать из заметок. У меня были некоторые проблемы в прошлом, с некоторыми типами данных - , Спасибо, в любом случае! – frenetix
@frenetix Вы думаете о способе управления файлами в MsSql из Lotus? Я думаю, вам придется либо использовать «ADODB.Stream» из LotusScript, либо использовать [Java-агент] (http://www.coderanch.com/t/463785/JDBC/java/store-image-MS-SQL-Server). Если бы мне пришлось это сделать, я бы использовал Java. –