- PR -

vb6.0からvb2008への変換について

1
投稿者投稿内容
あーこ
会議室デビュー日: 2008/12/02
投稿数: 18
投稿日時: 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/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-12-02 09:51
変換後のプロジェクトに『System.Windows.Forms.Form を継承し、txtDenNo という名前の付いた TextBox が置かれているクラス』は無いんですか?


_________________
Nakamura Blog
あーこ
会議室デビュー日: 2008/12/02
投稿数: 18
投稿日時: 2008-12-02 10:48
なかむら様、ご返答ありがとうございます。

なかむら様のご質問に対する返答で誤りがありましたら申し訳ございません。

「txtDenNo」という名前のついたTextBoxがついたフォームが3ケあります。(frmTana,frmIn,frmOutの3ケ)

宜しくお願いします。



arika1969
会議室デビュー日: 2008/09/23
投稿数: 5
投稿日時: 2008-12-02 11:28
フォームからコントロールを検索してテキストボックスえお利用しましょう。

Dim tb As TextBox = CType(frm.Controls.Find("txtDenNo", True)(0), TextBox)

でいいと思うんだが...。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-12-02 11:46
ChkDenNoメソッドのコードを読む限りFormを渡す必要はなくて、
それぞれのフォームのtxtDenNoを渡すように改造すればよいのではないでしょうか。
(引数はForm型を取るのではなくTextBox型にする)

上記は、既存のコードをあまり変えないで改善する方法で、ベストな方法ではありません。
ChkDenNoメソッドを「伝票Noの文字列を渡して伝票Noのチェック」だけを行う単機能なメソッドに変更して、
このメソッドを使った処理側でメッセージボックスの表示やフォーカスのセットを行うようにするとなおいいですね。


[ メッセージ編集済み 編集者: よねKEN 編集日時 2008-12-02 11:47 ]
1

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