Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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.0;Data 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.0;Data 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
Никто больше подсказать не может?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам