MS Access без VBA? - PullRequest
       4

MS Access без VBA?

9 голосов
/ 23 мая 2011

Простой вопрос: возможно ли использовать C # вместо VBA для MS Access?Могу ли я расширить приложения Access с помощью оконных форм и (или) WPF?Будет ли такой сценарий иметь смысл?

Ответы [ 4 ]

9 голосов
/ 23 мая 2011

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

Кроме того, вы можете предоставить COM-интерфейс вашему приложению, чтобы вы могли использовать CreateObject для создания форм или доступа к другим функциям.

Вам будет очень трудно вернуться назад, чтобы получить доступ к формам и отчетам MSAccess из приложения C #, но это можно сделать с помощью COM или Windows Sockets).

Конечно, вы можете просто написать приложение C # GUI с базой данных MSAccess на заднем плане и не использовать никакие формы MSAccess ( NB Если можете и решите не использовать какие-либо аспекты MSAccess GUI, тогда я настоятельно рекомендую использовать другую базу данных целиком , такую ​​как SQL Lite или SQL Express).

Надеюсь, это поможет.

Обновление В ответ на Зачем кому-то это делать? Какой смысл?

База данных MsAccess ужасно масштабируется. Я видел хорошо написанное приложение Access, страдающее от повреждения и целостности данных с 4 или 5 пользователями. Предоставленная скорость и стабильность сети оказывают влияние, но на самом деле проблема заключается в доступе (приложения SqlExpress масштабируются лучше в худших сетях). См. Ограничения MsAccess

С Насколько масштабируем MS Access

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

Из статьи Inform IT , где большую часть статьи рассказывают, почему вы должны использовать MsAccess, они добавляют ( это выделение мое )

  • Масштабируемость . Доступ не обрабатывает очень большие базы данных легко. Вообще говоря, чем больше базы данных, тем более тщательно Приложение доступа должно быть дизайн.
  • Сеть . Хотя доступ многопользовательская база данных со встроенным блокировка записи и др. транзакционные особенности, это не так хорошо работать в сети

"это не работает хорошо в сети" Действительно чувак? В наше время - с распределенными вычислениями следующая большая вещь - что черт возьми, это хорошо? В общем, если приложению нужен только один пользователь на одном компьютере, то это нормально, но если есть шанс , вам нужно развернуть это для нескольких пользователей, зачем тратить время и силы на его создание? Доступ, чтобы развернуть его, вам понадобится пересобрать приложение и реальную СУБД на заднем конце.

На самом деле вам лучше не использовать Access, во-первых, , если, конечно, вы не единственный человек в мире и у вас есть единственный компьютер :)

4 голосов
/ 24 мая 2011

Ну,

, если вы не хотите использовать VBA Acces (и я предполагаю, что все связанные объекты, такие как формы, модули и т. Д.), Я думаю, вам лучше вообще не использовать Access.Храните свои данные в любом «реальном» движке баз данных, бесплатно или нет (SQL Express, MySQL и т. Д.), И создайте свой пользовательский интерфейс на своем любимом языке.

0 голосов
/ 02 февраля 2018

Конечно, вы можете сделать это.Вы можете сделать так много всего, интегрируя C # и Access.Например, вот способ загрузить GridView из Access.

using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=your .mdb file;";
            string sql = "SELECT * FROM Authors";
            OleDbConnection connection = new OleDbConnection(connetionString);
            OleDbDataAdapter dataadapter = new OleDbDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            connection.Open();
            dataadapter.Fill(ds, "Authors_table");
            connection.Close();
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Authors_table";
        }
    }
}

Взгляните на ссылку ниже, чтобы узнать больше идей о том, что можно сделать с помощью C # и Access.

https://www.codeproject.com/Articles/1060352/Using-Microsoft-Access-Database-In-Csharp-ADO-NET

Хотя ... Я должен сказать, что вы, вероятно, никогда не уйдете от VBA.Также VBA - это низко висящий фрукт.Намного проще использовать VBA с Access, чем пытаться приручить C #, чтобы сделать то же самое, что VBA сделает для вас.Кроме того, VBA, вероятно, намного более ограничен, а C # будет намного более гибким с точки зрения того, чего вы можете достичь.

0 голосов
/ 29 декабря 2016

Вы можете использовать C # для управления всем в Access, но это кажется полным излишним.Я думаю, что VBA может справиться с любыми / всеми требованиями, а с помощью VBA вы даже можете создавать собственные функции в Access, чтобы делать то, что было бы невозможно, используя только стандартные встроенные средства Access.Опять же, если вы хотите использовать C # для управления Access, да, вы, безусловно, можете это сделать.

Вот хорошая ссылка для начала работы.

http://csharp.net -informations.com / data-provider / csharp-oledb-connection.htm

Внизу этой страницы есть множество других ссылок, которые должны помочь вам во многих других вещах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...