powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись Real в SQL?
12 сообщений из 12, страница 1 из 1
Запись Real в SQL?
    #34126837
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Извиняюсь за большой код.
Возникла проблема, в таблице 87 полей, все типа Real.
При попытке выполнить код понимает запятую в переменной как резделитель для запроса, т.е. "1,25, 2,45, 69,8" понимает как "1, 25, 2, 45, 69, 8"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
Set objConnection = CreateObject("ADODB.Connection")
	Set rs = CreateObject("ADODB.Recordset")


		objConnection.ConnectionString = "Driver={SQL Server};Server=DIMON\WINCC;Database=Recipe_Arh;Uid=;Pwd=;"
		objConnection.Open 
	
					strSQL = "INSERT INTO Recipe_Table (Soll_Cold_Water, Soll_Hot_Water," _
					& " Soll_Shlam, Soll_Recircl_Shlam," _
					& " Soll_Lime_1, Soll_Lime_2," _
					& " Soll_Cement_1, Soll_Cement_2," _
					& " Soll_Anhidrit, Soll_Add_Comp," _
					& " Soll_Alum_1, Soll_Alum_2," _
					& " Soll_Alum_3, Soll_Alu_Water_1," _
					& " Soll_Alu_Water_2, Soll_Alu_Water_3," _
					& " Soll_Alu_Whash_Wat_1, Soll_Alu_Whash_Wat_2," _
					& " Soll_Alu_Whash_Wat_3, Soll_Additive_1," _
					& " Soll_Additive_2, Ist_Cold_Water," _
					& " Ist_Hot_Water, Ist_Shlam," _
					& " Ist_Recircl_Shlam, Ist_Lime_1," _
					& " Ist_Lime_2, Ist_Cement_1," _
					& " Ist_Cement_2, Ist_Anhydrite," _
					& " Ist_Add_Comp, Ist_Alu_1," _
					& " Ist_Alu_2, Ist_Alu_3," _
					& " Ist_Alu_Water_1, Ist_Alu_Water_2," _
					& " Ist_Alu_Water_3, Ist_Alu_Whash_Wat_1," _
					& " Ist_Alu_Whash_Wat_2, Ist_Alu_Whash_Wat_3," _
					& " Ist_Additive_1, Ist_Additive_2," _
					& " Tol_Cold_Water, Tol_Hot_Water," _
					& " Tol_Shlam, Tol_Recircl_Shlam," _
					& " Tol_Lime_1, Tol_Lime_2," _
					& " Tol_Cement_1, Tol_Cement_2," _
					& " Tol_Anhydrite, Tol_Add_Comp," _
					& " Tol_Alu_1, Tol_Alu_2," _
					& " Tol_Alu_3, Tol_Alu_Water_1," _
					& " Tol_Alu_Water_2, Tol_Alu_Water_3," _
					& " Tol_Alu_Whash_Wat_1, Tol_Alu_Whash_Wat_2," _
					& " Tol_Alu_Whash_Wat_3, Tol_Additive_1," _
					& " Tol_Additive_2, Tim_Cold_Water," _
					& " Tim_Hot_Water, Tim_Shlam," _
					& " Tim_Recircling_Shlam, Tim_Lime_1," _
					& " Tim_Lime_2, Tim_Cement_1," _
					& " Tim_Cement_2, Tim_Anhydrite," _
					& " Tim_Add_Comp, Tim_Alu_1," _
					& " Tim_Alu_2, Tim_Alu_3," _
					& " Tim_Alu_Water_1, Tim_Alu_Water_2," _
					& " Tim_Alu_Water_3, Tim_Alu_Wash_Wat_1," _
					& " Tim_Alu_Wash_Wat_2, Tim_Alu_Wash_Wat_3," _
					& " Tim_Additive_1, Tim_Additive_2," _
					& " Plotnost__Of_Shlam, Plotnost_Rec_Shlam)" _									
					& " VALUES(" & SollwertCold_Water.Read & "," _
					& SollwertHot_Water.Read & "," & SollwertSand_Slam.Read & "," _
					& SollwertRecircling_Slam.Read & "," & SollwertLime_1.Read & "," _
					& SollwertLime_2.Read & "," & SollwertCement_1.Read & "," _
					& SollwertCement_2.Read & "," & SollwertAnhydrite.Read & "," _
					& SollwertAdditice_Components.Read & "," & SollwertAlu_Poroshok_1.Read & "," _
					& SollwertAlu_Poroshok_2.Read & "," & SollwertAlu_Poroshok_3.Read & "," _
					& SollwertAlu_Water_1.Read & "," & SollwertAlu_Water_2.Read & "," _
					& SollwertAlu_Water_3.Read & "," & SollwertAlu_Whash_Water_1.Read & "," _
					& SollwertAlu_Whash_Water_2.Read & "," & SollwertAlu_Whash_Water_3.Read & "," _
					& SollwertAdditive_1.Read & "," & SollwertAdditive_2.Read & "," _
					& IstwerteCold_Water.Read & "," & IstwerteHot_Water.Read & "," _
					& IstwerteSand_Slam.Read & "," & IstwerteRecircling_Slam.Read & "," _
					& IstwerteLime_1.Read & "," & IstwerteLime_2.Read & "," _
					& IstwerteCement_1.Read & "," & IstwerteCement_2.Read & "," _
					& IstwerteAnhydrite.Read & "," & IstwerteAdditice_Components.Read & "," _
					& IstwerteAlu_Poroshok_1.Read & "," & IstwerteAlu_Poroshok_2.Read & "," _
					& IstwerteAlu_Poroshok_3.Read & "," & IstwerteAlu_Water_1.Read & "," _
					& IstwerteAlu_Water_2.Read & "," & IstwerteAlu_Water_3.Read & "," _
					& IstwerteAlu_Whash_Water_1.Read & "," & IstwerteAlu_Whash_Water_2.Read & "," _
					& IstwerteAlu_Whash_Water_3.Read & "," & IstwerteAdditive_1.Read & "," _
					& IstwerteAdditive_2.Read & "," & ToleranzCold_Water.Read & "," _
					& ToleranzHot_Water.Read & "," & ToleranzSand_Slam.Read & "," _
					& ToleranzRecircling_Slam.Read & "," & ToleranzLime_1.Read & "," _
					& ToleranzLime_2.Read & "," & ToleranzCement_1.Read & "," _
					& ToleranzCement_2.Read & "," & ToleranzAnhydrite.Read & "," _
					& ToleranzAdditice_Components.Read & "," & ToleranzAlu_Poroshok_1.Read & "," _
					& ToleranzAlu_Poroshok_2.Read & "," & ToleranzAlu_Poroshok_3.Read & "," _
					& ToleranzAlu_Water_1.Read & "," & ToleranzAlu_Water_2.Read & "," _
					& ToleranzAlu_Water_3.Read & ", 0, 0, 0," & ToleranzAdditive_1.Read & "," _
					& ToleranzAdditive_2.Read & "," & TimeCold_Water.Read & "," _
					& TimeHot_Water.Read & "," & TimeSand_Slam.Read & "," _
					& TimeRecircling_Slam.Read & "," & TimeLime_1.Read & "," _
					& TimeLime_2.Read & "," & TimeCement_1.Read & "," _
					& TimeCement_2.Read & "," & TimeAnhydrite.Read & "," _
					& TimeAdditice_Components.Read & "," & TimeAlu_Poroshok_1.Read & "," _
					& TimeAlu_Poroshok_2.Read & "," & TimeAlu_Poroshok_3.Read & "," _
					& TimeAlu_Water_1.Read & "," & TimeAlu_Water_2.Read & "," _
					& TimeAlu_Water_3.Read & "," & TimeAlu_Whash_Water_1.Read & "," _
					& TimeAlu_Whash_Water_2.Read & "," & TimeAlu_Whash_Water_3.Read & "," _
					& TimeAdditive_1.Read & "," & TimeAdditive_2.Read & "," _
					& Shlam_Density.Read & "," & Recircling_Shlam_Density.Read & ")"

					rs.Open strSQL, objConnection
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34126856
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точку нужно ставить, как разделитель разрядов
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34126934
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boyler,
в таком коде неявно используется функция CStr(), зависящая от региональных настроек. Надо делать явное преобразование числа в строку функцией, не зависящей от них, например, Str$().
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34127135
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, поменял региональные настройки все в норме, за что примного благодарен!
Вот только это не выход!

Бенедикт, я дико извиняюсь за возможное "хамство", но не могли бы вы продемонстрировать действие Str$() на данном примере?
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34127138
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, поменял региональные настройки все в норме, за что примного благодарен!
Вот только это не выход!

Бенедикт, я дико извиняюсь за возможное "хамство", но не могли бы вы продемонстрировать действие Str$() на данном примере?
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34127411
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boyler,
вместо " VALUES(" & SollwertCold_Water.Read & "," & SollwertHot_Water.Read и т. д. надо " VALUES(" & Str$(SollwertCold_Water.Read) & "," & Str$(SollwertHot_Water.Read) и т. д.
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34127515
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Бенедикт,
Огромное человеческое спасибо!
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34128880
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения за назойливость!
Почитал про Str$(), оказалось что в моем случае функция пишется как CStr().

Далее пишу в коде:
Код: plaintext
"VALUES(" & CStr(SollwertCold_Water.Read) & "," & CStr(SollwertHot_Water.Read) & "," ..... 

В итоге все равно получаю:
Код: plaintext
VALUES(" 1 , 64  ,  1 , 83 , ..... 

Что в свою очередь понимается SQL как
Код: plaintext
VALUES(" 1 ,  64  ,  1 ,  83 , ..... 

Руки кривые, или сразу убится об стену? :-)
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34129186
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boyler
используйте параметизированный запрос
примерно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    strSql = "INSERT INTO Recipe_Table (Soll_Cold_Water, Soll_Hot_Water, Soll_Shlam, Soll_Recircl_Shlam," _
                    & " Soll_Lime_1, Soll_Lime_2, Soll_Cement_1, Soll_Cement_2," _
                    & " Soll_Anhidrit, Soll_Add_Comp, Soll_Alum_1, Soll_Alum_2," _
                    & " Soll_Alum_3, Soll_Alu_Water_1,Soll_Alu_Water_2, Soll_Alu_Water_3," _
                    & " Soll_Alu_Whash_Wat_1, Soll_Alu_Whash_Wat_2, Soll_Alu_Whash_Wat_3, Soll_Additive_1," _
                    & " Soll_Additive_2, Ist_Cold_Water, Ist_Hot_Water, Ist_Shlam," _
                    & " Ist_Recircl_Shlam, Ist_Lime_1,Ist_Lime_2, Ist_Cement_1," _
                    & " Ist_Cement_2, Ist_Anhydrite, Ist_Add_Comp, Ist_Alu_1," _
                    & " Ist_Alu_2, Ist_Alu_3,Ist_Alu_Water_1, Ist_Alu_Water_2," _
                    & " Ist_Alu_Water_3, Ist_Alu_Whash_Wat_1, Ist_Alu_Whash_Wat_2, Ist_Alu_Whash_Wat_3," _
                    & " Ist_Additive_1, Ist_Additive_2, Tol_Cold_Water, Tol_Hot_Water," _
                    & " Tol_Shlam, Tol_Recircl_Shlam,"
                    ...
                    & " ) VALUES ( " & _
                    " @p1, @p2, @p3, @p4 ...
    Dim cmd As New ADODB.Command
    Dim par As ADODB.Parameter
    
    cmd.CommandText = strSql
    
    cmd.Parameters.Append cmd.CreateParameter("p1", adDouble, adParamInput, , Value)
    cmd.Parameters.Append cmd.CreateParameter("p2", adDouble, adParamInput, , Value)
    cmd.Parameters.Append cmd.CreateParameter("p3", adDouble, adParamInput, , Value)
    cmd.Parameters.Append cmd.CreateParameter("p4", adDouble, adParamInput, , Value)

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34129461
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boyler,
CStr() и Str()/Str$() - разные функции. Первая - можно сказать, что элемент языка, обратите внимание, подкрашивается в редакторе, как зарезервированное слово. Она учитывает правила локализации: знак десятичного разделителя, формат отрицательного значения. Вторая всё это игнорирует, и выдаёт стандартное строковое представление, которое и применяется в VB, SQL и т.д.

Сколько народу лбы расшибало при переводе Access-овских баз в другой locale. Каждый первый, по сути. Не заморачивайтесь, и пишите Str$(), либо параметрический запрос.
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34131926
Фотография Boyler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выдаёт стандартное строковое представление, которое и применяется в VB, SQL и т.д.
У меня VBS может в этом дело на Str$() b Str() ругается почему-то!
Не заморачивайтесь, и пишите Str$(), либо параметрический запрос.
Я думаю это подойдет, Спасибо HandKot! Пробую дальше!

В любом случае, можно настроить локализацию, Спасибо всем огромное!
...
Рейтинг: 0 / 0
Запись Real в SQL?
    #34132147
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Boyler единственное что плохо, что в в данном случае, нужно параметры задавать в том порядке, в котором они указаны в запросе. Почему-то в Басике в АДО не используются имена параметров :-(, но за то их (имена параметров) можно и не указывать при создании параметров :-)
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись Real в SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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