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