2013-10-28 4 views
0

Функция моей формы - позволить пользователю назначить другому пользователю задачу, это отлично работает. Пользователь выбирает, кому они хотят назначить задачу, через поле со списком, которое связано с БД доступа, теперь я пытаюсь реализовать эту функцию, я могу получить значение этого выбранного пользователя из поля со списком (путем сопоставления идентификатора в комбокс с идентификатором в БД, а затем нахождение электронной почты из этой строки, поэтому я могу вставить его в сообщение электронной почты Outlook, которое появляется, когда пользователь нажимает «Назначить» (код Outlook работает отлично, он просто не тянет значение из поля со списком, поэтому щелкните по нему, чтобы получить новый вид электронной почты Outlook, но поле «Кому» пусто, я также попытался напечатать переменную, которую я назначаю этому полю, чтобы убедиться, что это не проблема с кодом перспективы и он не замирает возвращает никакого значения).MS Access, значение ComboBox в SQL-заявлении

Вот фрагмент кода, который не будет работать ....

Dim OutApp As Object 
Dim OutMail As Object 
Dim EmailSubject As String 
Dim EmailSendTo As String 
Dim MailBody As String 
Dim db As DAO.Database, rs As DAO.Recordset 
Dim s As String 
Dim sqlStatement As String 

Combo2.SetFocus 

Set db = CurrentDb 
Set rs = db.OpenRecordset("SELECT tblUsers.Email FROM tblUsers WHERE tblUsers.UserID = 'Combo2.Text ") 

Combo2 - название combobox

+0

Это VBA, VB6 или VB.NET? Это не одно и то же, и ни одно из них не является ОСНОВНЫМ. Просьба уточнить. – MPelletier

+0

Microsoft Visual Basic 6.5, извините, я не использую это отдельно от недавно для работы, так что полностью забыл о разных версиях. – Josh

ответ

0

Может быть так?

Set rs = db.OpenRecordset("SELECT tblUsers.Email FROM tblUsers WHERE tblUsers.UserID = " & Combo2.SelectedItem.ToString()) 
+0

Говорит, что отсутствует оператор ... – Josh

+0

Затем '& Combo2.SelectedItem.ToString()' или без '.ToString()' –

+0

Теперь, когда член метода или данных не найден в ссылках на SelectedItem .. – Josh

0

Попробуйте это:

Если ваш идент Text попробовать это один:

Set rs = db.OpenRecordset("SELECT tblUsers.Email FROM tblUsers WHERE tblUsers.UserID = '" & Combo2.Text & "'") 

Однако, если ваш идент numeric попробовать это одно:

Set rs = db.OpenRecordset("SELECT tblUsers.Email FROM tblUsers WHERE tblUsers.UserID = " & Combo2.Text) 
+0

Первый вывести ошибку, но она все равно не набирает значения, а вторая получает ошибку оператора. – Josh

+0

@Josh. Вы ссылались на 'rs' после того, как вы установили' rs'? Например, например: «Email = rs (« Email »)' – Edper

+0

да, теперь я не получаю текущую запись, но я несколько раз проверял БД, поэтому не получаю ее – Josh

0

I не совсем понимаю, как Access вступает в игру, поэтому, если это неправильно, я приношу свои извинения. Это, как я хотел бы сделать это в Access:

Dim OutApp As Object 
Dim OutMail As Object 
Dim EmailSubject As String 
Dim EmailSendTo As String 
Dim MailBody As String 
Dim db As DAO.Database, rs As DAO.Recordset 
Dim EmailTo as String 
Dim s As String 
Dim sqlStatement As String 

Combo2.SetFocus 

Set db = CurrentDb 
EmailTo = DLookup ("Email", "tblUsers", "tblUsers.UserID = '" & Combo2.Text & "'") 

Если Идентификатор_пользователя является INT, вы меняете бы ту последнюю линию:

EmailTo = DLookup ("Email", "tblUsers", "tblUsers.UserID = " & Combo2.Text & "") 

Кстати, вы сказали решение Edper в «Ждут» t возьмите что-нибудь ». Вы знаете, что «rs» не будет иметь реальной стоимости в этом сценарии, верно? RS («Отправить»), однако, так что если вы добавили:

EmailSendTo = rs("Email") 

после SQL строки, которые могут дать вам то, что вам нужно.

+0

Теперь, не говоря уже о текущей записи через edgars, что не имеет смысла, поскольку я проверил БД несколько раз, чтобы не было ошибок ... – Josh

+0

Положите точку останова в свой код. Вы можете сделать это, просто щелкнув левое поле рядом с строкой кода. Появится красный круг, это ваша точка останова. Запустите код. Когда он доберется до точки останова, вы можете теперь переходить через ваш код по очереди.Сделайте это и проверьте каждую переменную, когда вы доберетесь до нее, чтобы убедиться, что ваш код правильно разрешает ваши переменные. Здесь я обычно обнаруживаю, что то, что я думаю, что переменная должна быть равна, не означает, что Access считает, что переменная должна быть равна. Например, вам может потребоваться вытащить Combo2.Value вместо Combo2.Text. –

Смежные вопросы