Ошибка в IF?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Ошибка в IF?

Сообщение alex shestov » 01.07.2005 (Пт) 8:51

Помоги найти ошибку.
Нужно: В форме чтобы при выборе определенной записи из всплывающего списка показывались определенные поля или скрывались.
Условие: В сплывающий список данные подкачиваются из таблицы а условие по которому обрабатывается If качается из той же таблицы но из другого столбца.

Что я не правильно делаю, потому как IF все время True при любом ограничении выборки и ставь хоть 1 хоть 21 все время подсвечивает поля?

Код: Выделить всё

Private Sub Secur_AfterUpdate()
On Error Resume Next
Dim rs As DAO.Recordset
Dim strSql As String
strSql = ("SELECT Securities.VidSecur, Securities.EmitNameCondin " _
        & "FROM Securities WHERE (((Securities.EmitNameCondin)=[Forms]![Deal1]![Secur]));")
If rs.Fields("VidSecur") = "1" Then
    Forms!Deal1!All_Nomin.Visible = True
    Forms!Deal1!NKD.Visible = True
Else
    Forms!Deal1!All_Nomin.Visible = False
    Forms!Deal1!NKD.Visible = False
End If
End Sub


Спасибо.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 8:59

))))))))

ON Error Resume Next

убери))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 9:11

Sebas писал(а):))))))))

ON Error Resume Next

убери))))


Убрал. но все равно не работает. Я правда еще немного код неправильно прописал

Код: Выделить всё

Dim rs As DAO.Recordset
Dim strSql As String
strSql = ("SELECT Securities.VidSecur, Securities.EmitNameCondin " _
        & "FROM Securities WHERE (((Securities.EmitNameCondin)=[Forms]![Deal1]![Secur]));")
Set rs = CurrentDb.OpenRecordset(strSql)

If rs.Fields("VidSecur").Value = "1" Then
    Forms!Deal1!All_Nomin.Visible = True
    Forms!Deal1!NKD.Visible = True
Else
    Forms!Deal1!All_Nomin.Visible = False
    Forms!Deal1!NKD.Visible = False
End If
End Sub


А сейчас в чем? :roll: РУгается на Set rs = CurrentDb.OpenRecordset(strSql)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 9:19

Ндя, чтото в "WHERE" у тя совсем плохо((( , даже не берусь раскрыть весь тайный смысл вложенный тобой в критерий отбора....
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 9:25

Sebas писал(а):Ндя, чтото в "WHERE" у тя совсем плохо((( , даже не берусь раскрыть весь тайный смысл вложенный тобой в критерий отбора....


:))))) в форме выбираю цен. бум., в таб цен. бум. есть поле Вид цен.бум. так вот в зависимости от того что там указано (например: акция или облигация) и должно показываться или скравыть определенное поле в форме.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 9:55

[Forms]![Deal1]![Secur]

Вот это что?!?!??!
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 9:58

Sebas писал(а):[Forms]![Deal1]![Secur]

Вот это что?!?!??!


Условие для отбора данных в таблице из формы с которой и работаю...

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 10:01

Вы считаете что ошибка в WHERE из-за нее некорректно работает?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 10:04

Какая форма?!??!?!? Бейсиковская?!?!?!?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 10:05

Sebas писал(а):Какая форма?!??!?!? Бейсиковская?!?!?!?


Access-кая форма

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 10:09

Чёрт, в ВБА не силён, но не уверен что SQL в аксесе понимает что такое форма...

Подставь ему значение из формы

Код: Выделить всё
WHERE (((Securities.EmitNameCondin)=" & Forms!Deal1!Secur & "));")


это для чисел, если поле строковое, сответственно поставь кавычки...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 10:17

Sebas писал(а):Чёрт, в ВБА не силён, но не уверен что SQL в аксесе понимает что такое форма...

Подставь ему значение из формы

Код: Выделить всё
WHERE (((Securities.EmitNameCondin)=" & Forms!Deal1!Secur & "));")


это для чисел, если поле строковое, сответственно поставь кавычки...


А с чем может быть связано что на эту строку постоянно выдает ошибку что мало параметров. Требуется 1.
Код: Выделить всё
Set rs = CurrentDb.OpenRecordset(strSql)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 01.07.2005 (Пт) 10:19

запрос неверный, гдето имя поля неправильно написал.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.07.2005 (Пт) 10:36

Sebas писал(а):запрос неверный, гдето имя поля неправильно написал.


Формы понимает но нужно вот так прописать оказывается.

Код: Выделить всё

Private Sub Secur_AfterUpdate()
Dim rs As DAO.Recordset
Dim strSql, r1 As String
r1 = CStr([Forms]![Deal1]![Secur])
strSql = ("SELECT Securities.VidSecur, Securities.EmitNameCondin " _
        & "FROM Securities WHERE (((Securities.EmitNameCondin)='" & [r1] & "'));")
Set rs = CurrentDb.OpenRecordset(strSql)

If rs.Fields("VidSecur") = "1" Then
    Forms!Deal1!All_Nomin.Visible = False
    Forms!Deal1!NKD.Visible = False
Else
    Forms!Deal1!All_Nomin.Visible = True
    Forms!Deal1!NKD.Visible = True
End If
End Sub

Вот так все работает. Спасибо за помощь.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList