- - PR -
vb6.0からvb2008への変換について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-12-02 09:31
現在WINDOWSアプリケーションを勉強中です。
vb6.0からvb2008に変換ウィザードを使用して変換しましたが、エラーが出てしまいました。 vb6.0のコードは下記の通りですが、 変換すると(frm As Form)の部分が(ByRef frm as System.Windows.Forms.Form)となり、 sql文の「frm.txtDenNo」部分が「System.Windows.Forms.Formのメンバではありません。」となってしまいます。 検索等で調べていましたら、 「オブジェクト指向」や「継承」をすればvb6.0の時と同じ動作になると思いましたが、 具体的にどの様にコードを記入して良いかわかりません。 このvb6.0の内容は勉強の為、購入した本にサンプルとして載っていたものです。 ご指導頂けます様、宜しくお願いします。 vb6.0コード Public Function ChkDenNo(frm As Form) As Integer Dim rsChk As ADODB.Recordset Dim mySQL As String Dim ret As Integer mySQL = "SELECT * FROM 入出庫マスター " _ & "WHERE 伝票番号 = '" & frm.txtDenNo.Text & "'" Set rsChk = New ADODB.Recordset rsChk.Open mySQL, cn If rsChk.RecordCount = 0 Then rsChk.Close Set rsChk = Nothing ChkDenNo = 0 Else ret = MsgBox("伝票番号が重複しています。", _ vbOKOnly + vbInformation, "在庫管理") frm.txtDenNo.SetFocus rsChk.Close Set rsChk = Nothing ChkDenNo = -1 End If End Function |
|
投稿日時: 2008-12-02 09:51
変換後のプロジェクトに『System.Windows.Forms.Form を継承し、txtDenNo という名前の付いた TextBox が置かれているクラス』は無いんですか?
_________________ Nakamura Blog |
|
投稿日時: 2008-12-02 10:48
なかむら様、ご返答ありがとうございます。
なかむら様のご質問に対する返答で誤りがありましたら申し訳ございません。 「txtDenNo」という名前のついたTextBoxがついたフォームが3ケあります。(frmTana,frmIn,frmOutの3ケ) 宜しくお願いします。 |
|
投稿日時: 2008-12-02 11:28
フォームからコントロールを検索してテキストボックスえお利用しましょう。
Dim tb As TextBox = CType(frm.Controls.Find("txtDenNo", True)(0), TextBox) でいいと思うんだが...。 |
|
投稿日時: 2008-12-02 11:46
ChkDenNoメソッドのコードを読む限りFormを渡す必要はなくて、
それぞれのフォームのtxtDenNoを渡すように改造すればよいのではないでしょうか。 (引数はForm型を取るのではなくTextBox型にする) 上記は、既存のコードをあまり変えないで改善する方法で、ベストな方法ではありません。 ChkDenNoメソッドを「伝票Noの文字列を渡して伝票Noのチェック」だけを行う単機能なメソッドに変更して、 このメソッドを使った処理側でメッセージボックスの表示やフォーカスのセットを行うようにするとなおいいですね。 [ メッセージ編集済み 編集者: よねKEN 編集日時 2008-12-02 11:47 ] |
1