#sql #vba #ms-access
#sql #vba #ms-access
Вопрос:
Я пытаюсь присвоить результат запроса (адрес электронной почты) переменной.
Я хочу, чтобы эта переменная была назначена кнопке, чтобы открыть текущую используемую почтовую систему и открыть новое письмо с этим адресом электронной почты.
Public valid_mail As Variant
Public Sub mail_list()
valid_mail = "SELECT CustomerFACT.îééì FROM CustomerFACT WHERE (((CustomerFACT.[èìôåï ðééã]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[ùí àéù ÷ùø]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[ùí äì÷åç]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[îñôø òåñ÷]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*'));"
End Sub
Private Sub mail_70_Click()
DoCmd.SendObject acSendNoObject, , , valid_mail
End Sub
Когда я не использую глобальную переменную valid_mail, но ввожу адрес электронной почты в двойные кавычки, это работает.
Комментарии:
1. Вы заменили оператор запроса. Вам нужно будет присвоить результат запроса.
2. Не совсем понял…
Ответ №1:
Это то, что я тестировал в своем примере. Вам нужно подставить результаты набора записей.
Public valid_mail As Variant
Sub test()
Dim DB As Database
Dim rs As Recordset
Dim strSQL As String
Set DB = CurrentDb
strSQL = "select email from [table] "
Set rs = DB.OpenRecordset(strSQL)
valid_mail = rs!email
MsgBox valid_mail
End Sub
Замена вашего будет выглядеть так:
Public valid_mail As Variant
Sub mail_list()
Dim DB As Database
Dim rs As Recordset
Dim strSQL As String
Set DB = CurrentDb
strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[ui ai÷ac]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*')) Or (((CustomerFACT.[inoø oan÷]) Like '*' amp; Forms!CustomerLookUpFORM!searchbox amp; '*'));"
Set rs = DB.OpenRecordset(strSQL)
valid_mail = rs!ieei
''MsgBox valid_mail
End Sub
Private Sub mail_70_Click()
call mail_list
DoCmd.SendObject acSendNoObject, , , valid_mail
End Sub
и ваш оператор sql выражен неправильно. Это должно быть, как показано ниже.
strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "'*)) Or (((CustomerFACT.[ui ai÷ac]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*')) Or (((CustomerFACT.[inoø oan÷]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*'));"
мой ответ также напечатан с ошибкой.
Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "'*))
Для
Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*'))
исправленный sql — это
strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*')) Or (((CustomerFACT.[ui ai÷ac]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*')) Or (((CustomerFACT.[inoø oan÷]) Like '*" amp; Forms!CustomerLookUpFORM!searchbox amp; "*'));"
Комментарии:
1. Привет! большое спасибо! кажется, работает, только когда я его запускаю, он выдает ошибку «ошибка 3061 слишком мало параметров», и когда я отлаживаю, ошибка возникает здесь — Set rs = DB.OpenRecordset(strSQL)
2. @EyalMarom, ваш оператор sql выражен неправильно. добавлено в конце сообщения.
3. Это именно то, что я сделал. При отладке ошибка приводит к функции OpenRecordset, сообщая, что ей требуется больше аргументов (не менее 1), и когда я проверил синтаксис, другие возможные аргументы являются необязательными. Не могу понять.
4. @EyalMarom, в моем ответе также была опечатка.