|
|
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Есть таблица с большим количеством полей, допустим заказчики. Есть поле РЕГИОН. Нужно подготовить отчет Заказчики по регионам. На сервере создана ХП с параметром @Region Используя ADO, вызываю ХП и передаю требуемое значение параметра Получаю рекордсет (все работает правильно),но как мне его увидеть в табличной форме? Если создавать врем.таблицу, идти по строкам рс и создавать новый рс1 с INSERT, то строка SQL становится просто огромной, учитывая большое количество полей Может быть есть более "умный способ"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 06:59 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
А в чем проблема то? открывай форму, в качестве источника записей которой твоя ХП в режиме таблицы, и все. Или тебе просто неохота прописывать все поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 07:05 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Не очень хорошо составил предложение. Имеется ввиду открывай форму в режиме таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 07:06 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
To Pavel: Не получается Механизм такой. В "поисковой" форме я выбираю нужный регион, жму кнопку "Отбор", которая выполняет ХП на сервере с передачей параметра Регион Возвращается Рекордсет. А куда его воткнуть, не соображу ( сейчас наверное пойдут импровизации на последнюю фразу -))) Сделал ленточную форму, открыл ее и пытаюсь в цикле по рекордсету заполнить ее. Все честно работает, но весь рс в одну строку (т.е. остается толька последняя запись из РС) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 14:44 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
У формы есть сов-во: RecordSource - туда и пихать хранимую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:11 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
А как это свойство задать программно? Дело в том что у меня в зависимости от выбора пользователя запускаются разные ХП Хорошо бы перед открытием формы указать, что источником строк является рекордсет Можно? Если да, то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:27 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
В чем проблемма то ? У формы источником может быть Recordset. Set Me.Recordset = MyADODBRecordset В принципе нет проблем и в RecordSource загнать Делаеш Public VB фукцию и присваеваеш точто она возвращает в строке входящих параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:35 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Почти хорошо ---- Вот фрагмент ---- docmd.OpenForm "Forma" Set Forms!Forma.Recordset=rs While (not rs.EOF) Forms!Forma.ID_ORG=rs!ID_ORG ............ rs.MoveNext Wend ---- Заполняется вся ленточная форма, но запись всегда одна и та же Где косяк? -(((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:50 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 Latuk А не проще ли написать: Me.RecordSource = "Exec MyStoredProcedure" & и фигова туча моих параметров. Это вместо функции. 2 ayv If user="Пупкин" Then strSQL = "Exec MyStoredProcedure" & и фигова туча моих параметров Else strSQL = "Exec MyStoredProcedure_ALL" & и фигова туча моих параметров End If Это фигня, то что я написал, потому что процедура должна быть одна, на вхзод ей имя пользователя, а потом уже проверки в процедуре, но не на клиенте:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:50 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Этот цикл засовывает в указанное поле в текущей записи формы все значения последовательно из всех записей рекордсета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:52 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 ayv А вот теперь картина маслом - ХП возвращает тысяч n-дцать записей и мы с барабаном на шее и с шаманским бубном бегаеим по этому рекордсету и заполняем форму:) Ура, товарищи:) Вот где косяк: Forms!Forma.ID_ORG=rs!ID_ORG ТАК ДЕЛАТЬ НЕЛЬЗЯ В ПРИНЦИПЕ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:55 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:57 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч Он присваивает последнее значение из рекордсета, а не все. Бежит по рекордсету и присваивает текущуюзапись - форма оттображает в итоге последнюю запись из рекордсета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:57 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что я уже писал про RecordSource. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 15:58 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 Hummer: Разумеется, после цикла остается последнее из занесенных значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:00 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч Не внимательно прочитал Ваш ответ. Извините:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:03 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
При попытке Me.RecordSource = "Exec MyStoredProcedure" & Регион "Не могу найти ХП MyStoredProcedureРегион" А писать весь запрос не хочется, так как теоретически параметров может быть много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:23 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
"Не могу найти ХП MyStoredProcedureРегион" Ну я просто телепат - угадал название процедуры:) Выполняется конкотенация строки - поэтому после "&" нужно указывать значение переменной, которое мы хотим передать в качестве параметра нашей ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:30 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
а Регион и есть значение переменной конкретно "Не могу найти ХП MyStoredProcedure54" А вообще-то процедура называется по другому, но все равно здорово ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:34 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Ошибся малость: Me.RecordSource = "Exec MyStoredProcedure " & Регион Можно было подумать немного:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:37 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Мужики, извините за назойливость VBA занимаюсь всего как месяц, стараюсь лишний раз не клянчить помощи, пытаюсь найти сам, но тут вопрос для меня где то даже концептуальный Сначала я делал так 1. создавал рс на основе SELECT 2. создавал рс1 на основе INSERT во вр. таблицу значений в цикле по рс 3. затем выводил на экран но думаю, это слишком примитивно, тем более, что INSERT c его синтаксисом при большом количестве выводимых полей становится кошмаром создать рс просто, а вот увидеть его в любой форме, хоть в таблице не просекаю -(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:42 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Если вернуться к постановке задачи - то способ её решения уже дан. В источник данных ЛЮБОЙ формы в коде прописываем командную сторку (Select, Exec бла-бла-бла). Никакой назойливости нет:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:49 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Проблема таже docmd.OpenForm "Forma" Set Forms!Forma.RecordSource="Exec XP " & intReg А как ленточную форму заполнить строками из запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:50 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
какой конструкцией мне сделать присваивание значений элементов формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:54 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Уважаемый - если после этой строчки Forms!Forma.RecordSource="Exec XP " & intReg ленточная форма Forma не отображает данные, значит ХП не вернула НИЧЕГО(если не стоит On error resume next) и сервер тоже не выдал ошибку. SET НЕ НУЖЕН. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:56 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Forms!MyForm!ID_ORG=????????? Вот где у меня тормоза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:56 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Тяжелый случай :) Давай начнем с того, что ХП возвращает набор записей. тебе этот набор нужно принять и отобразить. Задача немного осложнена тем, что тебе при вызове ХП нужно задать ее входные параметры. А теперь вопрос: ты используешь ADO в проекте adp или базе mdb? Если adp, то создаем форму, на событие открытие в зависимости от каких-то там условий прописываем свойства RecordSource и InputParameters (именно в этом порядке). Все. Если SQL сервер жив, то записи уже в форме. Даже по записям можно побегать. Остался пустяк - отобразить поля. Если лень ручками в конструкторе заводить каждое поле, то можно заранее наделать их штук 100, а при открытии формы программно (в цикле по коллекции fields) задать для каждого название и соответствующее поле рекордсета. А теперь по пунктам, что не ясно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 16:59 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
В том то и дело что вернула Внизу число записей = 55, именно столько сколько нужно а поля пустые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:00 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
ado, adp, sql2000 в свойстве формы ИСТОЧНИК ЗАПИСЕЙ - пусто Поля Свободные, не привязаны ни к чему Имена полей совпадают с табличными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:04 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
А в источнике данных для кадждого из полей прописаны имена полей из набора записей, которые вернёт ХП? Челюсть моя уже устаола пережёвывать кашку:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:05 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Типа Forms!Forma.ID_ORG=rs!ID_ORG ? -)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:11 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Ну [цензура мля] при каком хере тут рекордсет?:) Есть у полей свойство ControlSource - там должно быть прописано поле из селекта в ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:12 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Нет. Типа Forms!Forma("ID_ORG").ControlSource = "qwerty" Т.е. строка. но из рекордсета имена полей конечно тоже можно получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:14 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Для единообразия Forms!Forma.ID_ORG.ControlSource ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:16 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Все. Я с ума схожу. Forms!Forma!ID_ORG.ControlSource ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:17 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
все, получилось Спасибо огромное всем не злитесь -)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:17 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Порадовал! Не зря старались! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:21 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Дети хлопают в ладоши - папа в козыря попал:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:23 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Ребята, удачи вам хорошо что вы есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:25 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
подстановка рекордсета для формы - это уж совсем в специфичных случаях. 1 для формы в источник данных поставить хранимку и задать параметр по умолчанию в хранимке @idregion =123 ? в форме будут выведены записи по параметру по умолчанию. 2 для формы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке ? при загрузке формы она выдаст диалоговое окно с запросом параметра idregion. 3 если для ПОДформы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке а в главной форме создать контрол с именем соответствующим имени запрашиваемого параметра? получится подчиненная форма связанная с главной без указания главных / подчиненных полей 3.1 для ПОДформы в источник данных поставить хранимку и не задать параметр по умолчанию в хранимке а в главной форме создать контрол с именем отличающимся от соответствующим имени запрашиваемого параметра и указать во входных параметрах @idregion = forms!регион ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:34 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 АлексейК Это всё верно, но можно и просто рекордсурс формировать, как мы и говорили. Параметром для ХП является переменная. Параметр на форме вообще при этом не прописывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:38 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
И еще не мешало бы не забывать при передаче в хранимку строковой переменной апострофы добавлять Me.RecordSource = "Exec MyProc '" & Forms!Form1.txt1 & "'" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:53 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
Это если @Region varchar(10) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:54 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 Витал В данном случае он не строковый:) Собираетесь написать новый FAQ про ADODB.command, преобразование типов, передача различных значений в ХП?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:00 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 All Не праздный интерес. А чего вы вообще так любите использовать в источнике "exec dbo.mysp "+par1+", "+par2 и т.д. ??? Для этого есть InputParameters и там не нужно никаких преобразований типов делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:07 |
|
||
|
"Визуализация" рекордсета
|
|||
|---|---|---|---|
|
#18+
2 incold Привычка - раз. Переменные при формировании строки декларируюится сразу нужных для Хп типов, с преобразованием проблем не испытываю. В InputParameters нужно заносить имена параметров ХП. Что не всегда удобно - два. Это что касается меня. Да и то, процедуры только в формах в виде отчётов со статистикой, преимущественно везде селекты из VIEW c формированием строки Where, что может не совсем верно, но система уже давняя, программистов много и начинали её писать очень давно.... Когда требуется получить рекрдсет из хранимой использую ADODB.command. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1678490]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 346ms |

| 0 / 0 |
