powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Плавающая запятая в SQL строке
17 сообщений из 17, страница 1 из 1
Плавающая запятая в SQL строке
    #32553226
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу следующее:

sub (qwe as duble)
currentdb.execute ("UPDATE tabl SET tabl.z7=" & qwe &"fhfdnffgfgfgfgn")
end sub

Дело в том, что qwe подает число в виде 48 , 458796
Запросу же нужна такая запись 48 . 458796(с точкой вместо запятой)
Какая мааленькая функция проделывает то что надо.
Подскажите, кто знает, плз.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553230
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CDbl ?
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553232
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Format

А вообще присоединять к стрингу не-стринг - это всегда нехорошо. Особенно если это дата, но вот оказалось, что и с числовыми данными тоже.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553235
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Не CDbl, а Str(qwe)!!!

Пока писал, сам догадался. :)
Извините за идиотский вопрос.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553236
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вру...
Возвращает в соответствии с региональными настройками
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553237
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отстал от поезда.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553239
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На тему переименования топиков: этот можно переименовать как "Плавающая запятая -> плавающая точка"
:)
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553315
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не советую писать "duble" в объявлении sub.
Да, в таких случаях imho оптимально делать str$(), переводить имеющееся число в строку, делать ей trim$(), и уже потом заменять в ней все запятые на точки. У этого преимущество перед любыми встроенными функциями в независимости от региональных настроек системы.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553318
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маякНе советую писать "duble" в объявлении sub.
А здесь этого, кажется, и нет.

маякДа, в таких случаях imho оптимально делать str$(), переводить имеющееся число в строку, делать ей trim$(), и уже потом заменять в ней все запятые на точки. У этого преимущество перед любыми встроенными функциями в независимости от региональных настроек системы.

Про отличия str$ и str (просто так, кому еще не встречалось):
/topic/91339

trim для запросов не нужно - здесь все равно, есть или нет пробел перед числом. И "," на "." менять тоже не надо - str[$] вернет уже с точкой.
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553572
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, в объявлении процедуры double есть.
2 Маяк: а почему double не привествуется именно при объявлении процедуры.
Чем это чревато? (причины, мотивации пожалуйста :)
Нет, действительно, если могут быть какие казусы, то какие?
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553609
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маяк хотел сказать примерно о следующих 3-х случаях.

Человек, собственной рукой объявляющий формальные параметры процедуры имеет в голове представление о способе использования самой процедуры/функции.
Так если функция предназначена для использования в запросах, то вероятен Null как входной фактический параметр.
Тогда объявление double вызовет ошибку времени исполнения. Аналогично, если в sub планируется передавать непосредственно значения контролов mySub Form.MyControl то история с Null воспроизводится.
И наконец, в вашем случае формальный параметр объявлен имплицитно byRef.
Это значит, что при передаче sub-у в качестве параметра выражения,
приводимому в результате вычисления к типу, отличному от double, тоже будет возникать ошибка времени исполнения. Например sub clng(myVal)+1 -> выражение clng(myVal)+1 приведется к Long
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553731
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что в этом топике обсуждается не вопрос правильности передачи параметров в процедуру, а вопрос склейки стрингов для запросов, если в стринге присутствует числовая, не целая переменная с ",". Проблема, действительно актуальная, особенно когда программа устанавливается в другой стране с другими региональными определениями представления числа.
Я раньше боролся с подобной проблемой посредством функции, которая переводила число в стринг и проверяла нет ли в нем ",". Совсем недавно узнал о другом методе, он несколько громоздок, но дает преимущества: не надо думать о региональных установках и очень нагляден. пример кода:

Код: plaintext
1.
2.
3.
4.
5.
Dim db As Database: Set db = CurrentDb
Dim qd As QueryDef: Set qd = db.CreateQueryDef("", "PARAMETERS p IEEEDouble; " & vbCrLf & _
        "insert into Table1 (Name, Numb) values( 'AAA', [p]);")

qd.Parameters("p") = n
qd.Execute

Что вы думаете по этому поводу?

P.S. Я обычно не люблю пользоваться параметрами в запросе, но утверждается, что такой код работает быстрее, так как он якобы предкомпилирован
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553737
Invisible
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле ничего из перечисленного данной функции не грозит. Victosha, спасибо, но вот что интересует:
"параметр объявлен имплицитно byRef"
Действительно раньше я не понимал, с чем связана данная ошибка, когда пытался послать данные типа Variant.
Так, для общего развития - а, что, можно как-то по другому определить входные параметры для функции, чтобы не возникало ошибки byRef?
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32553850
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну - ByVal например :)
Типа в хелпе подробности :)
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32555318
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geotrim для запросов не нужно - здесь все равно, есть или нет пробел перед числом. И "," на "." менять тоже не надо - str[$] вернет уже с точкой.Неправда твоя! Это всецело зависит от твоих региональных настроек. Которые могут быть любыми.

Invisible2 Маяк: а почему double не привествуется именно при объявлении процедуры.
Чем это чревато? (причины, мотивации пожалуйста :)
Victoshaмаяк хотел сказать примерно о следующих 3-х случаях.Всё много проще! Я рекомендовал не использовать DUBLE, вместо него аксесс с радостью съест double . %))
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32555322
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
маякНеправда твоя! Это всецело зависит от твоих региональных настроек. Которые могут быть любыми.
Откуда такая уверенность ?
Неужели так трудно проверить, перед тем как написать?
...
Рейтинг: 0 / 0
Плавающая запятая в SQL строке
    #32556017
Фотография маяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(c)VIG маякЭто всецело зависит от твоих региональных настроек. Которые могут быть любыми.
Откуда такая уверенность ?
Неужели так трудно проверить, перед тем как написать?Что такое? Если соврал, то извиняюсь.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Плавающая запятая в SQL строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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