Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись Real в SQL? / 12 сообщений из 12, страница 1 из 1
14.11.2006, 13:12
    #34126837
Boyler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Добрый день!
Извиняюсь за большой код.
Возникла проблема, в таблице 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
14.11.2006, 13:16
    #34126856
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
точку нужно ставить, как разделитель разрядов
...
Рейтинг: 0 / 0
14.11.2006, 13:31
    #34126934
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Boyler,
в таком коде неявно используется функция CStr(), зависящая от региональных настроек. Надо делать явное преобразование числа в строку функцией, не зависящей от них, например, Str$().
...
Рейтинг: 0 / 0
14.11.2006, 14:04
    #34127135
Boyler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Да, действительно, поменял региональные настройки все в норме, за что примного благодарен!
Вот только это не выход!

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

Бенедикт, я дико извиняюсь за возможное "хамство", но не могли бы вы продемонстрировать действие Str$() на данном примере?
...
Рейтинг: 0 / 0
14.11.2006, 14:50
    #34127411
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Boyler,
вместо " VALUES(" & SollwertCold_Water.Read & "," & SollwertHot_Water.Read и т. д. надо " VALUES(" & Str$(SollwertCold_Water.Read) & "," & Str$(SollwertHot_Water.Read) и т. д.
...
Рейтинг: 0 / 0
14.11.2006, 15:15
    #34127515
Boyler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
2 Бенедикт,
Огромное человеческое спасибо!
...
Рейтинг: 0 / 0
15.11.2006, 05:30
    #34128880
Boyler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Прошу прощения за назойливость!
Почитал про 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
15.11.2006, 10:04
    #34129186
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
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
15.11.2006, 11:18
    #34129461
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись Real в SQL?
Boyler,
CStr() и Str()/Str$() - разные функции. Первая - можно сказать, что элемент языка, обратите внимание, подкрашивается в редакторе, как зарезервированное слово. Она учитывает правила локализации: знак десятичного разделителя, формат отрицательного значения. Вторая всё это игнорирует, и выдаёт стандартное строковое представление, которое и применяется в VB, SQL и т.д.

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

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


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