SBクリエイティブ

【情報】つくってナットクVisual Basicデータベースプログラミング

2010.05.06
対象書籍
つくってナットクVisual Basicデータベースプログラミング

受注処理のデータベースエラーについての補足

「受注パネル」(frmOrder)の商品入力処理で、「数量」を入力しないまま[追加]ボタンをクリックすると、データベースのエラーが発生します。これは、テーブル「売上明細」に書き込む際、数量と合計が空白(数値ではない状態)だからです。

サンプルのアプリケーションは[Tab]キーで項目を移動していく仕様を基本にしているため、この問題への対処を省略していました。

この問題を回避するには、[追加]ボタンクリック時の処理「btnAddOrder_Click」の先頭で、


データベースへの書き込みを行う前に「数量」テキストボックス(txtAmount)の値を調べ、未入力であればメッセージを表示して書き込みを行わずにプロシージャを抜ける


という処理を挿入します。

以下の「修正後」に示すソースを参考にしてください。


●オリジナル~サンプルのソース

‘ ———————————————————————–
‘ [追加]ボタンのクリック
‘ — テキストボックスのデータを一時テーブルに追加→グリッドに表示
‘ ———————————————————————–
Private Sub btnAddOrder_Click _
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddOrder.Click
‘ 下請けプロシージャでデータを書き込む
If AddDetail() = True Then
‘ 合計金額を更新
txtGrdTotal.Text = Val(txtGrdTotal.Text) + Val(txtTotalValue.Text)
‘ テキストボックスを消去
ClearTextBox()
‘ グリッドに明細の内容を表示
ShowGrid()
Else
MessageBox.Show( _
“データベースへの書き込みに失敗しました。” & ControlChars.CrLf & _
“受注データは記録されませんでした。”, “書き込みエラー”, _
MessageBoxButtons.OK)
End If
End Sub



●修正後~データベースのエラーを回避したソース

‘ ———————————————————————–
‘ [追加]ボタンのクリック
‘ — テキストボックスのデータを一時テーブルに追加→グリッドに表示
‘ ———————————————————————–
Private Sub btnAddOrder_Click _
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddOrder.Click

(以下を挿入)
‘ 「数量」が未入力ならメッセージを表示して処理を抜ける
If (txtAmount.Text = “”) Or _
(IsNumeric(Val(txtItemId.Text)) = False) Then
MessageBox.Show( _
“数量を入力してください。”, “入力エラー”, _
MessageBoxButtons.OK)
txtAmount.Select()
Exit Sub
End If
(挿入ここまで)

‘ 下請けプロシージャでデータを書き込む
If AddDetail() = True Then
‘ 合計金額を更新
txtGrdTotal.Text = Val(txtGrdTotal.Text) + Val(txtTotalValue.Text)
‘ テキストボックスを消去
ClearTextBox()
‘ グリッドに明細の内容を表示
ShowGrid()
Else
MessageBox.Show( _
“データベースへの書き込みに失敗しました。” & ControlChars.CrLf & _
“受注データは記録されませんでした。”, “書き込みエラー”, _
MessageBoxButtons.OK)
End If
End Sub


この記事をシェアする