2017-11-27 21 views
0

remoteTable(リモートSQL Serverインスタンス内)のデータをlocalTable(ローカルMSアクセス内)のデータで挿入したいとします。MS Accessを介してSQL Serverテーブルを更新する

Accessでは、この更新プログラムを実行するボタンがフォームにあります。そのため、SQL Serverにアクセスするための資格情報をユーザーから隠す必要があります。

多くのユーザーがこの更新プログラムを実行するため、Accessでリンクテーブルに対してSQL ServerへのDSNレス接続を作成する関数またはプロシージャを作成して、ODBC接続を作成しないようにする必要があります。ユーザーにとってシンプルです。

Private Sub SendDataToSQLServerWithoutCreatingODBC_Click() 

    'call a function or procedure to connect to remote SQL Server 
    'update remoteTable with retrieved data from localTable 
    'in T-SQL, it would be: INSERT INTO remoteTable SELECT * FROM localTable 

End Sub 

ありがとうございます。

+0

接続を確立する必要があります。 ODBCは私の提案です。 SQL Serverへの接続を避けることはできませんが、他の方法はありません。なぜそれがユーザーのためにそれをより困難に思うかわからない。あなたのコードであなたの接続を作成し、すべてがうまくいくはずです。 –

+0

申し訳ありませんが、Sean Lange氏ははっきりしていませんが、ODBC接続を作成し、SQL Serverの資格情報を非表示にして、ハードコーディング接続を作成するようにしています。コードで接続を作成するにはどうすればよいですか?私に見せたいリンクや例がありますか? – jMarcel

+0

コードにデータベース接続を作成します。もちろん、ユーザーは決してこの情報を入力しません。 –

答えて

2

あなたは、テーブル定義とクエリ定義を使用して、一時的なリンクテーブルを使用することができます。

(このコードは、リモート・テーブルTable1にローカルテーブルTable1からすべてのレコードを挿入する)

Public Sub InsertExternal() 
    Dim db As DAO.Database 
    Dim tempTDF As DAO.TableDef 
    Dim qdf As DAO.QueryDef 
    Set db = CurrentDb 
    Set tempTDF = db.CreateTableDef("#Temp") 
    tempTDF.Connect = "ODBC;Driver={SQL Server Native Client 11.0};Server=localhost;Database=TestDB;Trusted_Connection=yes;" 'Credentials here 
    tempTDF.SourceTableName = "Table1" 
    db.TableDefs.Append tempTDF 
    Set qdf = db.CreateQueryDef("", "INSERT INTO [#Temp](Field1) SELECT Table1.Field1 FROM Table1") 
    qdf.Execute 
    db.TableDefs.Delete "#Temp" 
End Sub 

を必要な場所にエラー処理を追加し、接続文字列、フィールド、およびテーブルの名前を記入してください。

+0

私はDAOの使用をお勧めしません。それは20年以上前にADOに取って代わったRDOに置き換えられました。しかし、ここでの基本的な前提は間違いなく正しいアプローチです。 –

+4

@SeanLangeこれはMicrosoft Accessの質問です。 Microsoft Accessは、内部データベースエンジンであるACEDAOをこの日付まで使用しています(2017年中半に更新され、BigIntのサポートが更新されました)。これにより、Accessデータベースエンジンで作業するときに、DAOの機能が向上します。詳細については、[この質問](https://stackoverflow.com/questions/1039224/is-it-better-to-use-ado-or-dao-in-access-2007)を参照してください。 MS Accessの外では、DAOは実際にはお勧めできませんが、MS Accessに保存されたデータを扱う際には、私の意見ではDAOが当然の選択です。 –

+0

これはSQL Serverにデータを挿入しています。 :) –