powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Памагите, не работают эксесные кнопочки фильтрации и сортировки
14 сообщений из 14, страница 1 из 1
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32610830
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу на открытие формы
Set Me.Recordset=CurrentProject.Connection.Execute("Select ..")
Когда там просто селект, то все в порядке. А я использовал пару переменных типа таблица. Для хранения промежуточных результатов.
И кнопочки аксесные поломалися блин. Не фильтруют, не сортируют.
Че делать, не угадываю:-(
Adp, Access XP, MS SQL 2k SP3
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32610924
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у RecordSetа много разных свойств - ты пробовал ими манипулировать ?
видимо набор возвращаемых данных "крив" - Гетц в 1 томе много рассуждает про поиск и фильтрацию в RecordSet - глянь.
уважаемый Victosha рекомендует к примеру клиентский курсор.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32610949
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ты пробовал?
Ага
Пробовал задавать курсортип и курсорлокейшн. Не получилось.
Че-то такое у меня было и было связано с тем, что эксес привязывается к сообщениям сет нокаунтами тоже по всякому попробовал, тоже безрезультатно. Счас он мне говорит, что у меня набор статик и юзклиент(две троечки выводит строка
Debug.Print Me.Recordset.CursorType, Me.Recordset.CursorLocation
Вроде так и должно быть. Че ему надо, хз.
Почитаю гетца :-(
>Набор данных крив
Этт точно
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611086
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изврат, конечно, но работает:-)

CurrentProject.Connection.Execute("
...
If object_id('tempdb..#t1') drop table #t1
Select...
into #t1
")
Set Me.Recordset=CurrentProject.Connection.Execute("Select * From #t1")

Но вопрос остается. Я специально посмотрел, свойства рекордсета одинаковые(курсорлокейшн и курсортип),когда работает и когда нет, троечки
Мне кажется, что тут дело в эскуэль. В эскуэль надо что-то устанавливать.
Короче, вопрос:
Почему при использовании нескольких эскуэль выражений ломаются кнопочки и как их победить.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611516
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вышел из положения так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Option Compare Database\nOption Explicit\n \' (с) Козин Алексей, Удалов Георгий\n 
\nPublic Function OrderByAcs()\n  Dim ctl As Access.Control\n  Dim bt As Boolean\n  Dim frm\n  \n  If Screen.ActiveControl.ControlType = acComboBox Then\n    On Error Resume Next\n    Set ctl = Screen.ActiveControl\n    Set frm = ctl.Parent\n    If Err.Number <>  0  Then Exit Function\n    If frm.Form.Name = "" Then\n    End If\n    Do While Err.Number <>  0  And Len(frm.Name) >  0   \' в frm находится, например, ссылка на вкладку\n 
      Set frm = frm.Parent\n      Err.Clear\n      If frm.Form.Name = "" Then\n      End If\n    Loop\n    \n    Err.Clear\n    If frm.RecordsetClone.Fields("~" & ctl.Name).Name = "" Then\n    End If\n    If Err.Number =  0  Then bt = True  \' Есть поле, по которому можно сортировать\n 
    On Error GoTo  0 \n    \n    If bt Then\n      frm.OrderBy = "~" & ctl.Name & ""\n      frm.OrderByOn = True\n    Else\n      RunCommand acCmdSortAscending\n    End If\n  Else\n    RunCommand acCmdSortAscending\n  End If\nEnd Function\n\nPublic Function OrderByDesc()\n  Dim ctl As Access.Control\n  Dim bt As Boolean\n  Dim frm\n  \n  If Screen.ActiveControl.ControlType = acComboBox Then\n    On Error Resume Next\n    Set ctl = Screen.ActiveControl\n    Set frm = ctl.Parent\n    If Err.Number <>  0  Then Exit Function\n    If frm.Form.Name = "" Then\n    End If\n    Do While Err.Number <>  0  And Len(frm.Name) >  0   \' в frm находится, например, ссылка на вкладку\n 
      Set frm = frm.Parent\n      Err.Clear\n      If frm.Form.Name = "" Then\n      End If\n    Loop\n    \n    Err.Clear\n    If frm.RecordsetClone.Fields("~" & ctl.Name).Name = "" Then\n    End If\n    If Err.Number =  0  Then bt = True  \' Есть поле, по которому можно сортировать\n 
    On Error GoTo  0 \n    \n    If bt Then\n      frm.OrderBy = "[~" & ctl.Name & "] DESC"\n      frm.OrderByOn = True\n    Else\n      RunCommand acCmdSortDescending\n    End If\n  Else\n    RunCommand acCmdSortDescending\n  End If\nEnd Function\n\nPublic Function SetServerFilterBySel()\n  Dim ctl As Access.Control\n  Dim sf\n  Dim frm, findtext\n\n  On Error Resume Next\n  Set ctl = Screen.ActiveControl\n  Set frm = ctl.Parent\n  If Err.Number <>  0  Then Exit Function\n  If frm.Form.Name = "" Then\n  End If\n  Do While Err.Number <>  0  And Len(frm.Name) >  0   \' в frm находится, например, ссылка на вкладку\n 
    Set frm = frm.Parent\n    Err.Clear\n    If frm.Form.Name = "" Then\n    End If\n  Loop\n  On Error GoTo  0 \n  \n  Select Case ctl.ControlType\n  Case acTextBox:\n    Select Case VarType(ctl.Value)\n      Case  2  To  6 ,  14 ,  17 :\n        findtext = ctl.Value\n        sf = "[" & ctl.ControlSource & "]=" & findtext\n      Case Else\n        If ctl.SelText = "" Then\n          findtext = ctl.Text\n        Else\n          findtext = ctl.SelText\n        End If\n        findtext = Replace(findtext, "\'", "\'\'", , , vbTextCompare)\n        findtext = Replace(findtext, """", "\' + char(34) + \'", , , vbTextCompare)\n        If ctl.SelText = ctl.Text Or Len(Nz(ctl.SelText)) =  0  Then\n          If Len(Nz(findtext)) =  0  Then\n            sf = "([" & ctl.ControlSource & "] = \'\' OR [" & ctl.ControlSource & "] IS NULL)"\n          Else\n            sf = "[" & ctl.ControlSource & "] = \'" & findtext & "\'"\n          End If\n        Else\n          sf = "[" & ctl.ControlSource & "] like  \'%" & findtext & "%\'"\n        End If\n    End Select\n  Case acComboBox, acListBox:\n     \' В полях со списками надо брать value, т.к. отображаемый столбец м.б. несвязанным\n 
     \' Перед фильтрацией надо обновить содержимое поля\n 
    findtext = Nz(ctl.Value)\n    findtext = Replace(findtext, "\'", "\'\'", , , vbTextCompare)\n    findtext = Replace(findtext, """", "\' + char(34) + \'", , , vbTextCompare)\n    If Len(findtext) =  0  Then\n      sf = "[" & ctl.ControlSource & "] is null"\n    Else\n      sf = "[" & ctl.ControlSource & "] = \'" & findtext & "\'"\n    End If\n  Case acCheckBox:\n    If ctl.Value =  0  Then\n      sf = "[" & ctl.ControlSource & "]=0"\n    Else\n      sf = "[" & ctl.ControlSource & "]<>0"\n    End If\n  End Select\n  \n  If Len(Nz(frm.ServerFilter)) =  0  Then\n    If Len(Nz(sf)) <>  0  Then\n      frm.ServerFilter = sf\n      frm.RecordSource = frm.RecordSource\n    End If\n  Else\n    If sf <> "" Then\n      frm.ServerFilter = frm.ServerFilter & " AND " & sf\n      frm.RecordSource = frm.RecordSource\n    End If\n  End If\nEnd Function\n\nPublic Function ClearServerFilter()\n  Dim ctl As Access.Control\n  Dim frm\n  \n  On Error Resume Next\n  Set ctl = Screen.ActiveControl\n  If ctl.ControlType = acSubform Then\n    Set frm = ctl.Form\n  Else\n    Set frm = ctl.Parent\n  End If\n  If Err.Number <>  0  Then Exit Function\n  If frm.Form.Name = "" Then\n  End If\n  Do While Err.Number <>  0  And Len(frm.Name) >  0   \' в frm находится, например, ссылка на вкладку\n 
    Set frm = frm.Parent\n    Err.Clear\n    If frm.Form.Name = "" Then\n    End If\n  Loop\n  On Error GoTo  0 \n  \n  frm.ServerFilter = ""\n  frm.RecordSource = frm.RecordSource\nEnd Function
Вызов соответствующих функций навешивается на "свои" кнопки. Идея и добрая часть кода отсюда. Там же и указание о кое-каких явных недостатках. Вроде работает пока.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611519
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, и вру почем зря. #table я в формы не совал еще...
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611549
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу Гетца метод Supports RecordSet с массой параметров вернёт True/False

есть adSeek и acFind
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611658
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>geo
Спасибо, понятно, что своими кнопочками можно(нужно) все сделать. Правда, непонятно, зачем тогда эксес, я его тока из-за готовых кнопочек и юзаю:-(
Может, через пару лет сделаю.
>shuhard
Ok
Мой скрипт adfind- false, выборка из временной таблички- true.
И какой из этого можно сделать вывод? Разве кнопочки эксеса не должны сортировать любой расположенный на клиенте не форвардонли рекордсет?
Впрочем, мой эксперимент показывает, что должны, да не обязаны:-)
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32611806
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в не в кнопке ,а в наборе данных - подробнее всёж-таки Гетц!
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32612433
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гетц он большой, 210 страница что ли? У меня статик, юзклиент.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32612498
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стр 227
сам увы помочь не могу - в ADP не силён.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32612561
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>стр227
Боюсь, что мы не поняли друг друга. У меня никаких проблем при работе с рекордсетом программно. Все ищется, фильтруется, все пашет. Проблема в том, что когда этот рекордсет вешаешь на форму, то эксес ведет себя странно и анализирует фиг знает что типа откликов сервера. И требуются некоторые пляски и бубен, чтобы его привести в чувство.
Вот.
Есть уже два замечательных решения:
Все сделать ручками и через временную таблицу.
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32612657
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стало любопытно, поскольку и уменя сходная проблема (про "Invalid object Name #K").

Что все-таки сортируется по аксексной кнопке на панели инструментов - рекордсет или источник данных??

Сюдя по сообщению - источник данных (хранимка, в которой таблица уже дроп). А сюдя по тому, что сортировка все-таки происходит - рекордсет...

Хм! Кто бы прояснил ситуейшн? Что про это думает товарищ Гетц (их нет у меня)?
...
Рейтинг: 0 / 0
Памагите, не работают эксесные кнопочки фильтрации и сортировки
    #32612752
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрена ли тут объяснять, весь эксес написан так:
шаг влево, вправо побег, прыжок на месте- провокация.
Или бери что дают, или ...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Памагите, не работают эксесные кнопочки фильтрации и сортировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]