Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нецелые входные параметры ХП. / 25 сообщений из 26, страница 1 из 2
12.04.2004, 17:14
    #32477981
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
наверняка это было на форуме, но найти не удается.

интересует вопрос, кто как передает числа с плав. точкой в параметры хранимки.
АсХП, adp
вызываю из кода VB через объект Command
заполняю параметры.
проблема в том, что Акс передает число с разделителем зпт, а сервак хочет тчк.

как правильнее это обойти?
...
Рейтинг: 0 / 0
12.04.2004, 17:30
    #32478028
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
str(123.12)="123.12"
...
Рейтинг: 0 / 0
12.04.2004, 17:31
    #32478030
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
я что-то хреново объяснил?
или никто не передает нецелые числа в хранимки как параметры?
...
Рейтинг: 0 / 0
12.04.2004, 17:32
    #32478034
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
2 Geo:
я так понимаю речь идет о
Replace( str(10,21) , ',' , '.' ) ?
...
Рейтинг: 0 / 0
12.04.2004, 17:32
    #32478035
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
cmd.parameters.append cmd.createparameter("asd",,,123.45)
...
Рейтинг: 0 / 0
12.04.2004, 17:34
    #32478038
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
авторя так понимаю речь идет о
Replace( str(10,21) , ',' , '.' ) ?
Нет, str возвращает разделитель ".".
Хотя я и не понимаю, зачем надо сначала преобразовывать число в строку...
...
Рейтинг: 0 / 0
12.04.2004, 17:42
    #32478053
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
2 Geo:
авторХотя я и не понимаю, зачем надо сначала преобразовывать число в строку...

если я напишу
cmd.parameters.append cmd.createparameter("asd",,,me.field)
а в поле field будет число 5,2
то в хп передается 5,2
что для сервака числом не является
...
Рейтинг: 0 / 0
12.04.2004, 17:52
    #32478069
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Вот это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub test()
  Dim cmd As New Command
  Dim rs As ADODB.Recordset
  Dim t As Long
  cmd.ActiveConnection = CurrentProject.Connection
  cmd.CommandText =  "СохраненнаяПроцедура1" 
  cmd.CommandType = adCmdStoredProc
  t =  8 . 4 
  cmd.Parameters.Append cmd.CreateParameter( "@aaa" , adDouble, adParamInput, , t)
  Set rs = cmd.Execute
  rs.MoveLast
  MsgBox rs.RecordCount
  rs.Close
End Sub

нормально отработало
...
Рейтинг: 0 / 0
12.04.2004, 18:00
    #32478078
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
2 Geo
:)
это конечно нормально отработает.
а ты попробуй взять значение из поля формы.
с учетом, что у тебя русские стандарты винды.
а в наших стандартах разделитель ЗПТ.
он и передастся в хранимку и она благополучно не отработает.
...
Рейтинг: 0 / 0
12.04.2004, 18:08
    #32478093
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Если заполняеш коллекцию параметров для Command
то никакого перевода в строку не должно быть
возможно праметр в коллекции нетипизированн.

.Parameters.Append .CreateParameter("@Id", adBigInt, adParamInput, , Id_)

где adBigInt и есть типизирующая константа
...
Рейтинг: 0 / 0
12.04.2004, 18:15
    #32478104
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Первым делом при установке нового компа ставлю в качестве разделителя целой и дробной части '.'.
...
Рейтинг: 0 / 0
12.04.2004, 18:22
    #32478116
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
авторПервым делом при установке нового компа ставлю в качестве разделителя целой и дробной части '.'

оно конечно дело хорошее.
но все таки как с этим бороться?
...
Рейтинг: 0 / 0
12.04.2004, 18:23
    #32478119
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
2 Latuk:
хочу тебя огорчить, эта константа в данном случае ничем не поможет
...
Рейтинг: 0 / 0
12.04.2004, 18:25
    #32478124
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Я полный чайник в хранимых процедурах, но позволю себе спросить: а почему нельзя взять val от этого значения поля формы? Неужели обязательно передавать как стринг?
...
Рейтинг: 0 / 0
12.04.2004, 18:27
    #32478127
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Дело, скорее всего, не в точках и запятых. Давай фрагмент кода + обявление переменной в ХП.
...
Рейтинг: 0 / 0
13.04.2004, 01:31
    #32478354
MikeLV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
To Sasha_1
если я напишу
cmd.parameters.append cmd.createparameter("asd",,,me.field)
а в поле field будет число 5,2
то в хп передается 5,2
что для сервака числом не является
А что, me.field не числовое поле?
...
Рейтинг: 0 / 0
13.04.2004, 05:44
    #32478397
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Если задуматься над машинным представлением чисел с плавающей точкой, то станет понятно, что региональные настройки тут совершенно не при чем.
Давай фрагмент кода + обявление переменной в ХП.
...
Рейтинг: 0 / 0
13.04.2004, 10:18
    #32478587
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
авторЕсли задуматься над машинным представлением чисел с плавающей точкой, то станет понятно, что региональные настройки тут совершенно не при чем.

Вы меня удивляете. как же не при чем-то?
могу конечно и код показать, мне не жалко :)
Вот вам ХП
Код: plaintext
1.
2.
3.
4.
ALTER PROCEDURE dbo.spUpdateNacByPost
(@art int, @nacSkl numeric( 18 , 5 ))
AS UPDATE    dbo.tabNacenki
SET   colNumNacSkl = @nacSkl 
WHERE     (colIntArtikul = @art)


вот вам Аксес
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim cmd As New ADODB.Command
    cmd.ActiveConnection = CurrentProject.Connection
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText =  "spUpdateNacByPost" 
    cmd.Parameters.Append cmd.CreateParameter( "RETURN_VALUE" , adInteger, adParamReturnValue)
    cmd.Parameters.Append cmd.CreateParameter( "art" , adBigInt, adParamInput,,me!art)
    cmd.Parameters.Append cmd.CreateParameter( "nacSkl" , adDouble, adParamInput,, Me!fldNacSkl)
    cmd.Execute
...
Рейтинг: 0 / 0
13.04.2004, 10:25
    #32478597
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
да забыл сказать:
me!art=5
Me!fldNacSkl=1,19
/именно через запятую, т.к. она является разделителем целой и дробной части./
...
Рейтинг: 0 / 0
13.04.2004, 10:39
    #32478624
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
а не проще ли
испльзоаить money?
естли канешна не использовать
больше 4 знаков после запятой.
...
Рейтинг: 0 / 0
13.04.2004, 10:50
    #32478655
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
объясняю еще раз.
при создании параметра его значение получается 1,19 (через запятую) вне зависимости от типа этого самого параметра (хоть текст).
параметр попадает в хранимку и там сервак его не понимает, т.к. у сервака разделитель естественно точка.
вот.
...
Рейтинг: 0 / 0
13.04.2004, 10:52
    #32478664
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
меня собственно интересует ответ на вопрос:
Кто как превращает ЗПТ в ТЧК в нецелых числах?
...
Рейтинг: 0 / 0
13.04.2004, 10:56
    #32478676
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
А почему параметр nacSkl у хранимой процедуры объявлен как Numeric, а параметр объявляешь не как adNumeric (Indicates an exact numeric value with a fixed precision and scale ) и без Size (specifies the maximum length for the parameter value in characters or bytes). Параметр art вообще почему-то в процедуре обяъвлен как Integer, а создаешь adBigInt (а надо adInteger)/ Возможно причина именно в этом. Ты сделай cmd.Parameters.Refresh и посмотри какие значения типы и размеры парметров получены акесом.
...
Рейтинг: 0 / 0
13.04.2004, 11:48
    #32478776
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Прогнал про adInteger - addouble будет правильно.

И вообще у меня все работает и так как было.
.CreateParameter("@p", adDouble, adParamInput, , Поле1)
Только Поле1 имеет Формат Фиксированный. Разделитель таким образом становится запятая, а сервак получает то, что нужно.
...
Рейтинг: 0 / 0
13.04.2004, 11:55
    #32478789
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нецелые входные параметры ХП.
Прогнал на различных, в том числе и не совпадающих, комбинациях "Тип поля" - "Тип входного параметра" (за исключением тип параметра = numeric)
Все нормально работает при любых десятичных разделителях (пробовалась точка, запятая и буква "я")
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Нецелые входные параметры ХП. / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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