Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
В 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).
А вот импорт / экспорт ...

Сообщение было отредактировано: 7 мар 21, 15:21
7 мар 21, 15:28    [22290907]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
Vakho,

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

PS. Выложи код линковки на C# ( на нем писал ранее?)

Сообщение было отредактировано: 7 мар 21, 23:55
8 мар 21, 00:00    [22291011]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
court
Member

Откуда:
Сообщений: 2271
Vakho,

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

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

INSERT  INTO dbf1
SELECT *
FROM  [dBASE III;DATABASE=z:\docs\].[dbf2.dbf];
8 мар 21, 10:33    [22291057]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
Сергей Лалов,
Импорт - в базу данных на 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).

К сообщению приложен файл (WinRAR.rar - 129Kb) cкачать
8 мар 21, 11:33    [22291085]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
Сергей Лалов,
Архив с архивами вспомогательных методов общего пользования.
- ErrorsDescriptionClasses.rar
- PublicFunctionsAndSubs.rar

К сообщению приложен файл (WinRAR_2.rar - 76Kb) cкачать
8 мар 21, 11:36    [22291086]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
Сергей Лалов,
Смотрите также ссылки в файле.

К сообщению приложен файл (ReadMeMDAC.txt - 2Kb) cкачать
8 мар 21, 11:57    [22291092]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
я з@срал свой Vs этими файлами))

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


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

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



и усё в общем то
8 мар 21, 14:09    [22291147]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
Сергей Лалов,

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

Что не так ?


Прошу пардону, недоглядел.

Сообщение было отредактировано: 8 мар 21, 15:10
8 мар 21, 15:14    [22291184]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
Vakho,

Та не могет такого быть, у вас дружественная среда vb. Вы можете в импорт библиотек напихать все что угодно.
Вам не надо ODBC вообще - вы заставляете сам аксесовский файл выполнить код внутри себя. То есть используете API самого аксесовского файла и его среды.
8 мар 21, 15:44    [22291199]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
Нашел пример реализации даже :

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. Это именно то,что вам нужно.

Сообщение было отредактировано: 8 мар 21, 16:01
8 мар 21, 16:03    [22291203]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Vakho
Member

Откуда: ---------
Сообщений: 422
Сергей Лалов,
Спасибо, у меня всё заработало ещё до ваших последних двух сообщений.
Просто я не до конца всё проверил.
Ни OLEDB, ни ODBC, ни ADO / ADOX, ничего из этого не понадобилось.

Сообщение было отредактировано: 8 мар 21, 16:46
8 мар 21, 16:51    [22291218]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
Vakho,

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

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


Сообщение было отредактировано: 8 мар 21, 16:52
8 мар 21, 16:58    [22291220]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
court
Member

Откуда:
Сообщений: 2271
Сергей Лалов
Vakho,

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

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
а что, в дот.нете не принято "обнулять" объекты ?
я не в курсе, вдруг что ... :)
8 мар 21, 18:32    [22291237]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
court,
да ,крайне желательно хлопнуть, но он сам уже разберется с этим делом .
8 мар 21, 18:39    [22291239]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
vmag
Member

Откуда: MP
Сообщений: 3964
Сергей Лалов,

мдя, студия прикольная штучка, я тут с vb-net недавно потыкался пару часов на бесплатной коммюнити 2019,
впечатлило... если щёки не надувать, выбрать фрейворк 2, то после Release небольшой .exe файл, на любой
машине работает без проблем, даже если на ней вообще ничего не установлено кроме ОС...
Я б так сказал - студия с vb-net это следующая ступень для акцесника в своем развитии...
Ну так скажем модуль в модуль закопипастил, потом максимум 5 % подшаманил, и в путь...
Правда с лету не понял что там в ней с привычными отчетами и как, но можно сразу выводить в Эксель и не парится особо...
8 мар 21, 20:41    [22291273]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
vmag,

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

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

VS у меня живет на компе ради сборки мобильных приложений. Там есть Xamarin, где человек, который знает синтаксис Java или C++, или C# (базового уровня достаточно) сможет написать сразу приложение ,которое можно скомпилировать и под андроид и под айфон. Я поэтому за него держусь.
8 мар 21, 22:01    [22291287]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 2087
PS и кстати VS community edition (она покрывает 99.9% потребности нашего брата формошлепа и базодела) абсолютно бесплатная в отличии от аксесса. И если писать приложения и иметь доход ваш/компании в год меньше 1млн долларов и количество разрабов <5ти, то вам не надо ничего отчислять в MS.
8 мар 21, 22:47    [22291300]     Ответить | Цитировать Сообщить модератору
 Re: MS ACCESS 2003: Как в Visual Studio запрограммировать Import и Export таблиц  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 613
Vakho, для вашей задачи нет нужды поднимать приложение Access. Запрос вида Select... Into... с правильной строкой подключения выполнит и импорт, и экспорт. Для текстовых файлов может понадобиться спецификация в файле Schema.ini.
9 мар 21, 16:57    [22291867]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить