Я создал инструмент, который в настоящее время использует Excel (VBA), однако я хотел бы сделать его независимым от Excel, поскольку могут быть проблемы с пакетами обновлений Excel и т. Д. c. В основном, чтобы устранить еще один фактор, который может go ошибаться.
Мое текущее приложение Excel:
- Импортирует две таблицы базы данных (клиенты) в две разные рабочие таблицы
sheet1
и sheet2
- Объединение этих двух таблиц с другой
sheet3
путем сравнения столбцов 2 (Name) и 6 (Postanumber) - Если есть дубликаты (в обоих из них частично одни и те же клиенты) VBA код вводит только одно значение в
sheet3
- После того, как
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), но я могу выполнить это действие при подключении, объединить и присвоить списку / таблице базы данных?