Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц / 18 сообщений из 18, страница 1 из 1
07.03.2021, 15:28
    #40051426
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
В MS ACCESS 2003 есть возможность вручную импортировать (Import...) и
экспортировать (Export...) таблицы различного формата:
dBASE (III, IV, 5), EXCEL (xls), CSV, TXT ...

А как при помощи Visual Studio 2010 Ultimate можно запрограммировать
эти процессы ? То есть существует некоторое десктоп приложение,
созданное при помощи Visual Studio 2010 Ultimate, а также существует
некоторая MS ACCESS-база данных. Щёлкнули по кнопке - импортируется,
например, DBF-файл в некоторую таблицу. Другая кнопка - таблица
экспортируется в DBF-файл.

Спасибо.

PS. Я при помощи Visual Studio 2010 Ultimate, ADO / ADOX
делал присоединения ( Linked Tables ), а так же создавал запросы ( queries ).
А вот импорт / экспорт ...
...
Рейтинг: 0 / 0
08.03.2021, 00:00
    #40051499
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Vakho,

Тут вам никто не ответит, потому что непонятно сформулировал вопрос. Откуда и куда импорт должен идти?

PS. Выложи код линковки на C# ( на нем писал ранее?)
...
Рейтинг: 0 / 0
08.03.2021, 10:33
    #40051529
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Vakho,

самый простой и "ленивый" вариант, это делать через COM-объект Access.Application и его метод DoCmd.TransferDatabase
Но для этого нужно будет что бы был установлен Акс на "целевой машине"
А это, наверняка, слишком "жирное" требование :)

Тогда, "путь самурая" - запросы:
https://stackoverflow.com/questions/11231454/copying-to-from-dbase-data-using-access
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
INSERT INTO [dBASE III;DATABASE=z:\docs\].[dbf2.dbf]
SELECT *
FROM dbf1;

INSERT  INTO dbf1
SELECT *
FROM  [dBASE III;DATABASE=z:\docs\].[dbf2.dbf];
...
Рейтинг: 0 / 0
08.03.2021, 11:33
    #40051543
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,
Импорт - в базу данных на MS ACCESS. Например, у вас есть
файл MyFile.DBF. Вы его можете импортировать в таблицу
MyFile, которая создаётся в процессе импортирования, и
в которую переносятся данные из MyFile.DBF.
Экспорт - из таблицы в файл. Например, есть таблица
MyTable. Я могу экспортировать её в файл, например, MyTable.DBF.

Всё это можно сделать вручную средствами MS ACCESS.

Всё это так же можно сделать при помощи VBA, который встроен в
MS ACCESS. Но я не хочу использовать VBA при всём моём к нему уважении.

Я хочу написать десктоп приложение, которое, грубо говоря,
будет "подавть команды" MS ACCESS-у через штатные "соединители":
либо ODBC, либо OLEDB, либо ADO / ADOX, либо ...

По вашей просьбе прикрепляю архив с программами линковки.
Написаны в Visual Studio 2010 ULTIMATE на Visual Basic-е
в среде Windows XP SP3. Использовался MS ACCESS 2003.
Перебросить их в C# наверно будет не трудно.
Структура архива WinRAR:
- папка MSAccessLinkedTablesManagement - работа с Linked Tables.
- папка MSAccessQueriesManagement - работа с View (Query).
Кроме этого отдельно высылаю:
ErrorsDescriptionClasses.rar, PublicFunctionsAndSubs.rar - вспомогательные методы
общего пользования. См. ниже.

Для нормальной работы методов в Windows XP предварительно должен быть установлен
Microsoft Data Access Components (MDAC) 2.8 Software Development Kit, загрузка
которого может быть осуществлена отсюда:
https://www.microsoft.com/en-us/download/details.aspx?id=21995

Классы LinkedTables и View использует
- ADOX (Microsoft ActiveX Data Objects Extensions 2.8 for DDL and Security);
- ADODB.
Для этого должны быть установлены ссылки (Propertie / References) на следующие
библиотеки:
- Microsoft ActiveX Data Objects 2.8 Library (тип библиотеки - COM);
- Microsoft ADO Ext. 2.8 for DDL and Security (тип библиотеки - COM).
...
Рейтинг: 0 / 0
08.03.2021, 11:36
    #40051544
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,
Архив с архивами вспомогательных методов общего пользования.
- ErrorsDescriptionClasses.rar
- PublicFunctionsAndSubs.rar
...
Рейтинг: 0 / 0
08.03.2021, 11:57
    #40051549
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,
Смотрите также ссылки в файле.
...
Рейтинг: 0 / 0
08.03.2021, 14:09
    #40051596
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
я з@срал свой Vs этими файлами))

В общем смотрите, самый простой способ. Так как вы пишите в vb, вам нужно в проект импортировать библиотеки и среду исполнения ms access . Так как вы подключились ранее к аксессу там, все они у вас есть.
Что вам нужно сделать, из проекта VS подключиться к возможностям VBA акссесс, библы аксесса, самого аксессовского файла и уже при помощи него (среды MS Access) выполнить простые команды типа :
docmd.transferdatabase acimport
или
docmd.transferdatabase acexport
именно они отвечают за импорт и экспорт, аналог тех функций которые вы делаете руками в самом аксессе,как писали ранее.


Какой код должен работать в VS после подключения библиотек:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
dbFile = "С:\путь к файлу аксесс\storage.accdb"
Set acApp = CreateObject("Access.Application") ' создаем объект типа акссесс
acApp.OpenCurrentDatabase dbFile ' открываем его
Set acDoCmd = acApp.DoCmd ' даем ему ссылку на инициализацию команды docmd
'выполняем команду импорта или экспорта
acDoCmd.TransferSpreadsheet  acimport' здесь после набор констант, которые более гибко позволят настроить импорт/или экспорт
acApp.Quit ' закрываем объект




и усё в общем то
...
Рейтинг: 0 / 0
08.03.2021, 15:14
    #40051626
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,

Visual Studio 2010 не видит метод CreateObject(),
хотя я подключил: ADO, ADOX. На всякий случай подключил OLEDB, ODBC.

Что не так ?

Прошу пардону, недоглядел.
...
Рейтинг: 0 / 0
08.03.2021, 15:44
    #40051640
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Vakho,

Та не могет такого быть, у вас дружественная среда vb. Вы можете в импорт библиотек напихать все что угодно.
Вам не надо ODBC вообще - вы заставляете сам аксесовский файл выполнить код внутри себя. То есть используете API самого аксесовского файла и его среды.
...
Рейтинг: 0 / 0
08.03.2021, 16:03
    #40051644
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Нашел пример реализации даже :

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Access
Imports Microsoft.VisualBasic
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Windows.Forms

Dim acApp As New Microsoft.Office.Interop.Access.Application

        acApp.OpenCurrentDatabase("D:\S\Test\Test.mdb", False)
        acApp.DoCmd.TransferDatabase(Microsoft.Office.Interop.Access.AcDataTransferType.acImport, _
                                     "dBASE III", "D:\S\Test\", Microsoft.Office.Interop.Access.AcObjectType.acTable, _
                                     "Test.dbf", "Job")


        acApp.DoCmd.OpenQuery("Query1") ' Updates Data
        acApp.DoCmd.OpenQuery("Query2") ' Creates Table
        acApp.DoCmd.OpenQuery("Query3") ' Appends Data to New table
        acApp.DoCmd.OpenQuery("Query4") ' More updates to new table

        acApp.DoCmd.TransferDatabase(Microsoft.Office.Interop.Access.AcDataTransferType.acExport, "dBASE IV", _
                                     "D:\S\Test\", Microsoft.Office.Interop.Access.AcObjectType.acTable, "NewJob", _
                                     "NewDBF")

        acApp.CloseCurrentDatabase()



PS. Это именно то,что вам нужно.
...
Рейтинг: 0 / 0
08.03.2021, 16:51
    #40051654
Vakho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,
Спасибо, у меня всё заработало ещё до ваших последних двух сообщений.
Просто я не до конца всё проверил.
Ни OLEDB, ни ODBC, ни ADO / ADOX, ничего из этого не понадобилось.
...
Рейтинг: 0 / 0
08.03.2021, 16:58
    #40051656
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Vakho,

Да, нормально, можно еще упростить затестил только что в VS (вообще не надо библиотек никаких подключать в импорт):
Данный код берет таблицу из аксесс и экспортирует ее в формат excel у меня на рабочем столе.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim dbFile As String
        Dim acApp As Object
        Dim acDoCmd As Object
        dbFile = "C:\Users\SL\Desktop\storage.accdb"
        acApp = CreateObject("Access.Application") ' создаем объект типа акссесс
        acApp.OpenCurrentDatabase(dbFile) ' открываем его
        acDoCmd = acApp.DoCmd ' даем ему ссылку на инициализацию команды docmd
        'выполняем команду импорта или экспорта
        acDoCmd.Outputto(0, "t_test", "Excel Workbook (*.xlsx)", , True) 
        acApp.Quit ' закрываем объект
    End Sub
End Class
...
Рейтинг: 0 / 0
08.03.2021, 18:32
    #40051667
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов
Vakho,

Да, нормально, можно еще упростить затестил только что в VS (вообще не надо библиотек никаких подключать в импорт):
Данный код берет таблицу из аксесс и экспортирует ее в формат excel у меня на рабочем столе.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim dbFile As String
        Dim acApp As Object
        Dim acDoCmd As Object
        dbFile = "C:\Users\SL\Desktop\storage.accdb"
        acApp = CreateObject("Access.Application") ' создаем объект типа акссесс
        acApp.OpenCurrentDatabase(dbFile) ' открываем его
        acDoCmd = acApp.DoCmd ' даем ему ссылку на инициализацию команды docmd
        'выполняем команду импорта или экспорта
        acDoCmd.Outputto(0, "t_test", "Excel Workbook (*.xlsx)", , True) 
        acApp.Quit ' закрываем объект
    End Sub
End Class

а что, в дот.нете не принято "обнулять" объекты ?
я не в курсе, вдруг что ... :)
...
Рейтинг: 0 / 0
08.03.2021, 18:39
    #40051669
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
court,
да ,крайне желательно хлопнуть, но он сам уже разберется с этим делом .
...
Рейтинг: 0 / 0
08.03.2021, 20:41
    #40051686
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Сергей Лалов,

мдя, студия прикольная штучка, я тут с vb-net недавно потыкался пару часов на бесплатной коммюнити 2019,
впечатлило... если щёки не надувать, выбрать фрейворк 2, то после Release небольшой .exe файл, на любой
машине работает без проблем, даже если на ней вообще ничего не установлено кроме ОС...
Я б так сказал - студия с vb-net это следующая ступень для акцесника в своем развитии...
Ну так скажем модуль в модуль закопипастил, потом максимум 5 % подшаманил, и в путь...
Правда с лету не понял что там в ней с привычными отчетами и как, но можно сразу выводить в Эксель и не парится особо...
...
Рейтинг: 0 / 0
08.03.2021, 22:01
    #40051692
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
vmag,

Да, точно. Ну я бы не стал в VS продолжать писать в VB. VB и VBA это могилка из которой надо выбираться:)
Лучше сразу в C#.

У меня был кривой путь, сначала я подучил Java, а потом увидел что C# очень похож , и гораздо более дружелюбный.
Собрал пару простеньких десктопных приложений на C# Windows Forms + mysql (надо сказать что там есть все , и гриды,и кнопки и многое чего другое. И можно обработать поведение вообще на любой вкус,любого контрола. И функционал побогаче чем в офисном пакете.)
Отчеты там тоже есть ,они входят в большущий блок Reporting Service. Там можно их делать динамическими, с фильтрами,комбобоксами, выбором срезов. Я туда не совался. Слишком обширная тема.

VS у меня живет на компе ради сборки мобильных приложений. Там есть Xamarin, где человек, который знает синтаксис Java или C++, или C# (базового уровня достаточно) сможет написать сразу приложение ,которое можно скомпилировать и под андроид и под айфон. Я поэтому за него держусь.
...
Рейтинг: 0 / 0
08.03.2021, 22:47
    #40051702
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
PS и кстати VS community edition (она покрывает 99.9% потребности нашего брата формошлепа и базодела) абсолютно бесплатная в отличии от аксесса. И если писать приложения и иметь доход ваш/компании в год меньше 1млн долларов и количество разрабов <5ти, то вам не надо ничего отчислять в MS.
...
Рейтинг: 0 / 0
09.03.2021, 16:57
    #40052008
MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц
Vakho, для вашей задачи нет нужды поднимать приложение Access. Запрос вида Select... Into... с правильной строкой подключения выполнит и импорт, и экспорт. Для текстовых файлов может понадобиться спецификация в файле Schema.ini.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]