| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как вставить в автокад с помощью VBA данные из базы данных?

Как вставить в автокад с помощью VBA данные из базы данных?

Ответ
Поиск в этой теме
Непрочитано 30.09.2009, 17:40 #1
Как вставить в автокад с помощью VBA данные из базы данных?
Kostia8_8
 
Регистрация: 30.09.2009
Сообщений: 11

Добрый день. Проблема такая: нужно с помощью VBA из бд аксес вставить столбец с данными в комбобокс. Автокад 2000i, аксес 2003 (возможно в этом и проблема). Создал форму, в ней создал комбобокс с текстбоксом. К этой же форме написал код, но не работает:


Sub UserForm1() -процедура инициализации формы
OpenDataBase ("E:\Проекты Автокада\С подключением данных\Radius.MDB")
OpenTable ("Радиусы")
Call AssignColumn(ComboBox1, "Радиус")
Call LinkField(TextBox1, "Номер")
End Sub

Private Sub ComboBox1_Change() - процедура изменения значения ComboBox1
Call SetCurrentRecord(ComboBox1)
Call RefreshField(TextBox1)
End Sub

Помогите пожалуйста, может надо как-то по другому решать эту проблему?

И еще вопрос, можно ли список значений задать в обычном txt файле, и значения от туда вставить в аналогичную форму? Если да, то как?

Заранее спасибо!
Просмотров: 5566
 
Непрочитано 30.09.2009, 20:39
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Формулировка заголовка, конечно...
Я так понимаю, что OpenDataBase, OpenTable и т.п. - некие высокоуровневые функции, так?
В результате OpenTable ты же получаешь объект RecordSet. Вот и проходи по нему последовательно, добавляя поэлементно в ListBox.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.09.2009, 21:12
#3
Kostia8_8


 
Регистрация: 30.09.2009
Сообщений: 11


Кулик Алексей aka kpblc,я только начинаю осваивать вба, и не совсем понял как надо пройти по этому объекту, не мог бы ты написать простейший пример как это сделать? а я попробую разобраться

по поводу OpenDataBase, OpenTable не знаю высокоуровневые они или нет,в мануале небольшом нашел эти функции
Kostia8_8 вне форума  
 
Непрочитано 02.10.2009, 00:04
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Уже сто лет не писал на VB(A) код для работы с БД через ADO. Ну, примерно так:
Код:
[Выделить все]
Private Sub UserForm_Activate()
Dim dbConnection As New ADODB.Connection
Dim dbRecordSet As New ADODB.Recordset
  dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=<Путь к mdb>;" & _
    "Persist Security Info=False", _
    "ИмяПользователя"
  Set dbRecordSet = dbConnection.Execute("Select * from _tblSysLayers;")
' В качестве параметра Execute указываешь свой sql-запрос
  dbRecordSet.MoveFirst
  While Not (dbRecordSet.EOF)
    Me.ListBox1.AddItem dbRecordSet.Fields("ИмяПоля").Value
    dbRecordSet.MoveNext
  Wend
  dbConnection.Close
  Set dbConnection = Nothing
End Sub
В проект необходимо подключить библиотеки:
  • Microsoft ActiveX Data Objects Library X.X
  • Microsoft ActiveX Data Objects Recordset X.X Library
  • Microsoft ADO Ext. X.X for DLL and Security
Может быть, без каких-то можно обойтись - гонять код особо некогда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.10.2009, 20:39
#5
Kostia8_8


 
Регистрация: 30.09.2009
Сообщений: 11


Кулик Алексей aka kpblc, спасибо за помощь и уделенное время! все заработало,правда сначала автокад ругался на эту конструкцию

dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=<Путь к mdb>;" & _
"Persist Security Info=False", _
"ИмяПользователя"


но после замены ее на

dbConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & "путь" & ";"


Стало норм все)
Kostia8_8 вне форума  
 
Автор темы   Непрочитано 13.10.2009, 17:03
#6
Kostia8_8


 
Регистрация: 30.09.2009
Сообщений: 11


Как решить аналогичную проблему, только извлечь данные надо не из БД аксес, а из файла, созданного при помощи самого ВБА? Например, я создал файл a.txt следующим образом:

Open "C:\a.txt" For Output As #1
Print #1, "2"; Tab(1); "3"; Tab(1); "4"


Пытаюсь из него вставить данные в комбобокс:

Dim current_string
Open "C:\a.txt" For Output As #1
Do While Not EOF(1)
Line Input #1, current_string


Здесь, видимо, нужно вставить конструкцию,с помощью которой будут добавляться записи в комбобокс, но не могу разобраться какую

Loop
Close #1


Подскажите пожалуйста, в правильном ли направлении начал составлять код и какую конструкцию нужно написать, чтобы добавить данные в комбобокс?

п.с. можно ли при помощи вба создать файл (например содержащий таблицу) для более удобного хранения списка значений, чем текстовый файл ,но не экселевский,вордовский и т.д., а стандартный visual basic'овский?

Последний раз редактировалось Kostia8_8, 13.10.2009 в 17:48.
Kostia8_8 вне форума  
 
Непрочитано 13.10.2009, 19:49
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Попробуй ComboCox.Add
А "стандартного VBшного файла", по-моему, не существует.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.10.2009, 16:37
#8
Kostia8_8


 
Регистрация: 30.09.2009
Сообщений: 11


Спасиб,там тока не Add,а AddItem
добавил строку ComboBox1.AddItem current_string
и терь все норм, из текстового файла считывает
Kostia8_8 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как вставить в автокад с помощью VBA данные из базы данных?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как в Автокад вставить свою собственную панель инструментов? АлександрМихайлович AutoCAD 10 05.03.2007 14:28
Как получить данные из диалога DCL. mmax Программирование 4 11.02.2006 22:14
Как вставить в Автокад 2002RUS рисунок.gif? dudin AutoCAD 5 26.07.2005 14:36
Создание базы данных стандартных изделий для Автокад Владимир В Прочее. Программное обеспечение 4 23.03.2005 10:36