Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Переход к записи в форме...


Автор: mws 23.5.2008, 14:30
В одной БД в форме для перехода к записи через ComboBox используется код:

Код

Private Sub ПолеСоСписком167_AfterUpdate()
    ' Поиск записи, соответствующей этому элементу управления.
    Dim rs As Object
    Dim strSQL As String

    Set rs = Me.Recordset.Clone
    strSQL = "([Фамилия] = '" & Me.ПолеСоСписком167.Column(0) & "') AND " & _
             "([Имя] = '" & Me.ПолеСоСписком167.Column(1) & "') AND " & _
             "([Отчество] = '" & Me.ПолеСоСписком167.Column(2) & "')"
    rs.FindFirst strSQL
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
А в другой базе в списке для перехода используются поля Учреждение и Дата, т.е. разный тип данных, как в этом случае изменится код?

Автор: bopoha 24.5.2008, 17:23
Цитата(mws @  23.5.2008,  14:30 Найти цитируемый пост)
А в другой базе в списке для перехода используются поля Учреждение и Дата, т.е. разный тип данных, как в этом случае изменится код?


Учреждение - абсолютно не говорит о типе. Если текст, то его в результирующей строке необходимо обрамить кавычками. С числом делать ничего не нужно.
Дата - ее необходимо привести к формату так - Format(дата, "#mm/dd/yyyy#").

Автор: mws 26.5.2008, 11:05
Попробовал Format - ругается на #  Что-то не получается, а надо...
Akina - сорри за "Код", сначала не въехал.

Код

Private Sub ПолеСоСписком40_AfterUpdate()
Dim rs As Object
    Dim strSQL As String

    Set rs = Me.Recordset.Clone
    strSQL = "[наименование учреждения] = '" & Me.ПолеСоСписком40.Column(0) & "' AND  Format([отчетная дата], "#mm/dd/yyyy#") = " & Format(Me.ПолеСоСписком40.Column(1), "#mm/dd/yyyy#")
    rs.FindFirst strSQL
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Автор: Akina 26.5.2008, 11:50
Цитата(mws @  26.5.2008,  12:05 Найти цитируемый пост)
Akina - сорри за "Код", сначала не въехал.

Использовать научился? теперь научись выбирать правильный тип кода - и все будет прелестно smile

Добавлено через 1 минуту и 20 секунд
Цитата(mws @  26.5.2008,  12:05 Найти цитируемый пост)
Попробовал Format - ругается на #

Где именно? И зачем форматировать и данные из формы, и данные из таблицы?

Автор: mws 26.5.2008, 12:38
Цитата(Akina @ 26.5.2008,  11:50)
Цитата(mws @  26.5.2008,  12:05 Найти цитируемый пост)
Попробовал Format - ругается на #

Где именно? И зачем форматировать и данные из формы, и данные из таблицы?

Вот выкладываю файл, а то толком объяснить вряд ли смогу. А Format использовал по совету bopoha, да видно зря...

В форме "учреждения" есть список для перехода, при его использовании и ругается...

Модератор: Прикрепленный файл удален. Причина - не убран автозапуск формы.

Автор: bopoha 26.5.2008, 15:51
Немного ошибся в формате даты для поиска - #dd.mm.yyyy#.

Автор: mws 27.5.2008, 09:01
Вот выкладываю файл, а то толком объяснить вряд ли смогу. А Format использовал по совету, да видно зря...

В форме "учреждения" есть список для перехода, при его использовании и ругается...

Автор: Akina 27.5.2008, 09:20
Код

Private Sub ПолеСоСписком40_AfterUpdate()
    Dim rs As Object
    Dim strSQL As String

    Set rs = Me.Recordset.Clone
    strSQL = "[наименование учреждения] = '" & _
             Me.ПолеСоСписком40.Column(0) & _
             "' AND  CStr([отчетная дата]) = '" & _
             Me.ПолеСоСписком40.Column(1) & _
             "'"
    rs.FindFirst strSQL
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Автор: bopoha 27.5.2008, 18:08
Цитата(Akina @  27.5.2008,  09:20 Найти цитируемый пост)
"' AND  CStr([отчетная дата]) = '" & _
             Me.ПолеСоСписком40.Column(1) & _
             "'"


С таким успехом можно было бы написать:
Код

"' AND  [отчетная дата] = CDate(" & _
             Me.ПолеСоСписком40.Column(1) & _
             ")"


Тоже будет работать.

Автор: Akina 27.5.2008, 18:17
bopoha, написАл первое, что в голову пришло...

Автор: mws 28.5.2008, 07:45
Народ, огромное спасибо, с меня идет! Будете у нас в Архангельске - милости просим (только не надо отвечать - нет, уж лучше вы кнам)


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)