powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA->SQL запрос -> Как запятую точкой заменить???
66 сообщений из 66, показаны все 3 страниц
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427079
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне все не заснуть :)
------
Ошибка синтаксиса (запятая) в выражении запроса.
Код: plaintext
Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")),  "#.##" )

Почему это не помомает???
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427082
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точку с запятой вместо запятой попробуй :)
Код: plaintext
1.
.......YePer( "1 "));  "#.##" )
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427084
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-не-не
Это не из той оперы :) Тут запятая нужна
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427089
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин. Я тоже хочу спать. Поэтому никак не пойму, чего не работает-то? Или работает, но не так как надо?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427094
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это равно 6,54
Код: plaintext
Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")) 


И это равно 6,54
Код: plaintext
Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")),  "#.##" )

Вот и вся фишка :)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427097
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты в какой стране живешь?
В России...
Региональные настройки в Виндах какие?
Российские...
В России как принято целую часть от дробной отделять?
Запятой...

Хватит мучать зверушку!
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427099
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что мне теперь настроики виндов менять, чтобы это запрос выполнить? :)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427100
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
з.ы.
Цитата из хелпа:
Код: plaintext
1.
При попытке форматировать числа без указания формата функция 
Format работает так же, как функция Str, но с учетом региональных параметров. 
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427101
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, ну равно и равно... Тебе так сильно точка нужна в этом выражении?????
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427106
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я то гадить хотел на эту точку!
Вот, что мешает: Ошибка синтаксиса (запятая) в выражении запроса.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427108
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МЛЯ\r
/topic/77852#558277
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427111
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВО-ВО\r
/topic/77852#558279]
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427113
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попробовать? Или уговаривать надо? У меня-то работает с ; и не работает с ,
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427114
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, дело в том, что вышеуказанная ошибка возникает, когда делаешь так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQLStr =  "INSERT INTO Bill_Arrival(OperID_2, [Реф №], Дата1, [Код счета], Потребитель, Наименование, "  _
        &  "Валюта, Приход, Эквивалент1,User_ID) SELECT "  & Forms![ПАРТНЕРЫ_Договор]!OperId &  ", "  _
        &  "'" & Me!fld_Ref & "', date(), '" & Me!lst_Bill & "', '" & Me!lst_Consumer & "', "  _
        &  "'" & Me!fld_Name & "', '" & Me!lst_currency & "', "  & Me!fld_Sum &  ", ("  _
        & Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")),  "#.##" ) &  "), "  _
        &  "'" & Forms!UserID!UserID & "'" 

CurrentDb.Execute SQLStr
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427115
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При запятой возникает ошибка синтаксиса
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427117
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тобишь при точке с запятой
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427118
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь-то уже понял... Нет, чтобы сразу код привести...
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427303
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню проблему заново:
Есть запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQLStr =  "INSERT INTO Bill_Arrival(OperID_2, [Реф №], Дата1, [Код счета], Потребитель, Наименование, "  _
        &  "Валюта, Приход, Эквивалент1,User_ID) SELECT "  & Forms![ПАРТНЕРЫ_Договор]!OperId &  ", "  _
        &  "'" & Me!fld_Ref & "', date(), '" & Me!lst_Bill & "', '" & Me!lst_Consumer & "', "  _
        &  "'" & Me!fld_Name & "', '" & Me!lst_currency & "', "  & Me!fld_Sum &  ", ("  _
        & Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")),  "#.##" ) &  "), "  _
        &  "'" & Forms!UserID!UserID & "'" 

CurrentDb.Execute SQLStr

При его выполнении возникает ошибка: "Ошибка синтаксиса (запятая) в выражении запроса."
Что делать?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427334
Чумаков А.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я у себя сделал фунцию для засовывания числа в SQL-строку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function ChangeFormatDoubleToSQL(Num As Double) As String
Dim NumTxt As String

NumTxt = Format$(Num,  "0 . 00 ")
Mid$(NumTxt, Len(NumTxt) -  2 ,  1 ) =  "." 

ChangeFormatDoubleToSQL = NumTxt

End Function


так что у тебя можно было бы заменить твое

Код: plaintext
Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")),  "#.##" )


на

Код: plaintext
ChangeFormatDoubleToSQL(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType( "1 ")) * YePer( "1 ")))
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32427767
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
напиши
SQLStr = "INSERT INTO Bill_Arrival(OperID_2, [Реф №], Дата1, [Код счета], Потребитель, Наименование, " _
& "Валюта, Приход, Эквивалент1,User_ID) SELECT " & Forms![ПАРТНЕРЫ_Договор]!OperId & ", " _
& "'" & Me!fld_Ref & "', date(), '" & Me!lst_Bill & "', '" & Me!lst_Consumer & "', " _
& "'" & Me!fld_Name & "', '" & Me!lst_currency & "', " & Me!fld_Sum & ", ( CDbl( " _
& Format(Me![fld_Sum] * YeRate(Me![lst_currency]) / (YeRate(YeType("1")) * YePer("1")), "#.##") & " ) ), " _
& "'" & Forms!UserID!UserID & "'"
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32469819
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В предложенном варианте sasha_1 возникает ошибка:
Неверное число аргументов функции в выражении запроса '(CDbl(908,34))'
-----
Чумаков А.
Твоя функция возращает стринг, а нужно число...
-----
Ерунда какая-то: никак мне не внести значение поля в таблицу. :(
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32469822
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не в тему, но если хотите значение числа получать с точкой, то используйте Str. Эта функция всегда вернет число с точкой в качестве десятичного разделителя
?Str(5/3)
1.66666666666667
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32469949
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov
Код: plaintext
1.
Str Function
Returns a Variant (String) representation of a number

Тобиш не получиться вставить стринг в числовое поле.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470297
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может вы и правы, но я не понял о чем речь.
И почему "не получиться вставить стринг в числовое поле"?
Длинный топик....
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470366
епрст
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин,

А Format(), что по вашему вам репрезентейтит.
тут надысь один полагал, что дату :0)

епрст
разззруха
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470496
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И почему "не получиться вставить стринг в числовое поле"?
Потому что при выполнении запроса возникает ошибка 'несоответствие типов данных'
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470498
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
епрст
а теперь по-русски, пожалуйста :)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470513
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик длинный вышел, так что повторю вопрос:
В запросе на вставку есть строка
Код: plaintext
CDbl( " & Format(Me![fld_Sum] * YeRate(Me![lst_Currency]) / (YeRate(YeType("  1  ")) * YePer("  1  ")), " #.## ") & " )

При выполнении запроса возникает ошибка: Неверное число аргументов функции в выражении запроса CDbl(905,345).
Что мне с этим делать?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470524
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если так часто делаешь динамические запросы.

Напиши один раз свою функцию преобразования числа в строку и используй ее вместо всяких Format, CDBL, STR ...

Например так

Код: plaintext
1.
2.
3.
4.
5.
public function f_dbl2str(d_value)

f_dbl2str=format(d_value,  "#.##" )
f_dbl2str=replace(f_dbl2str,  ","  ,  "." ,  1 , - 1 , vbTextCompare)

end function
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470534
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да пытался я уже это делать.
Все подобные функции возвращают нечисловое значение. И при выполнении запроса возникает ошибка: "...не добавлены записи...ошибка преобразования типа"
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470545
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov
Все таки ты оказался прав! Видать я что-то не так делал с этой Str. Вот так работает:
Код: plaintext
( " & Str(Format(Me![fld_Sum] * YeRate(Me![lst_Currency]) / (YeRate(YeType("  1  ")) * YePer("  1  ")), " #.## ")) & " )

Всем спасибо
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470546
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У всех работает у тебя нет - странно.

Не получается так сделай через рекордсет.

rst.AddNew
rst!f1=forms!f1!f1
...
rst.update

И все.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470610
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
incoldНапиши один раз свою функцию преобразования числа в строку и используй ее вместо всяких Format, CDBL, STR ...

Мне кажется функция с использованием Replace будет работать медленнее, чем Str
(не сравнивал)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470621
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Всеволод, а зачем Str(Format? Format и так возвращает стринг. Так что уж или Format, или Str.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470623
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМне кажется функция с использованием Replace будет работать медленнее, чем Str (не сравнивал)

Точно будет, можно и не сравнивать.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470823
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычВсеволод, а зачем Str(Format? Format и так возвращает стринг. Так что уж или Format, или Str.
Нет, ему нужен как раз и Format и Str. Почему?

Format нужен для того, чтобы было 2 знака после запятой, но он вернет запятую, если в системе разделитель запятая:
?format(5/3,"#.##")
1,67

Str нужен для того, чтобы разделителем была точка независимо от установок системы, но Str не дает определить число знаков
?str(5/3)
1.66666666666667

А совместное применение дает нужный результат
?str(format(5/3,"#.##"))
1.67
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470835
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Что-то тут не так. Мне не нравится, когда в функцию подставляют параметры не того типа. Str не рассчитан на строковой параметр.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470848
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто-то тут не так. Мне не нравится, когда в функцию подставляют параметры не того типа. Str не рассчитан на строковой параметр.

?isnumeric(format(5/3,"#.##"))
True
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470861
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
При чем тут IsNumeric? IsNumeric берет строковое значение и проверяет, может ли оно трактоваться как запись числа . А я говорю про числовое значение .

"1" - это строковое значение
1 - это числовое значение
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470865
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще добавлю, в Help сказано, что аргумент может задаваться любым допустимым числовым выражением. Что такое числовое выражение?

Любое выражение, значением которого является число. Числовое выражение может быть образовано из любой комбинации ключевых слов, переменных, констант и операторов, которая в итоге возвращает числовое значение.

Для проверки числового значения существкет IsNumeric:
Возвращает значение типа Boolean, показывающее, имеет ли выражение числовое значение.
IsNumeric возвращает True, значит все в порядке?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470869
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Копирую свою предыдущую реплику. :^)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470873
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формально Саныч прав, имхо лучше
Код: plaintext
str(round( 5 / 3 , 2 ))
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470886
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКопирую свою предыдущую реплику. :^)

авторПри чем тут IsNumeric? IsNumeric берет строковое значение и проверяет, может ли оно трактоваться как запись числа. А я говорю про числовое значение.

Достаточно вольное трактование IsNumeric, откроем еще раз Help

Функция IsNumeric
Возвращает значение типа Boolean, показывающее, имеет ли выражение числовое значение.

Что и требовалось доказать.

Хотя если религия запрещает, то можно и не использовать :)
Так устроит?:
?str(cdbl(format(5/3,"#.##")))
1.67
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470896
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(c)VIGФормально Саныч прав, имхо лучше
str(round(5/3,2))

А, например, в A97 нет Round
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470898
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
авторФункция IsNumeric
Возвращает значение типа Boolean, показывающее, имеет ли выражение числовое значение.
Здесь одна вещь недоговорена. IsNumeric снимает с выражения кавычки (как Eval) и смотрит, что было бы, если бы это выражение без кавычек оказалось прямо в программе.

Смешивать строковые значения с числовыми нельзя. Они ведут себя по-разному. Иногда Аксесс умеет преобразовать их к тому, чего интуитивно хочется, а иногда нет.

?"1"+1
2
?"1"+"1"
11

авторХотя если религия запрещает, то можно и не использовать :)
Так устроит?:
?str(cdbl(format(5/3,"#.##")))
1.67
Да, я к этому и клоню.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470913
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗдесь одна вещь недоговорена. IsNumeric снимает с выражения кавычки (как Eval) и смотрит, что было бы, если бы это выражение без кавычек оказалось прямо в программе.

Не совсем так
?eval("5/3")
1,66666666666667
?IsNumeric("5/3")
False
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470921
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ну в самом деле! Я ведь не говорил, что IsNumeric и Eval возвращают одинаковые значения! Я только сказал, что они обе снимают с выражения кавычки. И именно этот акт снятия кавычек нельзя игнорировать.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470934
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем то , это спор ни о чем. Format возвращает variant , который в разных функциях может трактоваться по разному.
В частности isnumeric(format(5/3,"#.##")) понимает его как число.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470935
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу в самом деле! Я ведь не говорил, что IsNumeric и Eval возвращают одинаковые значения! Я только сказал, что они обе снимают с выражения кавычки. И именно этот акт снятия кавычек нельзя игнорировать.

Еще раз
?IsNumeric(5/3)
True
?IsNumeric("5/3")
False

Дык, не сняло же кавычек!
Так, я тоже могу сказать, что в Help по Str "одна вещь недоговорена: Str снимает с выражения кавычки (как Eval)":
?Str("2")
2

Интересно поговорили,
увы, меня больше нет
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32470961
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 VIG:

Как раз IsNumeric понимает его как стринг.

2 Serge Gavrilov:

Разница между IsNumeric и Eval в том, что IsNumeric понимает только числовые константы, найденные между кавычками, а Eval - также и выражения. Но они обе анализируют внутреннее наполнение стринга .

Что касается примера с Str, то там кавычки снял дебаггер - он всегда выдает строковые значения без кавычек.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471183
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
P.S.

2 VIG:

Тот факт, что некий стринг можно преобразовать в число, зависит только от символов, входящих в него, а не от того, что это значение присвоено переменной типа Variant.

2 Serge Gavrilov:

Могу в своем примере заменить Eval на Val. Хотя она тоже отличается по своему действию от IsNumeric.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471192
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Serge Gavrilov?IsNumeric(5/3)
True
?IsNumeric("5/3")
False

Дык, не сняло же кавычек!
Именно как раз сняло. Порядок действий следующий:

5/3 -> 1.6666... -> в функцию IsNumeric передается значение типа Single или Double -> она автоматом возвращает True

"5/3" -> в функцию IsNumeric передается значение типа String -> она снимает кавычки и получает выражение 5/3 -> возвращает False, потому что это не может рассматриваться как запись числа (то, что можно вычислить 5/3 как выражение, она в отличие от Eval игнорирует)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471214
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cаныч
Во первых, с праздником!
Во вторых
Я хотел сказать , что любая строка ,которую IsNumeric воспринимает как число (возвращает True) , допустима и как аргумент функции Str()
В третьих
Я с тобой полность согласен , что полагаться на преобразования по умолчанию не стоит и (повторюсь),вариант
Код: plaintext
str(round( 5 / 3 , 2 ))
лучше чем
Код: plaintext
str(format( 5 / 3 , "#.##" ))
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471223
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
:^) Понял. Спасибо и взаимно. Согласен во всем.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471272
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто касается примера с Str, то там кавычки снял дебаггер - он всегда выдает строковые значения без кавычек.

Владимир Саныч, это опять же не так.
Можно изменить проверку, например так

Function strtest() As Variant
strtest = Str("2")
End Function

?strtest
2
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471275
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ну так это то же самое.

Str("2") - возвращает стринг
strtest = Str("2") - заносит стринг в strtest
?strtest - печатает стринг в дебаггере

Кстати:

?typename(str("2"))
String
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471277
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
?typename(strtest)
String
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471286
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу так это то же самое.
Str("2") - возвращает стринг
strtest = Str("2") - заносит стринг в strtest
?strtest - печатает стринг в дебаггере


Поразительно! Можно вообще убрать дебаггер... :)
Msgbox strtest .

автор?typename(str("2"))
String

А с этим я и не спорю, ясно, что Str возвращает
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471289
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати, в дебаггере иногда можно отличить, число ли это или его изображение стрингом. Положительные числа выводятся с пробелом слева. Если пробела нет - значит это не число. А в случае

?strtest
2

как раз нет пробела. И значит - это стринг, хотя кавычек и не видно.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471294
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, же не спорю с тем, что Str возвращает String это же понятно...

?strtest
2
А у меня пробел есть :) и в 2002 и в 97
С чего бы это?

Function strtest() As Variant
strtest = Str("-2")
End Function
?strtest
-2
MsgBox strtest
2

По моему спор увяз ...
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471300
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть убей, не пойму ,о чем вы оба продолжаете спорить. Все же выяснилось.
Были бы в Сорбонне средних веков , то спорили бы сейчас наверное о том ,сколько чертей может разместиться на кончике иглы.
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471305
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я в пылу спора начал ошибаться. Пробел действительно есть. Просто функция Str его добавляет, в отличие от CStr, к которой я привык. Но возвращает она все равно стринг.

Код: plaintext
1.
2.
3.
zzz=str( "2 ")
?zzz
  2 

Но я действительно теряю нить спора. На большинство моих постов возражений не последовало. По какому пункту у нас остались разногласия?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471310
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторХоть убей, не пойму ,о чем вы оба продолжаете спорить. Все же выяснилось.
А я и сам не помню.... так, общаемся ....
авторто спорили бы сейчас наверное о том ,сколько чертей может разместиться на кончике иглы.
А действительно, сколько?
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471311
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, str() возвращает стринг и с этим никто не спорит. Я так понимаю ,что изначально спор возник по вопросу может ли стринг быть аргументом для str() . Выяснилось ,что может (при определенных услоиях), хотя у меня лично этот факт вызывает внутренний дискомфорт :)
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471313
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Теперь осталось пройтись по всему топику и пометить, где правда, а где заблуждения...
...
Рейтинг: 0 / 0
VBA->SQL запрос -> Как запятую точкой заменить???
    #32471324
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge GavrilovА я и сам не помню.... так, общаемся .... \r
Тогда милости просим сюда , за одно и пива попьете (виртуального)\r
\r
Serge Gavrilov А действительно, сколько? \r
А это зависит от версии иглы . Для иглы А2002 -2 гигабайта чертей .
...
Рейтинг: 0 / 0
66 сообщений из 66, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA->SQL запрос -> Как запятую точкой заменить???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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