Конференція vbstreets - перегляд теми - excel і файли dbf, створення, читання, редагування
Допоможіть навчиться користуватися файлами dbf з Excel.
На даний момент доводиться табличні дані зберігати у вигляді текстового файлу з роздільниками.
При зверненні до даного файлу доводиться програмно витягувати дані з текстового файлу на лист і робити "текст по стовпцях" і тільки потім використовувати дані.
питання:
Як програмно створити файл DBF, таблицю, поля, новий рядок?
Як редагувати рядок?
Як видалити рядок?
Як організувати пошук в потрібній таблиці по полю або полях (як Find в Excel) і повертати дані з другова поля найденої рядки?
Дещо знайшов
Створювати базу навчився (приклад скину, знайшов в WWW)
, тільки не bdf а mdb Така база теж підходить.
кто нить знає як з ей працювати далі?
Підключаєш в 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