tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^12: ListBoxから選択項目...
投稿日: 2005/09/20(Tue) 13:47
投稿者じゅん
[OSのVer]:Windows    [VBのVer]:VB.NET  
なおこさんありがとうございます。
教えてもらったコードでやってみたのですが、エラーは出ませんでしたが。
実行時エラー(?)が発生します。
その前に自分が作ったフォームの動きを

@Form1(frm担当者コード入力)で担当者コードを入力しOKボタンを押すとFrom2(frm注文入力)へFrom1で
入力した担当者コードが書き足される。
※この時はデータベースなどは関係ない動きです。(今の所)

AFomr2(frm注文入力)画面では最初に入力ボタンを押してForm3(frmデータ入力)へ
※このときは入力ボタンを押して次の画面へ行かないと、Form(frm注文入力)での商品・数量などのは構
えないようしています。(先に客数・テーブル番号入力するため)

BForm3(frmデータ入力)ここでは客数(txt客数)とテーブル番号(txtテーブル番号)を入力し、OKボタン
を押すとForm2(frm注文入力)へ飛び、From2(frm注文番号)にテーブル番号と客数が入力されます。
※このときFrom3(frmデータ入力)は画面から消える(me.close()イベント)

CそしてFrom2(frm注文入力)で商品(txt商品)と数量(txt数量)の作業をします。

以上が簡単なフォームの動きです。
そこで質問なんですが、Form2(frm注文入力)のLoadイベントは2回は行われることになるのですか?
<実行時エラーの内容>
@Form1(frm担当者コード入力)で担当者コード入力してOKボタンを押すと
『キーワードはサポートされていません:'integratedsecurity'』のエラー

AFrom2(frm注文入力)で商品(txt商品)に数値を入力ごフォーカスを動かすと
『オブジェクト参照がオブジェクトインスタンスに設定されていません。』のエラー
※数量(txt数量)のイベント発生時も同じ

上記のエラーが出てしまいます。なんで出るのかわかりません。
イベント発生タイミングがいけないのでしょうか?
お願いします。


一応今の書くフォームのコードを書いときます。
@From1(frm担当者コード入力)

Private frm2 As New frm注文入力

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        '***入力画面へ飛ぶ***
        'frm注文入力のテキストボックスにfrm担当者コードより書き込み()
        If txt担当者コード.Text <> "" Then
            frm2.MyForm2TextBox = txt担当者コード.Text
            frm2.ShowDialog()
        Else
            MsgBox("担当者コードを入力してください", MsgBoxStyle.OKOnly)
            txt担当者コード.Focus()
        End If

        txt担当者コード.Text = ""
    End Sub
=========================================================================================
AForm2(frm注文入力)

Private m_MasterDt As DataTable
    Private m_TestDt As DataTable

    'frm注文入力のlblテーブルのプロパティの値を設定及び取得するためのプロパティ
    Public Property MyForm1TextBox1() As String
        Get 'lblテーブル.Text の内容を取得
            Return lblテーブル.Text()

        End Get
        'lblテーブル.Text に書き込み
        Set(ByVal Value As String)
            lblテーブル.Text = Value

        End Set
    End Property
    'frm注文入力のlbl客数のプロパティの値を設定及び取得するためのプロパティ
    Public Property MyForm1TextBox2() As String
        Get 'lbl客数.Text の内容を取得
            Return lbl客数.Text()

        End Get
        'lbl客数.Text に書き込み
        Set(ByVal Value As String)
            lbl客数.Text = Value

        End Set
    End Property
    'lbl担当のプロパティの値を設定及び取得するためのプロパティ
    Public Property MyForm2TextBox() As String
        Get 'lbl担当.Text の内容を取得
            Return lbl担当.Text
        End Get
        'lbl担当.Text に書き込み
        Set(ByVal Value As String)
            lbl担当.Text = Value
        End Set
    End Property


    Private Sub frm注文入力_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim scn As SqlClient.SqlConnection
        Try
            scn = New SqlClient.SqlConnection( _
            "Data Source = localhost;PersistSecurityInfo=False" _
            + ";IntegratedSecurity=SSPI;database=Yuukari")

            Dim dSet As DataSet = New DataSet("T_商品マスタ")
            Dim dAdp As SqlClient.SqlDataAdapter

            scn.Open()

            dAdp = New SqlClient.SqlDataAdapter( _
            "SELECT * FROM T_商品マスタ", scn)
            dAdp.Fill(dSet, "T_商品マスタ")
            Me.m_MasterDt = dSet.Tables("T_商品マスタ")

            ''表示用
            Me.m_TestDt = New DataTable
            With Me.m_TestDt
                .Columns.Add(New DataColumn("商品コード", GetType(String)))
                .Columns("商品コード").DefaultValue = ""

                .Columns.Add(New DataColumn("商品名", GetType(String)))
                .Columns("商品名").DefaultValue = ""

                .Columns.Add(New DataColumn("数量", GetType(String)))
                .Columns("数量").DefaultValue = ""
            End With

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            If Not IsNothing(scn) Then scn.Close()
        End Try

        btn削除.Enabled = False
        btn修正.Enabled = False
        btn送信.Enabled = False
        txt数量.Enabled = False
        txt商品.Enabled = False
        list商品.Enabled = False

        '/// 日付取得方法(今現在)2005/09/14 始まり////
        Dim day As Date
        day = Now

        lbl営業日付.Text = Microsoft.VisualBasic.Left(day, 10)
        '/// 日付取得方法(今現在)2005/09/14 終わり////


        End Sub

    Private Sub btn修正_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn修正.Click
        '修正したい商品(list商品の商品を選択)の数量を変更したいときに使う
        'txt数量を変更後、修正ボタンをクリックすると数量が変更(list商品の数量)される予定





    End Sub

    Private Sub btn削除_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn削除.Click
        '***今現在の削除方法 2005/09/17 始め***
        '選択された商品を削除する
        If Not (list商品.SelectedItem Is Nothing) Then
            If MsgBox("削除してもよろしいですか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then

            list商品.Items.Remove(list商品.SelectedItem

            End If
        Else
            MsgBox("商品を選択してから削除ボタンを押してください。")
        End If
        '***今現在の削除方法 2005/09/17 終わり***
    End Sub

    Private Sub btn送信_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn送信.Click
        '送信作業




        '終了作業(frm注文入力を終了してfrm担当者コードを表示(予定))

        lbl担当.Text = ""
        lbl客数.Text = ""
        lblテーブル.Text = ""
        txt商品.Text = ""
        txt数量.Text = ""

        '***今現在 2005/09/17 始め***
        '何もListBoxにはいってない状態で下記の処理をするとエラーが発生
        list商品.Items.Clear()
        '***今現在 2005/09/17 終わり***

        Me.Close()
    End Sub
    Private Sub btn入力_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn入力.Click

        Dim f2 As New frmデータ入力(Me)          
        f2.Show()
        txt商品.Enabled = True


    End Sub

    Private Sub txt商品_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt商品.KeyPress
        '数値しか入力できないように制限する(簡易型)
        ' .-1234567890 及び Enter/BackSpace キーしか入力できない
        If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr(45) Or _
            e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) Then
            e.Handled = True                '入力キーを無効にする
        End If
    End Sub

    Private Sub txt数量_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt数量.KeyPress
        '数値しか入力できないように制限する(簡易型)
        ' .-1234567890 及び Enter/BackSpace キーしか入力できない
        If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr(45) Or _
            e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) Then
            e.Handled = True                '入力キーを無効にする
        End If
    End Sub

    Private Sub txt商品_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt商品.LostFocus
        
        Try
            If Me.txt商品.Text = "" Then
                MessageBox.Show("商品コードが入力されていません")
                Exit Sub
            End If

            list商品.Items.Clear()
            Me.SetSyohinMaster(Me.txt商品.Text, False)
            For i As Integer = 0 To Me.m_TestDt.Rows.Count - 1
                list商品.Items.Add(CType(Me.m_TestDt.Rows(i)("商品名"), String) _
                 + StrDup(21, " ") _
                 + CType(Me.m_TestDt.Rows(i)("数量"), String))
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub



    Private Sub txt数量_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt数量.TextChanged
        
        Try
            If Me.txt商品.Text = "" Then
                MessageBox.Show("商品コードが入力されていません")
                Exit Sub
            End If
            If Me.txt数量.Text = "" Then
                MessageBox.Show("数量が入力されていません")
                Exit Sub
            End If

            list商品.Items.Clear()
            Me.SetSyohinMaster(Me.txt商品.Text, True)
            For i As Integer = 0 To Me.m_TestDt.Rows.Count - 1
                list商品.Items.Add(CType(Me.m_TestDt.Rows(i)("商品名"), String) _
                 + StrDup(21, " ") _
                 + CType(Me.m_TestDt.Rows(i)("数量"), String))
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub

    
    Private Sub SetSyohinMaster(ByVal syohin As String, ByVal suryo As Boolean)
        Try
            If Not suryo Then
                'DB(m_MasterDt)に商品コードが存在するかどうかのチェック
                Dim rows() As DataRow = Me.m_MasterDt.Select("商品コード=" + syohin)
                Dim shohinname As String
                If rows.Length = 1 Then
                    '商品マスタに存在したら、商品名を取得する。
                    shohinname = CType(rows(0)("商品名"), String)
                    If Me.m_TestDt.Select("商品コード=" + syohin).Length < 1 Then
                        '該当する商品コードがm_TestDtに存在しなければ、Rowを追加する。
                        Me.m_TestDt.Rows.Add(New Object() {syohin, shohinname, ""})
                    End If
                Else
                    Throw New Exception("商品コードが存在しません")
                End If
            Else
                Dim rows() As DataRow = Me.m_TestDt.Select("商品コード=" + syohin)
                If rows.Length = 1 Then
                    rows(0).BeginEdit()
                    rows(0)("数量") = Me.txt数量.Text
                    rows(0).EndEdit()
                End If
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

=====================================================
Form3(frmデータ入力)
Private Sub txtテーブル番号_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtテーブル番号.KeyPress
        '数値しか入力できないように制限する(簡易型)
        ' .-1234567890 及び Enter/BackSpace キーしか入力できない
        If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr(45) Or _
            e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) Then
            e.Handled = True                '入力キーを無効にする
        End If
    End Sub

    Private Sub txt客数_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt客数.KeyPress
        '数値しか入力できないように制限する(簡易型)
        ' .-1234567890 及び Enter/BackSpace キーしか入力できない
        If e.KeyChar >= Microsoft.VisualBasic.Chr(32) And e.KeyChar < Microsoft.VisualBasic.Chr(45) Or _
            e.KeyChar > Microsoft.VisualBasic.Chr(57) Or e.KeyChar = Microsoft.VisualBasic.Chr(47) Then
            e.Handled = True                '入力キーを無効にする
        End If
    End Sub

    Private Sub btnクリア_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnクリア.Click
        txtテーブル番号.Text = ""
        txt客数.Text = ""
    End Sub

    Private Sub btnキャンセル_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnキャンセル.Click
        Me.Close()
    End Sub
    Private frm1 As New frm注文入力
    'frmデータ入力のコンストラクタ
    Public Sub New(ByVal f1 As frm注文入力)
        InitializeComponent()
        '呼び出しの後にコンストラクタコードを追加
        frm1 = f1
    End Sub
    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        If txtテーブル番号.Text <> "" And txt客数.Text <> "" Then
            frm1.MyForm1TextBox1 = txtテーブル番号.Text
            frm1.MyForm1TextBox2 = txt客数.Text
            Me.Close()
        Else
            MsgBox("テーブル番号・客数を入力してください", MsgBoxStyle.OKOnly)
            txtテーブル番号.Focus()
        End If

    End Sub

===================================================================
以上今現在の動きに必要なコードです。
よろしくお願いします

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。