Страница: 1 | 2 | 3 | 
		
		 
			   
			 
			 
			 
			 
			
 
  
		
     
  
    
Вопрос: COM компонента под Office
     
    
Добавлено: 04.07.05 16:43
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 Dogmatic
      
       
  
Знатоки, подскажите пожалуйста, можно ли сделать COM-компонену под MS Access, на VB.NET. Если можно, то помимо ответа, было бы здорово получить примерчик. Если у вас есть какие-то компоненты написанные вами и подходящие под MS Office 2000 или 2003sp2. Например под Word, если нету под Access. В общем под любой, мне главное разобраться, дальше свой напишу. 
 
    
Слышал что-то про COM+компоненты, если это похоже на то, что мне надо(вроде как это замена для СОМ компонент в VB.NET), то напишите про них, с примером опять же.
Примеры(проджекты) можно кинуть сюда: dogmatic@bk.ru
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 37
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #1
       
Добавлено:  04.07.05 18:04
       
    
       
  
Что имеется в виду под COM-компонентой под MS Access?
 
    
Access сам по себе законченный COM-объект.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #2
       
Добавлено:  05.07.05 11:28
       
    
       
  
Спасибо за ответы.
 
    
В связи с возникшими вопросами, поясняю...
Нужно написать приложение, которое сможет интегрироваться в БД MS Access, например в виде макроса, точнее запуск по кнопке макроса, а в макросе запускается приложение. Грубо говоря, это будет визуализация самой БД. Сначало планировалось написать на VB6, соответственно в виде COM компоненты. Потом решили написать на .NET, так как идет переход на эту техноогию. Я, соотвественно, тока чичас начал спешно изучать VB, вообще, до этого тока на VC++ и Delphi писал, вот и хотелось бы примерчик, что это вообще такое COM компонента в VB.NET.
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #3
       
Добавлено:  05.07.05 13:45
       
    
       
  
Ы...
 
    
Значит так...
Открываем VB .NET (раз уж прямо на нём охота), идём в References, на вкладке COM ищем Microsoft Access X.X Object Library, подключаем и управляем Access'ом.
Без написания каких-то там компонент зачем-то...
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #4
       
Добавлено:  05.07.05 14:02
       
    
       
  
До этого места, я в книжках сразу дорылся  
    
 Это единственное, что в них пишется про COM, но штука в том, что я из Access-а должен управлять. Моя бы воля, я бы просто пихнул макрос, запускающий .ехе приложение, в котором сответственно рисуется все что хочешь, но пока я еще не убедил шефа в правильности этого решения. Очередное спасибо за ответ.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #5
       
Добавлено:  05.07.05 14:09
       
    
       
  
Из Access-а управлять чем?
 
    
Где основной код?
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #6
       
Добавлено:  05.07.05 15:09
       
    
       
  
Ы...
 
    
Код еще тока пишется, я за это взялся в понедельник, пока пытаюсь понять как вообще запускать приложение. 
А так объясняю еще раз, есть уже БД в Access-е, она уже написана, работает, все в ней хорошо, много всяких функций красивых, а обслуживает она, например, склад вещей. Мне надо визуализировать (просто нарисовать) этот склад, при этом как нарисовать его я себе уже неплохо представляю. Этот план будет вызываться из этой самой БД, написанной в Access-е, в нем там можно будет всякие функции вызывать, навроде показать товар и все такое, + может быть наилучшие маршруты показывать по загрузке-разгрузке.
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #7
       
Добавлено:  05.07.05 16:03
       
    
       
  
А... гм... хм... дык.
 
    
Почему бы не написать весь код непосредственно в Access, без привлечения всякой фигни?
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #8
       
Добавлено:  05.07.05 16:14
       
    
       
  
Гыг, требуется dll-ка которая буит работать и в 2000 и в 2003 Access-е. Ее подключаем как ActiveX - объект и все классно, это, то что требуетсЯ, а разбираться надо мне... Вот все, что я могу на это сказать.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа:
 ⊗WaX⊗
![]()
![]()
![]()
Вопросов: 26
Ответов: 325
      
 Web-сайт:  
 Профиль |  | #9
      
Добавлено:  05.07.05 16:31
       
    
       
  
Написать Com комплнент на >NET можно, но что ты хочешь чтобы он делал.
 
    
Если ты хочешь чтобы база была в Access а форма для работы с ней была написана на .net? 
Тогда никаких компонентов создавать не нужно, скачай примеры по работе с ado.net с этого сайта.
Или любую книгу открой по .net примеров с Access масса
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #10
       
Добавлено:  05.07.05 17:13
       
    
       
  
Вообще я хочу получить готовый пример COM компоненты, с его кодом, который может быть вставлен в пакет Office 2003, чтобы по аналогии написать свой. 
 
    
По поводу вопроса, уточняю конкретнее: на .net должна быть написана не форма для работы, а всего лишь компонента базы, чтобы функции этой компоненты вызывались из самого БД (БД окныбовенное, написанное в Access-е). В общем обычный СОМ нужен, например в виде dll. Делать форму под базу на .net уже не рационально, так как база большая и мощная, а простой интерфейс, наружний тоже не получится, так как это не SQL-server. Вывод, нужна не форма или оболочка, а компонент, интегрированный в среду самой базы, в данном случае MS Access-а.
Спасибо за ответы
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #11
       
Добавлено:  05.07.05 17:56
       
    
       
  
Ну зачем, зачем писать COM на .NET...
 
    
Зачем вообще писать что-то внешнее, если можно весь функционал сделать частью базы???
		
	  
			 
	
		 
    
       
    
Номер ответа: 12 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #12
       
Добавлено:  05.07.05 23:49
       
    
       
  
Раз сказано, значит надо сделать... По-моему с руководством не всегда спорят, это как раз тот случай... А мне всего лишь нужен пример, если такого не существует в природе, то мне нужен именно такой ответ, тогда я смогу уговорить делать на VB6
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа:
 GSerg
![]()
![]()
Вопросов: 0
Ответов: 1876
      
 Профиль |  | #13
       
Добавлено:  06.07.05 04:12
       
    
       
  
Вот в природе, например, существует утконос. Но это же не повод...
 
    
Руководство же, по всей видимости, не понимает своей роли. Руководство должно ставить задачу - что должно быть сделано (например, программа с такими-то функциями). А как она должна быть сделана - должен выбирать ты, как специалист в области программирования.
		
	  
			 
	
		 
    
       
    
Номер ответа: 14 
      
Автор ответа:
 ⊗WaX⊗
![]()
![]()
![]()
Вопросов: 26
Ответов: 325
      
 Web-сайт:  
 Профиль |  | #14
      
Добавлено:  06.07.05 06:57
       
    
       
  
Gserg конечно же прав с начальством спорить не нужно – нужно выслушать и сделать по своему, но раз надо – держи.
 
    
Public Class MyNewClass
Public MyCounter As Integer
Public ReadOnly myGreating As String
Private myPrivate As Long=0
Public Sub New()
myGreating=”Hello World”
myCounter=0
End Sub
Public Function AddCounter() As String
myCounter+=1
Return myCounter.ToString
End Function
End Class
Затем в Solution Explorer кликни правой кнопкой по названию проекта выбери properties 
Найди там закладку Strong names. 
Поставь галочку Generate strong name using и выбери “key file“/
Нажми на кнопку Generate key
В разделе Configuration properties в элементе build поставь галочку в Register for the COM Interrupt.
Все это можно сделать и в ручную с помощью консольных команд sn gacutil и regasm но об этом в следующем номере 
))
Вызывается компонент так же как обычный COM компонент.
cya WaX 
		
	  
			 
	
		 
    
       
    
Номер ответа: 15 
      
Автор ответа:
 Dogmatic
![]()
![]()
Вопросов: 1
Ответов: 21
      
 Профиль |  | #15
       
Добавлено:  06.07.05 11:25
       
    
       
  
Наконецто  
    
. Спасибки и тебе GSerg, и тебе WaX, хотя тут конечно половина оффтопик, по поводу моего начальства, но все-таки ответ я получил. Сейчас буду пробывать. Еще раз Tnx.