Страница: 1 |
Страница: 1 |
Вопрос: Помогите с командой записи в таблицу MDB
Добавлено: 21.11.12 08:28
Автор вопроса:
Cramper
Фрагмент кода вставки строки с одним полем, когда вставляется ПЕРЕМЕННАЯ tmp выглядит так:
Try
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Prog\db_pr.mdb"
Conn.Open()
cmd.Connection = Conn
tmp = "Кабель 1"
cmd.CommandText = "insert into Отгрузка (Марка_кабеля) values('" & tmp & "')"
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
Finally
Conn.Close()
End Try
cmd.Dispose()
Как будет выглядеть cmd.CommandText , когда вставляются несколько переменных tmp1,tmp2,... Подскажите, пожалуйста. Спасибо.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа: Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #1
Добавлено: 21.11.12 16:43
Рекомендую посмотреть переменные привязки (параметры), а не в лоб вставлять переменную, тогда меняя просто значение параметра в цикле , не меняя строки команды, легко вставить несколько строчек.
Не знаю как это пишется в аксессе, я работаю с ораклом.
dim p as oracleparametr=cmd.createparametr
cmd.CommandText = "insert into Отгрузка (Марка_кабеля) values(:Par1)"
for i as integer=1 to 3
cmd.parameters.clear
p1.parametrname="Par1"
p1.dbType=......
p1.value="КАБЕЛЬ" & i
cmd.parameters.add(p1)
cmd.ExecuteNonQuery()
next i
как-то так для примера
Номер ответа: 2
Автор ответа: Cramper
Вопросов: 15
Ответов: 93
Профиль | | #2
Добавлено: 22.11.12 14:23
Спасибо, Сергей. НО мне нужно вставить не несколько строчек, а одну, но с заполнением нескольких полей. Т.е. команда должна выглядеть как то так
cmd.CommandText = "insert into Отгрузка (Поле1,Поле3,Поле3..) values(???,???,???....)"
вот как грамотно записать values(???,???,???....)"
Номер ответа: 3
Автор ответа: Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #3
Добавлено: 22.11.12 16:52
я бы опять писал через параметры
p1,p2,p3
cmd.CommandText = "insert into Отгрузка (Поле1,Поле3,Поле3..) values(:p1,:p2,:p3)"
Это в базе быстрее работает, так как не строится план разбора на каждый инсерт, а берется из кэша.
хотя можно их через запятую:
cmd.CommandText = "insert into Отгрузка (Поле1,Поле3,Поле3..) values(" & per1 & "," & per2 & "," & per3 & ""
Номер ответа: 4
Автор ответа: Cramper
Вопросов: 15
Ответов: 93
Профиль | | #4
Добавлено: 23.11.12 15:27
Сергей, попробовал вставить в таблицу запись. Выдается сообщение Error while inserting record on table...Ссылка на объект не указывает на экземпляр объекта. В таблице Расходы всего два поля текстового типа Кабель и КолМатериалов. Вот код:
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Try
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0ata Source=C:\Prog\db_pr.mdb"
Conn.Open()
cmd.Connection = Conn
tmp = "ТПГ-3"
tmp1 = "56,7"
cmd.CommandText = "insert into Расходы(Кабель,КолМатериалов) values(" & tmp & "," & tmp1 & ""
'cmd.CommandText = "insert into Отгрузка (Поле1,Поле3,Поле3..) values(" & per1 & "," & per2 & "," & per3 & ""
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records"
Finally
Conn.Close()
End Try
End Sub
Номер ответа: 5
Автор ответа: Cramper
Вопросов: 15
Ответов: 93
Профиль | | #5
Добавлено: 23.11.12 15:30
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Try
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0ata Source=C:\Prog\db_pr.mdb"
Conn.Open()
cmd.Connection = Conn
tmp = "ТПГ-3"
tmp1 = "56,7"
cmd.CommandText = "insert into Расходы(Кабель,КолМатериалов) values(" & tmp & "," & tmp1 & ""
'cmd.CommandText = "insert into Отгрузка (Поле1,Поле3,Поле3..) values(" & per1 & "," & per2 & "," & per3 & ""
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records"
Finally
Conn.Close()
End Try
End Sub
Номер ответа: 6
Автор ответа: Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #6
Добавлено: 23.11.12 15:40
как и где объявлена cmd? скорее всего просто не создан экземпляр класса.
Номер ответа: 7
Автор ответа: Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #7
Добавлено: 23.11.12 15:42
или какой нибудь эффукт акссесса.... эту базу я не знаю.
Номер ответа: 8
Автор ответа: Cramper
Вопросов: 15
Ответов: 93
Профиль | | #8
Добавлено: 23.11.12 16:14
Никто больше подсказать не может?