- PR -

派生フォームのデザイナで「SQL Server の信頼関係接続・・・」エラー

1
投稿者投稿内容
ボビン
常連さん
会議室デビュー日: 2007/02/05
投稿数: 45
投稿日時: 2008-02-07 14:23
こんにちは、いつもお世話になります。

VB2005+SQLServer2005で開発しております。
winアプリです。

派生フォームのデザイナを開こうとしてエラーが出てしまいます。
どなたか詳しい方いらっしゃればよろしくお願いします。

基本フォームのフォームロードで、
DBからデータを取得しコンボボックスにセットしています。
その基本フォームを継承して、派生フォームを作成しました。
この派生フォームのデザイナを開こうとした時、下記のエラーが出てしまいます。

「ユーザー '' はログインできませんでした。
このユーザーは SQL Server の信頼関係接続と関連付けられていません。 」

デザイナを開く時に基本フォームをインスタンス化しているんですよね?

各派生フォームには同じコンボボックスがあるため、
基本フォームで実装したいのですが
これを回避するにはどのような方法があるでしょうか。
フォームロードでやるのがまずいのでしょうか?

よろしくお願いします。


ボビン
常連さん
会議室デビュー日: 2007/02/05
投稿数: 45
投稿日時: 2008-02-08 10:31
自己レスです。

色々と調べているのですが、デザイナの仕様のようですね。
この場合、派生フォームのデザインを変更したくなった場合、
基本フォームのDB接続部分をコメントにして、デザイナを直していますが、
もし何かいい方法をご存知の方がいれば、よろしくお願いします。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-08 13:34
> 色々と調べているのですが、デザイナの仕様のようですね。
そのようなことは無いと思います。

私が試した限りでは、正しくデザイナは表示されます。
  1. Form1を追加
  2. Form1にComboBoxを追加(デザイナ上)
  3. Form2を継承フォーム(Form1から派生)として追加
  4. Form1のページロードにSQLServer2005への接続を記述

提示されている内容からは、何が原因か特定はできませんが
SQLServerへの接続しているコード周辺に問題がありそうな気がします。

エラーメッセージから推測しますと、SQLServerへのWindows認証が失敗している感じ。

可能であれば、DB接続のコードを提示することで問題解決に近づけるかも。
ボビン
常連さん
会議室デビュー日: 2007/02/05
投稿数: 45
投稿日時: 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 ]
ジエゴ
常連さん
会議室デビュー日: 2003/12/08
投稿数: 26
お住まい・勤務地: ヨコハマ
投稿日時: 2008-02-08 14:16
回答になっているか分かりませんが
デザイン時に実行したくないコードに対してこんなことをしています。

if (this.DesignMode == true) return;
ボビン
常連さん
会議室デビュー日: 2007/02/05
投稿数: 45
投稿日時: 2008-02-08 14:28
ジエゴさん、情報ありがとうございます。

基本フォームに教えていただいたコードを実装したところ、
デザイナを開くことができました。

根本的な解決ではないかもしれませんが、対処することができました。

どうもありがとうございました。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-08 14:59
iniファイルよりユーザーID・パスワードを取得しているようですが
正しく取得出来ていますか?
空の文字列が帰ってきているのでは?

私の環境でも、ID/Passwordに間違った文字列を与えれば
同様にForm2のデザイナはエラー表示となります。

継承フォームの場合、継承元のコンストラクタ等のコードが走ってしまうのは
どうも仕様っぽいです。(MSの不具合とも言えなくは無いが)
過去ログでも話し合われてます[継承フォームをデザインすると継承元が実行される]

ただそこで、エラーになるかは、コーディング次第です。
ボビン
常連さん
会議室デビュー日: 2007/02/05
投稿数: 45
投稿日時: 2008-02-08 15:31
くまっちさん、ご返答ありがとうございます。

確かに、
iniファイルのパス取得に、
「Application.StartupPath」
を使用しているのですが、これが実行時にはEXEの場所を
返してくれるのですが、デザイナを開く時点では、
「空っぽ」のために、iniの内容を取得できずに接続ができていませんでした。

おかげさまで原因がはっきりしました。
これから回避策を考えてみます。

どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)