Excel и файлы dbf, создание, чтение, редактирование

Программирование на Visual Basic for Applications
shyrik_m
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 21.06.2005 (Вт) 8:34

Excel и файлы dbf, создание, чтение, редактирование

Сообщение shyrik_m » 21.07.2005 (Чт) 7:57

Помогите научится пользоваться файлами dbf из Excel.

На данный момент приходится табличные данные сохранять в виде текстового файла с разделителями.
При обращении к данному файлу приходится програмно извлекать данные с текстового файла на лист и делать "текст по столбцам" и только потом использовать данные.

Вопрос:
Как програмно создать файл DBF, таблицу, поля, новую строку?
Как редактировать строку?
Как удалить строку?
Как организовать поиск в нужной таблице по полю или полям (как Find в Excel) и возвращать данные из другова поля найденой строки?

shyrik_m
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 21.06.2005 (Вт) 8:34

Сообщение shyrik_m » 21.07.2005 (Чт) 12:24

Кое что нашел
Создавать базу научился (пример скину, нашел в WWW)
, только не bdf а mdb Такая база тоже подходит.

кто нить знает как с ёй работать дальше?

Artdevil
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 19.07.2005 (Вт) 10:35

Сообщение Artdevil » 21.07.2005 (Чт) 15:03

пришли пожалуста как
буду благодарен

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.07.2005 (Пт) 7:04

Не пробовал так:

Подключаешь в екселе библиотеку DAO 3.51/3.6
Коннектишься к базе
МучАешь ее как хочешь? :wink:
А я все практикую лечение травами...

shyrik_m
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 21.06.2005 (Вт) 8:34

Сообщение shyrik_m » 22.07.2005 (Пт) 8:00

Подключаешь в EXCEL библиотеку DAO 3.6
(Tools > References... > Mikrosoft DAO 3.6 Object Library)

СОЗДАЙ ФОРМУ

НА ФОРМЕ РАЗМЕСТИ 5-ТЬ ТЕКСТБОКСОВ И ПЕРЕИМЕНУЙ
TextBox1 в Tex1 (в свойстве - name) и с оставшимися поступи также TextBox2 в Tex2, ...
(ЭТО ЧТОБЫ ТЕБЕ В КОДЕ НЕ КОПАТЬСЯ) ПРИМЕР ВЗЯТ ИЗ VB6 И РАБОТАЕТ ТАКЖЕ ХОРОШО И В EXCEL

Поле Tex1 создано для ввода пути и имени файла
пр: C:\Mоя база

Поле Tex2 для ввода названия таблицы

Поля Tex3, Tex2 и Tex3 - для ввода названий полей

Помести на форме кнопку Command1 (переименуй тотже CommandButton1)

Теперь осталась сама начинка!

Приведенный код занимает много места из-за содержания описания значения различных констант, это не будет лишним и дает дополнительную ясность и понимае того что творим.

Помести этот код в форму, там есть коментарии, все будет ясным и понятным.

К О Д

Private Sub Command1_Click()

Dim db As DAO.Database


If Right(Text1, 4) <> ".mdb" Then Text1 = Text1 & ".mdb"
Файл = Text1

Set db = DAO.CreateDatabase(Файл, dbLangCyrillic) '"C:\test.mdb"
'мы создали пустую базу

Dim tbd As DAO.TableDef
Set tbd = db.CreateTableDef(Text2) '"Таблица1"
'мы создали пустую таблицу



'Константа Значение Описание
'dbBigInt 16 Большой целочисленный.
'dbBinary 9 Двоичные данные.
'dbBoolean 1 Логический. Может принимать значения True/False.
'dbByte 2 Байт. Это число от 0 до 255.
'dbChar 18 Текстовый фиксированной длины. Длина устанавливается параметром size.
'dbCurrency 5 Денежный. Может содержать до 15 знаков слева от запятой и до 4 справа.
'dbDate 8 Дата и время.
'dbDecimal 20 Десятичный.
'dbDouble 7 Числовой тип двойной точности.
'dbFloat 21 С плавающей точкой.
'dbGUID 15 128 битный глобальный универсальный идентификатор.
'dbInteger 3 Целочисленный.
'dbLong 4 Длинный целочисленный.
'dbLongBinary 11 Длинные двоичные данные.
'dbMemo 12 В поле этого типа можно хранить любые данные.
'dbNumeric 19 Числовой.
'dbSingle 6 Числовой тип одинарной точности.
'dbText 10 Текстовый. Длина устанавливается параметром size. Может содержать больше 255 символов.
'dbTime 22 Время.
'dbTimeStamp 23 Дата и время.
'dbVarBinary 17 Двоичный фиксированной длины.


'Но из этих констант с базами MSAccess работают _
только dbBoolean, dbByte, dbInteger, dbLong, _
dbCurrency, dbSingle, dbDouble, dbDate, dbText, _
dbLongBinary, dbGUID и dbMemo. _
Остальные константы припасены для баз данных _
другого формата (под управлением ODBCDirect).

'Параметр size определяет размер поля.



Dim fld As DAO.Field
Set fld = tbd.CreateField(Text3, dbText, 50)
tbd.Fields.Append fld
Set fld = tbd.CreateField(Text4, dbLong, 15)
tbd.Fields.Append fld
Set fld = tbd.CreateField(Text5, dbBoolean)
tbd.Fields.Append fld
'создали поля таблицы "столбики"

'Поля созданы. Осталось создать индексы. _
Для создания индекса используется метод _
CreateIndex объекта TableDef. _
Он создаёт экземпляр объекта Index и возвращает его. _
Метод CreateIndex имеет всего один параметр - name. _
Он устанавливает имя создаваемого индекса.

Dim inx As DAO.Index
Set inx = tbd.CreateIndex("Index1")

'Добавим в индекс поля. _
Создадим поле с помощью метода CreateField объекта _
Index и добавим поле в его коллекцию Fields. _
В качестве аргумента name метода CreateField _
задаём имя имеющегося поля, которое добавляем в индекс.

Set fld = inx.CreateField("Поле2")
inx.Fields.Append fld

'Всё готово. _
Теперь нужно добавить таблицу в коллекцию TableDefs _
и дело в шляпе!

db.TableDefs.Append tbd
db.TableDefs.Refresh

'Теперь, когда база данных уже создана, _
закрываем объекты и освобождаем память.

'rs.Close
db.Close
Set rs = Nothing
Set inx = Nothing
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing

Unload Me
End Sub


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 33

    TopList