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

タイトル Re^14: ListBoxから選択項目...
投稿日: 2005/09/20(Tue) 14:53
投稿者じゅん
[OSのVer]:Windows    [VBのVer]:VB.NET  
お世話になります。

exのエラーは
ex={System.NullReferenceException} 
です。

それと、
プロジェクト→スタートアップをForm2に変えても同様の実行時エラーが出ます!!。

<下記にコード>米長くてすいません。

@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) The
n
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) The
n
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) The
n
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) The
n
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

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

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

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