- - PR -
派生フォームのデザイナで「SQL Server の信頼関係接続・・・」エラー
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-07 14:23
こんにちは、いつもお世話になります。
VB2005+SQLServer2005で開発しております。 winアプリです。 派生フォームのデザイナを開こうとしてエラーが出てしまいます。 どなたか詳しい方いらっしゃればよろしくお願いします。 基本フォームのフォームロードで、 DBからデータを取得しコンボボックスにセットしています。 その基本フォームを継承して、派生フォームを作成しました。 この派生フォームのデザイナを開こうとした時、下記のエラーが出てしまいます。 「ユーザー '' はログインできませんでした。 このユーザーは SQL Server の信頼関係接続と関連付けられていません。 」 デザイナを開く時に基本フォームをインスタンス化しているんですよね? 各派生フォームには同じコンボボックスがあるため、 基本フォームで実装したいのですが これを回避するにはどのような方法があるでしょうか。 フォームロードでやるのがまずいのでしょうか? よろしくお願いします。 |
|
投稿日時: 2008-02-08 10:31
自己レスです。
色々と調べているのですが、デザイナの仕様のようですね。 この場合、派生フォームのデザインを変更したくなった場合、 基本フォームのDB接続部分をコメントにして、デザイナを直していますが、 もし何かいい方法をご存知の方がいれば、よろしくお願いします。 |
|
投稿日時: 2008-02-08 13:34
> 色々と調べているのですが、デザイナの仕様のようですね。
そのようなことは無いと思います。 私が試した限りでは、正しくデザイナは表示されます。
提示されている内容からは、何が原因か特定はできませんが SQLServerへの接続しているコード周辺に問題がありそうな気がします。 エラーメッセージから推測しますと、SQLServerへのWindows認証が失敗している感じ。 可能であれば、DB接続のコードを提示することで問題解決に近づけるかも。 |
|
投稿日時: 2008-02-08 14:01
くまっちさん、正しくデザイナが開けるとの情報、ありがとうございます。
調べ足らなくてすみません。 接続部分のコードを載せます。 Dim con As SqlConnection con = New SqlConnection(moj_CommonUtil.getSqlBuilder(builder_sql).ConnectionString) ' iniから接続文字列を取得してSqlConnectionStringBuilderにセットするメソッド Public Function getSqlBuilder(ByVal SqlConBuilder As SqlConnectionStringBuilder) As SqlConnectionStringBuilder 'SQLServer接続文字列(iniから取得) SqlConBuilder.Password = readIniFile(iniFilePath, "DBConnection", "Password") SqlConBuilder.UserID = readIniFile(iniFilePath, "DBConnection", "UserID") SqlConBuilder.DataSource = readIniFile(iniFilePath, "DBConnection", "DBServer") 端折っていますが、このように実装しています。 よろしくお願いします。 [ メッセージ編集済み 編集者: ボビン 編集日時 2008-02-08 14:11 ] [ メッセージ編集済み 編集者: ボビン 編集日時 2008-02-08 14:12 ] |
|
投稿日時: 2008-02-08 14:16
回答になっているか分かりませんが
デザイン時に実行したくないコードに対してこんなことをしています。 if (this.DesignMode == true) return; |
|
投稿日時: 2008-02-08 14:28
ジエゴさん、情報ありがとうございます。
基本フォームに教えていただいたコードを実装したところ、 デザイナを開くことができました。 根本的な解決ではないかもしれませんが、対処することができました。 どうもありがとうございました。 |
|
投稿日時: 2008-02-08 14:59
iniファイルよりユーザーID・パスワードを取得しているようですが
正しく取得出来ていますか? 空の文字列が帰ってきているのでは? 私の環境でも、ID/Passwordに間違った文字列を与えれば 同様にForm2のデザイナはエラー表示となります。 継承フォームの場合、継承元のコンストラクタ等のコードが走ってしまうのは どうも仕様っぽいです。(MSの不具合とも言えなくは無いが) 過去ログでも話し合われてます[継承フォームをデザインすると継承元が実行される] ただそこで、エラーになるかは、コーディング次第です。 |
|
投稿日時: 2008-02-08 15:31
くまっちさん、ご返答ありがとうございます。
確かに、 iniファイルのパス取得に、 「Application.StartupPath」 を使用しているのですが、これが実行時にはEXEの場所を 返してくれるのですが、デザイナを開く時点では、 「空っぽ」のために、iniの内容を取得できずに接続ができていませんでした。 おかげさまで原因がはっきりしました。 これから回避策を考えてみます。 どうもありがとうございました。 |
1