2017-09-23 6 views
0

ユーザが(ログイン中にラジオボタンを使用して)選択すると、動的に接続文字列を切り替える必要があります。 接続文字列がありますが、それは問題ではありません。上記のためにapp.configに入ることはできません。強く型付けされたtableAdapterをフォームで指定する方法

これは、私はプログラム内で接続文字列を切り替えることができますフォーム内の強く型付けされたテーブルアダプタを見つけることができると私は思う。しかし、私はそれを見つけることができません。

私はこの記事を見て、役に立たなかったものを見ました。 C# Reflection. Set TableAdapter ConnectionString

これはどこですか?コントロールコレクションではなく、Me.GetType()。GetMethods()ではなく、Me.GetType()。GetPropertiesにはありません。

リクエストごとにいくつかのコードを追加しましたが、これはどの程度役立つかわかりません。これはログイン時に設定されます。

If frmPreferences.InProd Then 
     GConnectString = "DATA SOURCE=xxx;PASSWORD=" & Password & ";USER ID=" & userName & ";" 
    Else 
     GConnectString = "DATA SOURCE=xxx;PASSWORD=" & Password & ";USER ID=" & userName & ";" 

    End If 

実行時に設定文字列を設定できる他のコードがありますが、それは各テーブルアダプターごとです。

Me.INSTITUTIONSTableAdapter.Connection.ConnectionString = GConnectString 
Me.INVOICESTableAdapter.Connection.ConnectionString = GConnectString 

その目的は、100以上のデータセットと500のフォームをリファクタリングすることではありません。データセットごとに小さな変更を加える必要がある場合は、すべてのデータセットを破棄し、誰かが提案したとおりにすべてをプログラムで実行することはできません(数年かかる)。

+0

接続クラスを使用してください... – Codexer

+0

接続を切り替えるコードを共有できますか? –

+0

これに非常に類似したものが最近尋ねられましたが、イライラして見つけられません。ただし、デザイナーがフォームにデータを追加するのではなく、理想的にはデータアクセスレイヤーで、コードでデータセットとテーブルアダプタを作成することをお勧めします。そうすれば、テーブルアダプターの接続も簡単に変更できます。 – peterG

答えて

0

これは解決されたようですが、解決策はメモリ内のapp.configファイルを変更してリロードすることです。アプリ最初の起動は、ユーザーがPRODまたはdev内であるかに応じて、それはこのない場合:

If frmPreferences.InProd Then 
    GConnectString = "DATA SOURCE=xxx;PASSWORD=" & Password & ";USER ID=" & userName & ";" 
Else 
    GConnectString = "DATA SOURCE=xxx;PASSWORD=" & Password & ";USER ID=" & userName & ";" 
End If 

Dim config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) 
Dim connectionStringsSection = CType(config.GetSection("connectionStrings"), ConnectionStringsSection) 
connectionStringsSection.ConnectionStrings("RADS.My.MySettings.RPCOracleConn").ConnectionString = GConnectString 
config.Save() 
ConfigurationManager.RefreshSection("connectionStrings") 

下のコードは、SOポストからです:Change connection string & reload app.config at run time

私はまだ約2少し心配ユーザーは同じEXEを起動しますが、私はそれを把握します。

関連する問題