Нужен совет по слиянию таблиц базы данных - PullRequest
1 голос
/ 20 марта 2020

Я создал инструмент, который в настоящее время использует Excel (VBA), однако я хотел бы сделать его независимым от Excel, поскольку могут быть проблемы с пакетами обновлений Excel и т. Д. c. В основном, чтобы устранить еще один фактор, который может go ошибаться.

Мое текущее приложение Excel:

  1. Импортирует две таблицы базы данных (клиенты) в две разные рабочие таблицы sheet1 и sheet2
  2. Объединение этих двух таблиц с другой sheet3 путем сравнения столбцов 2 (Name) и 6 (Postanumber)
  3. Если есть дубликаты (в обоих из них частично одни и те же клиенты) VBA код вводит только одно значение в sheet3
  4. После того, как sheet3 готово, я выполняю foreach l oop для sheet3 для экспорта всех клиентов в другую систему

Я начал с кода C#, который может подключаться к базе данных и получать всех клиентов из обеих таблиц путем их объединения.

Начал с DataGrid, чтобы получить представление:

private Task<DataView> GetDataAsync()
{
    return Task.Run(() =>
    {

        string connectionStringDE = "Driver={Pervasive ODBC Client Interface};ServerName=DE875;dbq=@DEDBFS;Uid=DEUsername;Pwd=DEPassword;";
        string queryStringDE = "select NRO,NAME,NAMEA,NAMEB,ADDRESS,POSTA,POSTN,POSTADR,COMPANYN,COUNTRY,ID,ACTIVE from COMPANY";
        string connectionStringFR = "Driver={Pervasive ODBC Client Interface};ServerName=FR875;dbq=@FRDBFS;Uid=FRUsername;Pwd=FRPassword;";
        string queryStringFR = "select NRO,NAME,NAMEA,NAMEB,ADDRESS,POSTA,POSTN,POSTADR,COMPANYN,COUNTRY,ID,ACTIVE from COMPANY";

        DataTable dataTable = new DataTable("COMPANY");
        // using-statement will cleanly close and dispose unmanaged resources i.e. IDisposable instances
        using (OdbcConnection dbConnectionDE = new OdbcConnection(connectionStringDE))
        {
            dbConnectionDE.Open();
            OdbcDataAdapter dadapterDE = new OdbcDataAdapter();
            dadapterDE.SelectCommand = new OdbcCommand(queryStringDE, dbConnectionDE);

            dadapterDE.Fill(dataTable);

        }
        using (OdbcConnection dbConnectionFR = new OdbcConnection(connectionStringFR))
        {
            dbConnectionFR.Open();
            OdbcDataAdapter dadapterFR = new OdbcDataAdapter();
            dadapterFR.SelectCommand = new OdbcCommand(queryStringFR, dbConnectionFR);

            var newTable = new DataTable("COMPANY");
            dadapterFR.Fill(newTable);

            dataTable.Merge(newTable);

        }

        return dataTable.DefaultView;
    });
}

Однако из-за недостатка знаний я не очень уверен, какой метод следует использовать в C# для хранения всех данных (sheet3, существует более 1000 записей) перед экспортом в другую систему с foreach? Должен ли я создать локальную базу данных или можно использовать список? Я полагаю, мне не следует импортировать все значения из двух таблиц в два разных списка / таблицы базы данных и сравнивать / объединять их после другого (как я делаю в моей текущей настройке Excel VBA), но я могу выполнить это действие при подключении, объединить и присвоить списку / таблице базы данных?

1 Ответ

1 голос
/ 20 марта 2020

Однако из-за недостатка знаний я не уверен, какой метод мне следует использовать в C# для хранения всех данных (на листе 3, существует более 1000 записей) перед экспортом в другую систему с помощью foreach?

«То, что я должен использовать», является субъективным / основанным на мнении, и здесь невозможно ответить. Было бы справедливо сказать, что все, что вы можете найти разумное руководство, такое как наборы generi c или наборы данных / datatables, сможет легко обрабатывать набор данных этого небольшого

Если я создам локальную базу данных или можете использовать список?

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

Полагаю, мне не следует импортировать все значения из двух таблиц в два разных списка / таблиц базы данных и сравнить / объединить их после другого

Я не вижу причин, почему вы не должны

, но можете выполнить это действие при подключении, объединение и присвоение списку / таблице базы данных?

Конечно, можно объединить два набора данных, загрузив один из них в базу данных, где находится другой, и имея базу данных, выполняющую слияние

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