Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Плавающая запятая в SQL строке / 17 сообщений из 17, страница 1 из 1
08.06.2004, 21:12
    #32553226
Invisible
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плавающая запятая в SQL строке
Пишу следующее:

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

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

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

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

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

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

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

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

Код: 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
09.06.2004, 11:14
    #32553737
Invisible
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плавающая запятая в SQL строке
На самом деле ничего из перечисленного данной функции не грозит. Victosha, спасибо, но вот что интересует:
"параметр объявлен имплицитно byRef"
Действительно раньше я не понимал, с чем связана данная ошибка, когда пытался послать данные типа Variant.
Так, для общего развития - а, что, можно как-то по другому определить входные параметры для функции, чтобы не возникало ошибки byRef?
...
Рейтинг: 0 / 0
09.06.2004, 11:54
    #32553850
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плавающая запятая в SQL строке
Ну - ByVal например :)
Типа в хелпе подробности :)
...
Рейтинг: 0 / 0
10.06.2004, 00:14
    #32555318
маяк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Плавающая запятая в SQL строке
Geotrim для запросов не нужно - здесь все равно, есть или нет пробел перед числом. И "," на "." менять тоже не надо - str[$] вернет уже с точкой.Неправда твоя! Это всецело зависит от твоих региональных настроек. Которые могут быть любыми.

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


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