- 題名: データベース接続に関して
- 日時: 2004/10/08 11:53:06
- ID: 6578
- この記事の返信元:
- (なし)
- この記事への返信:
- [6580] Re[1]: データベース接続に関して2004/10/08 12:15:46
- ツリーを表示
■No6583に返信(ろろさんの記事) > オブジェクト インスタンスはいったい何なのでしょうか? 難しい言葉に思えるかもしれませんが、大した話ではありません。 調べてみればわかります。 > オブジェクト参照というのはcon = Myobject.conの部分だと思っています。 > For1というオブジェクトのconを参照するということですので。 はい、確かに仰る通りです。 というより、オブジェクト指向言語では、ほぼオブジェクトの参照で成り立ってます。 > そのためにはForm1があればよいと思っているのですが、VisualBasicでは > 違うのでしょうか? ただし、conがForm1のメンバということを考えますと、 プロパティやメソッドを通してアクセスするのが普通かと思います。 明示化しておくと第三者にもわかりやすいですし、クラスとはそういうモノですから。 > そのため、Myobjectという名前でForm1を参照するように、 > Dim MyObject As Form1を定義したのですが・・・。 > 何となく、Form1への参照が出来ていないため、 > MyObject.Conでエラーになっていると思うのですが、 > エラーメッセージをそのまま検索したのですが、これといって > よく分かる説明がありませんでした。 何となく判っているようですね。 インスタンス化されていなければ、(フツーは)操作できません。:-) × Dim Myobject As Form1 ○ Dim Myobject As New Form1 とすれば、Form1の、conにはアクセスできますね。 ただし、Myobjectが呼び出し側のForm1と同一インスタンスではないです。 Myobjectは使わず、本来はForm1の「Me」を引数に渡してやるか、 同一インスタンスを広域な変数にしておくべきでしょう。
分類:[.NET]
2004/10/08(Fri) 11:54:09 編集(投稿者)
いつもお世話になります。ろろと申します。
ODBC経由したデータベースの接続について混乱しています。
Form1
・ユーザー名パスワードをもったテキストボックスを配置。
・ログインボタンにてユーザ名、パスワードをつかってデータベースに接続して
データベースからの認証を受ける。(ここでデータベースより切断する)
--------------For1.Code--------------------------
Public con As OdbcConnection
con = New OdbcConnection("DSN=ODBC;UID=" & TextBox1.Text & ";PWD=" & TextBox2.Text)
Try
con.Open()
' Insert code to process data.
Catch ex As Exception
MessageBox.Show("データベースに接続できませんでした。")
Finally
con.Close()
End Try
End Sub
----------------------------------------------
ここでForm2を開いたときに接続情報を持って行きたいと考えています。
いま、Form2のロードイベントに以下のように書いています。
------------Form2.Load
Dim Myobject As Form1
Dim con As OdbcConnection
con = Myobject.con
OdbcConnection1.ConnectionString = con.ConnectionString
OdbcDataAdapter1.Fill(DataSet11, "test_vbnet")
------------------------------------------------------------
これでは3行目のcon = Myobject.conで
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
とエラーが発生します。
やりたいことをもう一度まとめます。
1.最初のフォームでデータベースに対してユーザ認証を行いたい。
(そのときODBCのダイアログは出さないようにする)
2.以降のフォームでODBCConnectionのコンポーネントに、
1のフォームで接続が成功した際のConnectionStringを設定したい。
となります。
どなたかご存じの方はいらっしゃいませんでしょうか?
よろしくお願いいたします。