powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Recodset - десятичная точка
7 сообщений из 7, страница 1 из 1
Recodset - десятичная точка
    #38279136
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем вот такой вот, заполненный набор данных:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
With rsBuild
 .CursorLocation = adUseClient
 .Fields.Append "num_ls", adDouble, 8
 .Fields.Append "num_dog", adVarWChar, 7, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "datdog", adDate, 8, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "fam", adVarWChar, 30, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "im", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "ot", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "nname", adVarWChar, 30
 .Fields.Append "n_dom", adVarWChar, 20, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "n_kv", adVarWChar, 4, attrib:=adFldIsNullable + adFldUpdatable
 .Fields.Append "crsumma", adDouble, 8
 .Fields.Append "prsumma", adDouble, 8
 .Fields.Append "kolmes", adDouble, 8
 .Open
' Здесь действия над таблицей
 .Close
End With



Запрос возвращает в эту структуру для поля "prsumma" числа в формате с десятичной запятой,
а мне надо, чтобы в этом поле была десятичная точка!

Как сделать красиво?
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279143
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет место непонимание типов данных.

Поле "prsumma" является ЧИСЛОМ, а следовательно он не возвращает ни точку, ни запятую (как символ). Проблема исключительно в дальнейшем форматировании этого числа, то есть в том, как ты его выводишь и куда. Но именно этот момент ты не отразил, поэтому посоветовать ничего нельзя.
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279184
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Просто не увидел в этом ничего особенного... Беру значение поля, формирую строку - и в файл! И в этом файле моя сумма с десятичной точкой.
Я понимаю, что через работу со строками можно заменить разделитель,
но может как-то красивше можно?

Set f = CreateObject("Scripting.FileSystemObject").CreateTextFile("myfile.txt", True)

Вот исходный кусок кода:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Do Until (rsBuild.EOF)
 str_rsBuild = "'" & rsBuild("crsumma") & " " & rsBuild("prsumma") & "'"
 f.Write str_rsBuild & vbCrLf
 rsBuild.MoveNext
Loop

Set rsBuild = Nothing
Set f = Nothing



А так, если через строки...

Код: vbnet
1.
2.
3.
4.
5.
Do Until (rsBuild.EOF)
 str_rsBuild = "'" & GETWORDNUM(rsBuild("prsumma"),1,',') & "." &  GETWORDNUM(rsBuild("prsumma"),2,',')" & rsBuild(crsumma") & "'"
 f.Write str_rsBuild & vbCrLf
 rsBuild.MoveNext
Loop



Это примерно. Скорее всего еще будет несоответствие типов, и придется использовать STR() и бороться с её лишним ведущим пробелом под знак числа при склейке строк...
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279185
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду, что в файл число пишется с десятичной ЗАПЯТОЙ. Жаль на форуме нет редактирования.
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279200
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShizukuПросто не увидел в этом ничего особенного... Беру значение поля, формирую строку - и в файл!Ты не формируешь строку. Ты просто отдаешь ЧИСЛО на откуп автоматического преобразования в текст. А это преобразование будет зависеть от региональных настроек вывода чисел, которые ты сделал в Панели управления в виндах и на разных компьютерах будет по-разному.

ShizukuЭто примерно. Скорее всего еще будет несоответствие типов, и придется использовать STR() и бороться с её лишним ведущим пробелом под знак числа при склейке строк...Зачем? есть функция Format$, которая сделает тебе все, что нужно.
Несоответствие типов у тебя сейчас, когда ты в одну кучу валишь и строки и числа
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279241
Shizuku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Не знаю... Что-то мне не удается с помощью format$ хоть как-то на разделитель повлиять.

Вот такой ход конем, тоже не помог:

Код: vbnet
1.
2.
3.
4.
5.
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ""
.UseSystemSeparators = False
End With



Точнее, помог как бы... Но не в том месте. На лист теперь выводит в формате с точкой, а в файл - по прежнему с запятой
...
Рейтинг: 0 / 0
Recodset - десятичная точка
    #38279252
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShizukuТочнее, помог как бы... Но не в том месте.естественно, на неявное преобразование типов эти параметры никак не влияют.

Вообще, действительно, самое простое будет это Trim(Str(rsBuild("prsumma")))
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Recodset - десятичная точка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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