Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Памагите, не работают эксесные кнопочки фильтрации и сортировки / 14 сообщений из 14, страница 1 из 1
19.07.2004, 15:13:28
    #32610830
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Памагите, не работают эксесные кнопочки фильтрации и сортировки
Пишу на открытие формы
Set Me.Recordset=CurrentProject.Connection.Execute("Select ..")
Когда там просто селект, то все в порядке. А я использовал пару переменных типа таблица. Для хранения промежуточных результатов.
И кнопочки аксесные поломалися блин. Не фильтруют, не сортируют.
Че делать, не угадываю:-(
Adp, Access XP, MS SQL 2k SP3
...
Рейтинг: 0 / 0
19.07.2004, 15:38:03
    #32610924
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Памагите, не работают эксесные кнопочки фильтрации и сортировки
у RecordSetа много разных свойств - ты пробовал ими манипулировать ?
видимо набор возвращаемых данных "крив" - Гетц в 1 томе много рассуждает про поиск и фильтрацию в RecordSet - глянь.
уважаемый Victosha рекомендует к примеру клиентский курсор.
...
Рейтинг: 0 / 0
19.07.2004, 15:47:19
    #32610949
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Памагите, не работают эксесные кнопочки фильтрации и сортировки
>Ты пробовал?
Ага
Пробовал задавать курсортип и курсорлокейшн. Не получилось.
Че-то такое у меня было и было связано с тем, что эксес привязывается к сообщениям сет нокаунтами тоже по всякому попробовал, тоже безрезультатно. Счас он мне говорит, что у меня набор статик и юзклиент(две троечки выводит строка
Debug.Print Me.Recordset.CursorType, Me.Recordset.CursorLocation
Вроде так и должно быть. Че ему надо, хз.
Почитаю гетца :-(
>Набор данных крив
Этт точно
...
Рейтинг: 0 / 0
19.07.2004, 16:35:15
    #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
19.07.2004, 21:29:13
    #32611516
Geo
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
19.07.2004, 21:31:25
    #32611519
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Памагите, не работают эксесные кнопочки фильтрации и сортировки
А может, и вру почем зря. #table я в формы не совал еще...
...
Рейтинг: 0 / 0
19.07.2004, 22:17:02
    #32611549
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Памагите, не работают эксесные кнопочки фильтрации и сортировки
по поводу Гетца метод Supports RecordSet с массой параметров вернёт True/False

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

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

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

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


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