powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача парметра в ХП
12 сообщений из 12, страница 1 из 1
Передача парметра в ХП
    #32528002
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Суть проблемы:
Есть некая ленточная форма.
Источник данных - ХП с параметрами.
Значения параметров берутся из полей формы.
То есть в InputParametrs все прописанно как надо.
Первый раз столкнулся с таким глюком, значения нескольких полей
ложные!!!
То есть в одном поле пишется слово #ошибка в другом значение не то что должно быть, как подмена значений, короче ГЛЮК!
Стоп! Понимаю что путанно объяснил, однако читайте дальше.
У ХП три параметра
@MyDate smalldatetime
@IdArt int
@IdFirmaModel int
Стал я методом тыка искать ошибку.
Во первых запустил процедура из QA все поля на месте все тип топ
Убрал все параметры из свойтсва InputParametrs
Соответсвенно форма стала требовать их ввода.
Я ввожу нужные значения и все работает без глюка.
Смотрим Profiler:
Код: plaintext
1.
exec sp_executesql N' EXEC "dbo"."prSaleSklad" @P1 , @P2 , @P3  '
, N'@P1 datetime,@P2 int,@P3 int', 'апр  9 2004 12:00:00:000AM',  0 ,  3484 
Обратите внимание на тип данных каждого параметра.
Так значит все гуд.
Следующий шаг зададим два первых парметра через поля формы, а последний введем вручную.
Все работает без глюка, смотрим Profiler:

Код: plaintext
1.
exec sp_executesql N' EXEC "dbo"."prSaleSklad" @P1 , @P2 , @P3  '
, N'@P1 nvarchar(10),@P2 nvarchar(1),@P3 int', N'09.04.2004', N'0',  3484 
Обратите внимание на тип данных двух первых параметров - nvarchar ну в принципе и фиг с ним все работает без глюка.
мда. последний параметр вводили в ручную он остался int.
Ну и задаем последний параметр через поля формы!
Все глюк который я описал выше!
Смотрим Profiler:
Код: plaintext
1.
exec sp_executesql N' EXEC "dbo"."prSaleSklad" @P1 , @P2 , @P3  '
, N'@P1 nvarchar(10),@P2 nvarchar(1),@P3 nvarchar(4)', N'09.04.2004', N'0', N'3484'
Странная закономерность, если последний параметр идет как nvarchar происходит глюк.
Как решить эту проблемму я не пойму.
может быть есть способ передать параметр из формы как int
Может кто сталкивался.
Если кто-нибудь чего-нибудь понял в описанном выше.
Выскажитесь плиз спасибо.
P.S.
Я не провожу текст ХП она слишком путанная к тому же вот это:
Код: plaintext
1.
2.
3.
4.
5.
DECLARE @MyDate nvarchar( 10 ),
	@IdArt nvarchar( 1 ),
	@IdFirmaModel nvarchar( 4 )

SELECT @MyDate='20040409', @IdArt='0', @IdFirmaModel='3484'
exec prSaleSklad @myDate, @IdArt, @IdFirmaModel
Работает в QA на ура. все поля на месте, никаких #ошибка вместо значений одного из полей нету.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528018
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может проблема в дате?

У меня так не получается, чтоб сервак нормально понимал локаль русскую
Приходится дату в ISO переводить для сервака :(

т.е. чтоб он наверняка передал '20040409', а не как ему захотся :(


Хотя судя по посту проблема не в этом
Так что моно это не читать :)
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528035
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут вот какой глюк остановлюсь подробнее:
Есть поля на форме
IdArtikul, No_Op, Baza и т.д.
После выполнения ХП с параметрами заданными через форму
в поле IdArtikul =#ошибка
в поле No_Op= значение IdArtikul
Cо значениями в поле Baza и др все впорядке!
Мля ГЛЮК! другого слова нет! Чего Access делает с данными!
Кстати MSA XP
Help!
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528038
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome
Нет проблема не в этом, спасибо за совет в любом случае.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528070
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то напоминает проблемы с view типа
Select * Form tbl1

Если есть такие, когда из tbl1 удаляешь поле или добавляешь в середину, то вьюха бред выдавать начинает :(
Такие вьюхи приходится пересоздавать (ALTER VIEW ...) после вышеописанных действий (и бороться с этим никак)

Это-же относится и к табличным UDF
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528079
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда.
UDF то у меня тоже есть она внутри ХП зарыта ..
мля сижу копаюсь.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528087
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
важно чтоб в хранимке было

DECLARE @MyDate datetime ,

и во входных параметрах

@P1 datetime = ... , @P2 int = ..., @P3 int = ...
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528141
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК
автор
DECLARE @MyDate datetime

Нет только не DECLARE, напомню речь идет о параметре.
автор@P1 datetime = ... , @P2 int = ..., @P3 int = ...
Спасибо, указал тип явно, профайлер выдал:
Код: plaintext
1.
exec sp_executesql N' EXEC "dbo"."prSaleSklad" @P1 , @P2 , @P3  '
, N'@P1 datetime,@P2 int,@P3 int', 'апр  9 2004 12:00:00:000AM',  0 ,  3484 
Один в один как при ручном вводе.
Однако одно из полей формы (IdArtikul) упрямо содержит надпись #ошибка!
Сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub Êíîïêà12_Click()
On Error GoTo Handle_Error
Dim rst As ADODB.Recordset


Set rst = Me.Form.Recordset

MsgBox rst!IdArtikul 'Здесь все гуд выдает норамальное значение! Никаких ошибок!
MsgBox Me.IdArtikul 'Error "Заразервированное сообщение об ошибке!"

Set rst = Nothing

exit_sub:
Exit Sub

Handle_Error:
MsgBox Err.Description
Resume exit_sub
End Sub
Еще раз повторюсь, при ручном вводе значений параметров все гуд.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528226
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такое бывает когда нельзя однозначно определить имя поля или имя контрола
где -то у тебя дубляж имен в форме

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

в принципе такая ссылка из формулы должна быть однозначна?

private function getart()
getart = me.fields("IdArtikul")
end function
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528250
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты имеешь ввиду

getart = me. controls ("IdArtikul")
То та же ошибка!

автортакое бывает когда нельзя однозначно определить имя поля или имя контрола
где -то у тебя дубляж имен в форме
Странно а почему тогда при ручном вводе все гуд?
Сейчас попробую.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528348
Jem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем ответившим!
Ближе всех к истине оказался paparome .
В коде процедуры у меня есть условие
IF там парам -> SELECT IdArt, No, Name
ELSE другой ->SELECT No, IdArt, Name
Access глючил из-за этого, то есть видимо при подключении к серверу, он проверяет все ХП и запоминает порядок вывода столбцов, и если этот порядок изменяется в ХП, то контролам присваиваются значения не по именам полей, а по порядку (по номерам) И если ветвление внутри ХП предполагает
изменение числа полей или порядка их следования будет глюк!
я этого не знал.
В моем случаи я просто поменял местами No и IdArt и все заработало.
Еще раз всем спасибо.
...
Рейтинг: 0 / 0
Передача парметра в ХП
    #32528660
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли ты имеешь ввиду
getart = me.controls("IdArtikul")

c точностью до наоборот как раз я имел ввиду значение поля записи а не значение контрола


ADP
Dim rs As New ADODB.Recordset
Set rs = Me.RecordsetClone
rs.Bookmark = Me.Bookmark
MsgBox rs. Fields ("id")
rs.Close
Set rs = Nothing


mdb
Me.Dynaset.Bookmark = Me.Bookmark
MsgBox Me.Dynaset. Fields ("id")
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача парметра в ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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