powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавление данных в базу SQL Server c помощью Адо и VBA
12 сообщений из 12, страница 1 из 1
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676527
OlgaMalina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В силу своих умений и возможностей искала решения в инете, но то что находило не работало. Вот что получилось
Код: vbnet
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.
'Добавление в базу нового клиента

Private Sub CommandButton4_Click()
Dim cmd As ADODB.Command

Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Имидж_салон1;Data Source=ADMIN-ПК\SQLOLGA"
cn.Open

r = TextBox2.Text
r1 = TextBox3.Text
r2 = TextBox4.Text
r3 = ComboBox3.List(ComboBox3.ListIndex)
r4 = TextBox5.Text
r5 = TextBox6.Text
r6 = TextBox7.Text
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmdADO.CommandText = " Insert  into Клиент (Код_клиента, Фамилия, Имя, Отчество, Размер, Рост, Параметры, Контактный_телефон) values  values (109,r,r1,r2,r3,r4,r5,r6) "




Set rst = cmd.Execute

rst.Open ("Клиент"), cn
rst.MoveFirst
Do While Not rst.EOF
rst.Fields(0).Value = 34
rst.Fields(1).Value = r
rst.Fields(2).Value = r1
rst.Fields(3).Value = r2
rst.Fields(4).Value = r3
rst.Fields(5).Value = r4
rst.Fields(6).Value = r5
rst.Fields(7).Value = r6
rst.Fields(8).Value = r7
rst.MoveNext
Loop
rst.Close
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ

Скорее всего я делаю совершенно неправильно, прошу подсказать в каком направление мне двигаться
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676538
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно (условно) добавить данные в БД двумя способами, вы пытаетесь использовать одновременно оба и при этом оба неправильно.

1) выполнить (execute) инструкцию insert на соединении с БД (recordset (rst) вам в данном случае не нужен)
- во первых, у вас два раза в инструкции встречается values
- во-вторых, что вы хотите добавить в качестве фамилии? букву "r" или все-таки содержимое переменной r? тут вам следует почитать немного основы типов данных и переменных, прежде чем начинать работу, пописать программы попроще
- в третьих, текстовые данные при записи в базу надо заключать в кавычки
- в четвертых, проверять сами данные на наличие кавычек и задваивать их, иначе кавычка в фамилии (если кто-то случайно или намеренно введет ее в текстовое поле) будет неверно интерпретирована (и в худшем случае злоумышленник сможет стереть вам всю базу)

То есть что-то типа
Код: vbnet
1.
"... values (109, """ + replace(r, """", """""") + """, """ + replace(r1....


ну взятие в кавычки и задваивание кавычек естественно логично оформить в виде отдельной функции

2) Можно открыть recordset для записи, но тогда
- запрос должен быть select, а не insert (либо просто имя таблицы)
- в конце нужен update, чтобы данные записались в базу данных

В общем, лучше не примеры ищите, которые вы не понимаете, а почитайте учебник.
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676547
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proдобавить данные в БД двумя способамиесть еще способ, он, по большому счету самый правильный, а если проект большой, то неизбежный, - для записи данных создавать хранимую процедуру (stored procedure, ХП, SP) на сервере, а с клиента передавать данные в эту процедуру. Таки образом, клиенту все равно, как и в каких таблицах будут храниться данные - этим будут заниматься ХП на сервере. Это, видимо, вам пока еще рано осваивать, но знать об этом надо.
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676548
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это также будет небесполезным
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676549
OlgaMalina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На данный момент мне нужно добавить данные просто в базу, любым способом, данных не много так как база выполнена для курсового проекта, и от приложения требуется выводить данные, и добавлять данные в базу, и еще осуществлять поиск по критериям. Но об этом буду думать потом как разберусь просто с добавлением в базу.
Shocker.Pro, спасибо за подсказки может у меня хотя с мертвой точки сдвинется
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676690
OlgaMalina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro- в четвертых, проверять сами данные на наличие кавычек и задваивать их, иначе кавычка в фамилии (если кто-то случайно или намеренно введет ее в текстовое поле) будет неверно интерпретирована (и в худшем случае злоумышленник сможет стереть вам всю базу)
Shocker.Pro, а если это не нужно, и не требуется, то получается можно без этого обойтись?

Так как вариантов нету, мучаю свою программу. Она добавляет данные, но не те( Я так понимаю, что я где то не правильно передаю значение вот код
Код: vbnet
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.
Private Sub CommandButton4_Click()
Dim cmd As ADODB.Command
Dim r, r1, r2, r3, r4, r5, r6 As String


Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Èìèäæ_ñàëîí;Data Source=ADMIN-ПК\SQLOLGA"
cn.Open

Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
r = TextBox2.Text
r1 = TextBox3.Text
r2 = TextBox4.Text
r3 = ComboBox3.List(ComboBox3.ListIndex)
r4 = TextBox5.Text
r5 = TextBox6.Text
r6 = TextBox7.Text

cmd.CommandType = adCmdText
cmd.CommandText = " Insert into Клиент(Фамилия, Имя, Отчество, Размер, Рост, Параметры, Контактный_телефон) values ('r','r1','r2','r3','r4','r5','r6')" 'Код клиента добавляю счетчиком
cmd.Execute

cn.Close

End Sub
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676739
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlgaMalina,

Вам уже подсказали, чтобы собрать SQL запрос, нужно собирать его по-частям. Например, так без проверок:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim sqlInsert As String
sqlInsert = "Insert into Клиент(Фамилия, Имя, Отчество, Размер, Рост, Параметры, Контактный_телефон) values ("
sqlInsert = sqlInsert & "'" & r & "',"
sqlInsert = sqlInsert & "'" & r2 & "',"
sqlInsert = sqlInsert & "'" & r3 & "',"
sqlInsert = sqlInsert & "'" & r4 & "',"
sqlInsert = sqlInsert & "'" & r5 & "',"
sqlInsert = sqlInsert & "'" & r6 & "')"

MsgBox sqlInsert 'Проверить корректно составленный SQL запрос
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676753
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlgaMalinaОна добавляет данные, но не теЕще раз внимательно посмотрите на свою строку. Вы просите добавить в качестве фамилии БУКВУ R. Компьютер честно делает то, что вы просите. Он не может догадаться, что вместо R вы ПОДРАЗУМЕВАЛИ (в уме) содержимое переменной R. Откуда ему знать, что это не фамилия, как вы думаете?

При этом я написал пример, но вы его проигнорировали. Не хотите replace - не надо, но переменная должна быть ВНЕ строки, а не внутри.
Код: vbnet
1.
cmd.CommandText = " Insert into Клиент(Фамилия, Имя, ...) values ('" + r + "','" + r1 + "','" + r2 +....
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676754
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlgaMalinaа если это не нужно, и не требуется, то получается можно без этого обойтись?на месте придирчивого преподавателя, я бы обязательно ввел кавычку или апостроф
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676926
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function SQLStr(ByVal str As String) As String
  If Len(str) = 0 Then
    SQLStr = "Null"
  Else
    SQLStr = "'" & Replace(str, "'", "''") & "'"
  End If
End Function

...
cmd.CommandText = "Insert into [Клиент]([Фамилия], [Имя], ...) values (" & SQLStr(r) & "," & SQLStr(r1) & "," & ...
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38676931
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога.
Вообще, пока я не не перешел на процедуры, у меня была еще более приятная функция, которая добавляла пару - имя поля/значение в нужные места, типа
Код: vbnet
1.
2.
3.
AddSQL "Фамилия", r
AddSQL "Имя", r1
AddSQL "Отчество", r2
...
Рейтинг: 0 / 0
Добавление данных в базу SQL Server c помощью Адо и VBA
    #38677833
OlgaMalina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем! У меня получилось добавить)

Shocker.Proна месте придирчивого преподавателя, я бы обязательно ввел кавычку или апостроф
Я его уговорю не делать этого. Тем более он сам говорил проектирование базы данных важнее, а здесь он вроде не обещал зверствовать)
Shocker.ProОткуда ему знать, что это не фамилия, как вы думаете?
Все плохо вообщем со мной
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Добавление данных в базу SQL Server c помощью Адо и VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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