Немного фона. Там, где я работаю, у нас ограниченный доступ к инструментам программирования. У нас есть доступ к Microsoft Office Suite, поэтому большинство наших проектов создаются в Access, хотя есть и более эффективные решения. Недавно мы получили доступ к Visual Studio 2013, и я заинтересован в преобразовании некоторых из наших более используемых инструментов в проекты VB.NET.Выберите данные из ODBC-соединения в базу данных MS Access
У меня хорошее понимание VBA после его использования в течение стольких лет, однако преобразование в VB.NET, безусловно, является изменением, и хотя я понимаю концепцию этого, многие из функций, которые я использовал в прошлом, не существуют в VB.NET.
Это приводит меня к следующему вопросу.
Как подключиться к одной базе данных, подключению ODBC, а затем поместить выбранные поля из таблицы в этой базе данных в таблицу в базе данных Microsoft Access?
Вот мой текущий код.
Imports System.Data.Odbc
Imports System.Data.Odbc.OdbcCommand
Imports System.Data.OleDb
Public Class Form1
Dim conn As OdbcConnection
Dim connBE As OleDb.OleDbConnection
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Call Connect_SLICWave()
Call Connect_Backend()
Dim sqlInsert As String = "INSERT INTO tblUOCs (EIAC,LCN,ALC,UOC) SELECT DISTINCT Trim(EIACODXA),Trim(LSACONXB),Trim(ALTLCNXB),Trim(UOCSEIXC) FROM ALAV_XC"
Dim beCmd As New OleDb.OleDbCommand(sqlInsert, connBE)
beCmd.ExecuteNonQuery()
End Sub
Private Sub Connect_SLICWave()
Dim connectionString As String
connectionString = "Dsn=slic_wave;uid=userid;pwd=password"
conn = New OdbcConnection(connectionString)
End Sub
Private Sub Connect_Backend()
Dim connectionStringBE As String
connectionStringBE = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\database.accdb"
connBE = New OleDb.OleDbConnection(connectionStringBE)
End Sub
End Class
Очевидно, что это не сработает. Я пробовал несколько вещей, основанных на примерах в Интернете, но не смог собрать какой-либо код, который работает.
При использовании базы данных Access я бы просто привязывался к таблицам как в ODBC-подключении, так и в базе данных доступа к базе данных, а затем я мог бы использовать DoCmd для запуска SQL для перемещения данных по мере необходимости, однако с VB.NET я не есть это роскошь. Возможно, я все это ошибаюсь из-за отсутствия знаний в Visual Studio.
Есть ли лучший способ достичь конечной цели? Мне нужно иметь возможность ссылаться на данные в ODBC-соединении, а затем хранить его где-нибудь, чтобы я мог выводить конкретный набор данных конечному пользователю. Может/должен использовать DataSet или DataTable? Сколько данных может храниться в DataSet/DataTable до того, как программа станет нестабильной? Данные, используемые в этом процессе, могут быть чрезмерно чрезмерными.
Обычно пользователь отправляет инструменту некоторые критерии с 4 или 5 полями данных. Затем инструмент развернется и примет эти критерии, чтобы получить надлежащий набор данных из подключенной базы данных ODBC, используя объединения примерно на 5-7 таблицах и возвращает один набор данных пользователю. Да, это немного чрезмерно, но это требование.
Надеюсь, я объясню это достаточно хорошо, не будучи слишком общим. Характер моего бизнеса не позволяет предоставить конкретные примеры.
Извините за то, что вы долготерпели, и я ценю любые усилия, которые помогают мне решить эту проблему. Если есть что-то, что нужно уточнить, дайте мне знать, и я попытаюсь объяснить это более четко.
Сколько строк вы имеете в виду одновременно? – Plutonix
Это варьируется, но в целом база данных, из которой я вытягиваюсь, большой, миллионы записей, а иногда мне нужно вытащить целую таблицу, которая может привести к более чем ста тысячам строк. –
Если две таблицы находятся в базе данных сохранения, то я не понимаю, почему обновление или вставка запроса не будут работать. Проблема в том, что источником данных являются две разные базы данных. –