powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы передачи параметров в процедуру из полей формы
19 сообщений из 19, страница 1 из 1
Проблемы передачи параметров в процедуру из полей формы
    #32446330
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В продолжение /topic/80808\r
\r
Сделал так. \r
В обработчике описал, что переносить в процедуру только те параметры, которые вбиты в поля в форме, т.е. пустые поля игнорируются. (Т.е. если вбито 2 к.-либо поля, то передается 2 соответствующих параметра). \r
В общем все это работает, за исключением "но".. \r
При нажатии на кнопку параметр который я вбил передается, а остальные запрашиваются диалогом ("Введите значение параметра") :( \r
В процедуре у всех параметров установлены значения по-умолчанию NULL. \r
\r
Как это обойти?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32446341
Не совсем понятно правда, имели ли вы в виду значение свойства формы InputParameters...

Если да, то тут такое дело... Несмотря на то, что документация от Microsoft к свойству InputParameters говорит, что достаточно опустить указание какого либо параметра, чтобы он получил значение по умолчанию, это не работает - значение параметра в этом случае запрашивается у пользователя.

А вот если опустить только значение параметра, а не его описание, то это будет работать:

Код: plaintext
@Param1 as int=, @Param2 as varchar( 3 ) 
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32446350
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том что я не хочу передавать ВСЕ параметры в InputParameters. У меня их более 50-ти штук и к тому же я не знаю какие комбинации параметров будет использовать будущий пользователь :) А при передачи всех параметров из VB в InputParameters система ругается, что для этого свойства это слишком длинное значение :(
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32448001
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто знает другие пути решения моей задачи?
(просьба по-подробнее а не в 2-х 3-х словах .. я пока не спец :) )
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32448167
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно передавать один параметр - строку, содержащую последовательность всех необходимых параметров с каким-нибудь разделителем, а в процедуре разбирать ее и получать нужные параметры. Или сохранять значения параметров во временной таблице, а процедура будет их оттуда считывать.
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32448246
Да, именно это я, поразмыслив, и хотел предложить - экономную "упаковку" информации в минимальном числе параметров и, в качестве последнего средства - передачу информации через "глобальную" таблицу. Pavel , большое ему спасибо, потрудился за меня :).

Но, поскольку мне как-то с трудом воображается практическая необходимость одной процедуры с тремя десятками параметров, рискну предположить, что к решению задачи можно подойти с другой стороны. Из контекста можно предположить, что при каждом конкретном вызове большинство параметров пусты, и лишь отдельные их группы в том или ином случае несут информацию. Прям-таки руки чешутся проанализировать, в каких случаях какие параметры непусты, разбить их на группы и для каждой такой группы (вряд ли их окажется много) создать отдельную процедуру со своим набором параметров. А в форме в зависимости от ситуации динамически менять свойство RecordSource и InputParameters, подставляя туда информацию, относящуюся то к одной, то к другой процедуре... Глядишь, и длины InputParameters хватит... :).

А может даже (чем чёрт не шутит) возможно, хорошенько подумав, сократить число параметров вообще?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32450111
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно по-подробнее про упаковку и глобальную таблицу?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32450909
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По какому принципу индексируются элементы управления на форме?
У меня на форме 50 полей %) .. В VB нужно перебирать их по индексу..

Код: plaintext
1.
2.
3.
4.
Dim ContrVal varchar( 50 )
...
ContrVal = ContrVal &  "#"  & Me.Controls(Index)
Index = Index +  1 
...


А индексировано как-то лево... :(

1-й, 2-й элементы нормально (индексы 0-й и 1-й)...
дальше хрен его знает как они индесируются.. потому что к 3-му не могу обратиться ... а к 17-му могу .. (20-й элемент) .. короче черт ногу сломит!

А обращаться по имени неохота .. Многовато кода..
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451372
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451586
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы хотите передать в программу значения полей формы, то просто скрывайте форму при нажатии кнопки OK
Private Sub ОК_Кнопка_Click()
Me.Visible = False
End Sub

Private Sub Отмена_Кнопка_Click()
DoCmd.Close
End Sub

Затем проверяете скрыта форма или закрыта:

If SysCmd(acSysCmdGetObjectState, acForm, "Форма1") = 0 Then
Exit Sub
End If
ф=forms!Форма1!Поле1:ф=forms!Форма1!Поле2

и т.д. Кроме того не забывайте про свойства БД:
ф=CurrentDb.Containers("Databases")!UserDefined.Properties("тест")
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451611
Не верю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпотому что к 3-му не могу обратиться
у третьего, скорей всего, нет св-ва Value, (или еще какого), к которому вы на самом деле пытаетесь обратиться. А вот св-во Name, пожалуй, есть.
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451643
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulB
Не понял.
А зачем скрывать форму? Это просто форма с полями и кнопкой btnSearch. Нажав на нее пытаюсь передать параметры в процедуру...

Поясните пожалуйста для чего это нужно?

не верю
Т.е. как это у control'a типа Поле может не быть свойcтва Value??
Я чего-то наверно не понимаю или чего-то может быть не знаю?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451683
Не верю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто, твою тибидох, сказал, что control(3) имеет тип "поле", если он тебя имеет в виду при попытке обратиться за его Value, как какой нить паршивый лейбл или линия. Вот и проверь, control(3).Name
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32451713
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем передавать параметры в процедуру, когда из нее можно прочесть содержимое всех полей формы?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32452436
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не верю
понял

PaulB
В данном случае мне так удобнее.

Еще такой вопрос. Что нужно настраивать при установке базы на удаленный сервер (внутри локальной сети)? Я пробовал только на одной машине все это ставить. Какие есть отличия и сложности и на что нужно обратить внимание. (ОС - Win2K).
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32454987
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32460672
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот подпроцедура, которая обрабатывает переданные от клиента строки вида:

Код: plaintext
Иванов#Сергей#Владимирович#####.... и т.д.


Здесь знак решетки является разделителем полей, которые заполняются в форме.

Сама подпроцедура:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
	@InputstrIn varchar( 2000 ),


	@Coun int OUTPUT,

	@tFam varchar( 50 ) OUTPUT,
	@tName varchar( 50 ) OUTPUT, 
	@tOtch varchar( 50 ) OUTPUT,

                  ...  ( 57  параметров начиная с @tFam заканчивая @tDocOtch)

             @tDocFam varchar( 50 ) OUTPUT,
	@tDocName varchar( 50 ) OUTPUT,
	@tDocOtch varchar( 50 ) OUTPUT
AS

	Declare @Mystr varchar( 2000 )
	Declare @Start int
	Declare @Len int
	Declare @MaxLen int
	Declare @Counter int
	Declare @Myitem varchar( 255 )
	Declare @Prevsymbol varchar( 1 )

SET NOCOUNT ON
SET @Mystr = @InputstrIn
SET @Start =  1 
SET @Len =  1 
SET @MaxLen = LEN(@Mystr)
SET @Counter =  1 
SET @Myitem = ''
SET @Prevsymbol = ''

SET @Coun = @Counter


WHILE @Start <= @MaxLen

BEGIN


	

	IF SUBSTRING(@Mystr, @Start, @Len) <> '#'
	BEGIN
	    SELECT @Myitem = @Myitem + SUBSTRING(@Mystr, @Start, @Len)

	END

	IF (@Prevsymbol = '#') AND (SUBSTRING(@Mystr, @Start, @Len) = '#')
	BEGIN



		SELECT @Counter = @Counter +  1 
		SELECT @Myitem = ''
		
	END

	IF  (@Prevsymbol <> '#') AND (SUBSTRING(@Mystr, @Start, @Len) = '#')
	BEGIN

		IF @Counter =  1    SELECT @tFam = @Myitem
		IF @Counter =  2    SELECT  @tName = @Myitem
		IF @Counter =  3    SELECT  @tOtch   = @Myitem
                                  ...              ...             ...
		IF @Counter =  55     SELECT @tDocFam  = @Myitem
		IF @Counter =  56     SELECT @tDocName  = @Myitem
		IF @Counter =  57     SELECT @tDocOtch  = @Myitem

		SELECT @Counter = @Counter +  1 
		SELECT @Myitem = ''
	END

	SELECT @Prevsymbol = SUBSTRING(@Mystr, @Start, @Len)
	SELECT @Start = @Start +  1 

END


Соответственно @tFam и т.д. уходят во внешнюю процедуру, которая уже и реализует сам запрос к базе.

Внешняя процедура работает без проблем. Проверял.
Но вот внутренняя процедура неправильно обрабатывает строку.
Она почему-то не видит остальных слов кроме первого.
Т.е. "Иванова" обрабатывает и дальше выполняется запрос только с "Ивановым" в критерии.

Посмотрите пожалуйста. Где напартачил?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32461478
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?
...
Рейтинг: 0 / 0
Проблемы передачи параметров в процедуру из полей формы
    #32468352
Razz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:(
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблемы передачи параметров в процедуру из полей формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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