powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "Визуализация" рекордсета
46 сообщений из 46, показаны все 2 страниц
"Визуализация" рекордсета
    #32312964
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Есть таблица с большим количеством полей, допустим заказчики. Есть поле РЕГИОН.
Нужно подготовить отчет Заказчики по регионам.
На сервере создана ХП с параметром @Region
Используя ADO, вызываю ХП и передаю требуемое значение параметра
Получаю рекордсет (все работает правильно),но как мне его увидеть в табличной форме?
Если создавать врем.таблицу, идти по строкам рс и создавать новый рс1
с INSERT, то строка SQL становится просто огромной, учитывая большое
количество полей
Может быть есть более "умный способ"?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32312965
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема то? открывай форму, в качестве источника записей которой твоя ХП в режиме таблицы, и все. Или тебе просто неохота прописывать все поля?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32312966
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень хорошо составил предложение. Имеется ввиду открывай форму в режиме таблицы.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313579
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
To Pavel:
Не получается
Механизм такой. В "поисковой" форме я выбираю нужный регион, жму кнопку
"Отбор", которая выполняет ХП на сервере с передачей параметра Регион
Возвращается Рекордсет.
А куда его воткнуть, не соображу ( сейчас наверное пойдут импровизации на последнюю фразу -)))
Сделал ленточную форму, открыл ее и пытаюсь в цикле по рекордсету
заполнить ее.
Все честно работает, но весь рс в одну строку (т.е. остается толька последняя
запись из РС)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313620
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У формы есть сов-во: RecordSource - туда и пихать хранимую.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313639
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
А как это свойство задать программно?
Дело в том что у меня в зависимости от выбора пользователя
запускаются разные ХП
Хорошо бы перед открытием формы указать, что источником строк является рекордсет
Можно?
Если да, то как?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313656
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблемма то ?
У формы источником может быть Recordset.
Set Me.Recordset = MyADODBRecordset

В принципе нет проблем и в RecordSource загнать
Делаеш Public VB фукцию и присваеваеш точто она возвращает в строке входящих параметров.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313687
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Почти хорошо
----
Вот фрагмент
----

docmd.OpenForm "Forma"
Set Forms!Forma.Recordset=rs
While (not rs.EOF)
Forms!Forma.ID_ORG=rs!ID_ORG
............
rs.MoveNext
Wend
----
Заполняется вся ленточная форма, но запись всегда одна и та же
Где косяк?

-((((
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313690
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Latuk
А не проще ли написать:
Me.RecordSource = "Exec MyStoredProcedure" & и фигова туча моих параметров.
Это вместо функции.

2 ayv
If user="Пупкин" Then
strSQL = "Exec MyStoredProcedure" & и фигова туча моих параметров
Else
strSQL = "Exec MyStoredProcedure_ALL" & и фигова туча моих параметров
End If

Это фигня, то что я написал, потому что процедура должна быть одна, на вхзод ей имя пользователя, а потом уже проверки в процедуре, но не на клиенте:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313695
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Этот цикл засовывает в указанное поле в текущей записи формы все значения последовательно из всех записей рекордсета.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313705
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ayv
А вот теперь картина маслом - ХП возвращает тысяч n-дцать записей и мы с барабаном на шее и с шаманским бубном бегаеим по этому рекордсету и заполняем форму:)
Ура, товарищи:)

Вот где косяк: Forms!Forma.ID_ORG=rs!ID_ORG

ТАК ДЕЛАТЬ НЕЛЬЗЯ В ПРИНЦИПЕ.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313711
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Подскажите, пожалуйста, как?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313713
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Он присваивает последнее значение из рекордсета, а не все. Бежит по рекордсету и присваивает текущуюзапись - форма оттображает в итоге последнюю запись из рекордсета.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313714
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что я уже писал про RecordSource.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313716
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Hummer:

Разумеется, после цикла остается последнее из занесенных значений.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313725
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Не внимательно прочитал Ваш ответ. Извините:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313766
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
При попытке
Me.RecordSource = "Exec MyStoredProcedure" & Регион

"Не могу найти ХП MyStoredProcedureРегион"
А писать весь запрос не хочется, так как теоретически параметров может быть много
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313783
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Не могу найти ХП MyStoredProcedureРегион"

Ну я просто телепат - угадал название процедуры:)

Выполняется конкотенация строки - поэтому после "&" нужно указывать значение переменной, которое мы хотим передать в качестве параметра нашей ХП.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313791
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
а Регион и есть значение переменной
конкретно
"Не могу найти ХП MyStoredProcedure54"
А вообще-то процедура называется по другому, но все равно здорово
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313799
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибся малость:
Me.RecordSource = "Exec MyStoredProcedure " & Регион

Можно было подумать немного:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313808
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Мужики, извините за назойливость
VBA занимаюсь всего как месяц, стараюсь лишний раз
не клянчить помощи, пытаюсь найти сам, но тут
вопрос для меня где то даже концептуальный
Сначала я делал так
1. создавал рс на основе SELECT
2. создавал рс1 на основе INSERT во вр. таблицу значений в цикле по рс
3. затем выводил на экран

но думаю, это слишком примитивно, тем более, что INSERT c его
синтаксисом при большом количестве выводимых полей становится кошмаром
создать рс просто, а вот увидеть его в любой форме, хоть в таблице
не просекаю
-((
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313825
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вернуться к постановке задачи - то способ её решения уже дан. В источник данных ЛЮБОЙ формы в коде прописываем командную сторку (Select, Exec бла-бла-бла).
Никакой назойливости нет:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313827
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Проблема таже
docmd.OpenForm "Forma"
Set Forms!Forma.RecordSource="Exec XP " & intReg
А как ленточную форму заполнить строками из запроса?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313833
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
какой конструкцией мне сделать присваивание значений элементов формы?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313837
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый - если после этой строчки
Forms!Forma.RecordSource="Exec XP " & intReg
ленточная форма Forma не отображает данные, значит ХП не вернула НИЧЕГО(если не стоит On error resume next) и сервер тоже не выдал ошибку.

SET НЕ НУЖЕН.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313839
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Forms!MyForm!ID_ORG=?????????
Вот где у меня тормоза
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313847
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тяжелый случай :)
Давай начнем с того, что ХП возвращает набор записей. тебе этот набор нужно принять и отобразить. Задача немного осложнена тем, что тебе при вызове ХП нужно задать ее входные параметры.
А теперь вопрос: ты используешь ADO в проекте adp или базе mdb?
Если adp, то создаем форму, на событие открытие в зависимости от каких-то там условий прописываем свойства RecordSource и InputParameters (именно в этом порядке). Все. Если SQL сервер жив, то записи уже в форме. Даже по записям можно побегать. Остался пустяк - отобразить поля. Если лень ручками в конструкторе заводить каждое поле, то можно заранее наделать их штук 100, а при открытии формы программно (в цикле по коллекции fields) задать для каждого название и соответствующее поле рекордсета.
А теперь по пунктам, что не ясно?
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313849
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
В том то и дело что вернула
Внизу число записей = 55, именно столько сколько нужно
а поля пустые
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313853
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
ado, adp, sql2000
в свойстве формы ИСТОЧНИК ЗАПИСЕЙ - пусто
Поля Свободные, не привязаны ни к чему
Имена полей совпадают с табличными
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313856
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в источнике данных для кадждого из полей прописаны имена полей из набора записей, которые вернёт ХП?

Челюсть моя уже устаола пережёвывать кашку:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313867
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Типа
Forms!Forma.ID_ORG=rs!ID_ORG ?
-))
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313871
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну [цензура мля] при каком хере тут рекордсет?:)
Есть у полей свойство ControlSource - там должно быть прописано поле из селекта в ХП.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313876
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Типа Forms!Forma("ID_ORG").ControlSource = "qwerty"
Т.е. строка. но из рекордсета имена полей конечно тоже можно получить.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313880
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для единообразия Forms!Forma.ID_ORG.ControlSource
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313885
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все. Я с ума схожу.
Forms!Forma!ID_ORG.ControlSource
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313886
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
все, получилось
Спасибо огромное всем
не злитесь -))))
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313890
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порадовал! Не зря старались!
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313895
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дети хлопают в ладоши - папа в козыря попал:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313900
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Ребята, удачи вам
хорошо что вы есть
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313919
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подстановка рекордсета для формы - это уж совсем в специфичных случаях.

1 для формы в источник данных поставить хранимку и задать параметр по умолчанию в хранимке @idregion =123 ?

в форме будут выведены записи по параметру по умолчанию.

2 для формы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке ?

при загрузке формы она выдаст диалоговое окно с запросом параметра idregion.

3 если для ПОДформы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке а в главной форме создать контрол с именем соответствующим имени запрашиваемого параметра?

получится подчиненная форма связанная с главной без указания главных / подчиненных полей

3.1 для ПОДформы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке а в главной форме создать контрол с именем отличающимся от соответствующим имени запрашиваемого параметра и указать во входных параметрах @idregion = forms!регион
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313929
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК
Это всё верно, но можно и просто рекордсурс формировать, как мы и говорили.
Параметром для ХП является переменная. Параметр на форме вообще при этом не прописывается.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313970
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще не мешало бы не забывать при передаче в хранимку строковой переменной апострофы добавлять

Me.RecordSource = "Exec MyProc '" & Forms!Form1.txt1 & "'"
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313972
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это если @Region varchar(10)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32313995
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Витал
В данном случае он не строковый:)

Собираетесь написать новый FAQ про ADODB.command, преобразование типов, передача различных значений в ХП?:)
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32314006
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All
Не праздный интерес.

А чего вы вообще так любите использовать в источнике
"exec dbo.mysp "+par1+", "+par2 и т.д.
???

Для этого есть InputParameters и там не нужно никаких преобразований типов делать.
...
Рейтинг: 0 / 0
"Визуализация" рекордсета
    #32314023
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
Привычка - раз. Переменные при формировании строки декларируюится сразу нужных для Хп типов, с преобразованием проблем не испытываю.
В InputParameters нужно заносить имена параметров ХП. Что не всегда удобно - два.
Это что касается меня.

Да и то, процедуры только в формах в виде отчётов со статистикой, преимущественно везде селекты из VIEW c формированием строки Where, что может не совсем верно, но система уже давняя, программистов много и начинали её писать очень давно....
Когда требуется получить рекрдсет из хранимой использую ADODB.command.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / "Визуализация" рекордсета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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