実践テクニック、Accessで作るクラサバシステム RSSを登録する

現役SEが10年以上の開発ノウハウを惜しみなく完全公開!“ソース公開なので初級者も急速に上達”。高等な技術を使わず、必要最低限のテクニックで開発のポイントをわかりやすく解説します。目標は、みなさんと一緒に販売管理ソフトを完成させることです

最新号をメルマガでお届けします    
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
2008/09/30

【メルマガ廃刊のお知らせ】実践テクニック、Accessで作るクラサバシステム Vol13-08

この記事を取り寄せる

実践テクニック、Accessで作るクラサバシステム No.139

※ 第13コース 第08回「売上入力の作成」 080930配信

__________________________________
                
 Accessのクライアントサーバー 販売管理ソフト教材
 http://www.1tware.com/index.html
__________________________________

 ■メニュー

   1.売上入力の作成(28回目)
   2.メルマガ廃刊のお知らせ

====================================================================

 こんにちは、ティウェアの高橋です。

 売上入力の作成の28回目です。

 では、はじめましょう。

-------------------------------------------------------------------
 
 今回は、行削除ボタンと削除ボタンの説明です。

 行削除ボタンからはじめます。

 Private Sub btn行削除_Click()

If intgyosaku = 1 Then '行削除確認(有り)
 If MsgBox("行削除しますか", (vbYesNo + vbDefaultButton2 + vbQuestion), _
           "行削除") = vbYes Then
 Else
    GoTo btn行削除job99
 End If
End If

If s_行 = Int(0) Then
   Exit Sub
End If

'1画面
If Int(伝票明細行_1) = Int(1) Then
   bolRet = 明細_画面から表へ(Int(1))
Else
'2画面
If Int(伝票明細行_1) = Int(6) Then
   bolRet = 明細_画面から表へ(Int(6))
End If
End If

's_行は退避行(1〜30)

n_gyo = Int(s_行)

Do

  If n_gyo = Int(30) Then
    h_商品コード(30) = 0
    h_商品名(30) = ""
    h_規格(30) = ""
    h_区分名(30) = ""
    h_数量(30) = 0
    h_売上単価(30) = 0
    h_仕入単価(30) = 0
    h_金額(30) = 0
    h_消費税名(30) = ""
    h_退避売上単価(30) = 0
    h_退避仕入単価(30) = 0
    Exit Do
  End If
  
  m_gyo = n_gyo

  n_gyo = Int(n_gyo) + Int(1)
  
  h_商品コード(m_gyo) = h_商品コード(n_gyo)
  h_商品名(m_gyo) = h_商品名(n_gyo)
  h_規格(m_gyo) = h_規格(n_gyo)
  h_区分名(m_gyo) = h_区分名(n_gyo)
  h_数量(m_gyo) = h_数量(n_gyo)
  h_売上単価(m_gyo) = h_売上単価(n_gyo)
  h_仕入単価(m_gyo) = h_仕入単価(n_gyo)
  h_金額(m_gyo) = h_金額(n_gyo)
  h_消費税名(m_gyo) = h_消費税名(n_gyo)
  h_退避売上単価(m_gyo) = h_退避売上単価(n_gyo)
  h_退避仕入単価(m_gyo) = h_退避仕入単価(n_gyo)
  
Loop

'1画面
If Int(伝票明細行_1) = Int(1) Then
   bolRet = 明細_表から画面へ(Int(1))
Else
'2画面
If Int(伝票明細行_1) = Int(6) Then
   bolRet = 明細_表から画面へ(Int(6))
End If
End If

Call 合計欄_計算

btn行削除job99:

'戻り先
Me.Controls(strControlName).SetFocus

End Sub

 行挿入と逆のパターンになります。
 行削除ボタンを押したところから順に上へ移動させればよいだけです。

-------------------------------------------------------------------

 ここから削除ボタンの説明です。

Private Sub btn削除_Click()

If intsakujyo = 1 Then '削除確認(有り)
 If MsgBox("データを削除しますか。", (vbYesNo + vbDefaultButton2 + _
            vbInformation), "削除") = vbYes Then
 Else
   DoCmd.GoToControl "伝票年"
   Exit Sub
 End If
End If
   
intRet = 伝票ヘッダー_削除()
   
p_eigyocd = Int(0)
p_tokucd = Int(0)
   
From_Clr

Forms(cFormName_M)![伝票番号].Enabled = True
Forms(cFormName_M)![伝票番号].Locked = False
Forms(cFormName_M)![伝票番号].BackColor = 16777215  '白色
   
Forms(cFormName_M)![伝票番号].SetFocus

End Sub

削除が完了したら、伝票番号のテキストへ移動させます。

-------------------------------------------------------------------

Function 伝票ヘッダー_削除()

伝票ヘッダー_削除 = True

intRet = 伝票ディテール_削除()

cn.Errors.Clear

On Error GoTo 伝票ヘッダー_削除_err

  cn.BeginTrans

  Set cm1 = New ADODB.Command
  Set pm1 = New ADODB.Parameter

  Set pm1 = New ADODB.Parameter
  pm1.Direction = adParamInput
  pm1.Type = adInteger
  pm1.Value = Forms(cFormName_M)![伝票区分]
  Set pm1_1 = New ADODB.Parameter
  pm1_1.Direction = adParamInput
  pm1_1.Type = adInteger
  pm1_1.Value = Forms(cFormName_M)![伝票番号]
  
  With cm1
     .ActiveConnection = cn
     .CommandType = adCmdStoredProc
     .CommandText = "sp_伝票ヘッダー_del"
     .Parameters.Append pm1
     .Parameters.Append pm1_1
  End With

  cm1.Execute
  
  cn.CommitTrans

  Set pm1 = Nothing
  Set pm1_1 = Nothing
  Set cm1 = Nothing
    
  Exit Function

伝票ヘッダー_削除_err:

 For Each ado_err In cn.Errors
    'リレーションの関係
    If ado_err.Number = -2147217873 Then
       MsgBox "このコードは他のデータで使用されているので削除できません。" _
       , vbCritical, "警告"
       GoTo 伝票ヘッダー_削除_err99
    Else

      MsgBox "エラーナンバー " & ado_err.Number & _
            vbCrLf & _
            "エラーソース " & ado_err.Source & _
            vbCrLf & _
            Err.Description, vbCritical, "エラー"

   End If
 Next

伝票ヘッダー_削除_err99:

 伝票ヘッダー_削除 = False
 
 cn.RollbackTrans

 Set pm1 = Nothing
 Set pm1_1 = Nothing
 Set cm1 = Nothing
 
End Function

-------------------------------------------------------------------

ALTER Procedure [sp_伝票ヘッダー_del]
 (
  @伝票区分 smallint,
  @伝票番号 int
 )
As
            delete  伝票ヘッダー
                       where (伝票区分 = @伝票区分) and (伝票番号 = @伝票番号) 
return

-------------------------------------------------------------------

伝票の削除は、1伝票まるごと削除します。

伝票ヘッダーは、1つしかありません。
伝票ディテールは、複数存在しますのでまとめて削除します。

伝票ディテール_削除は、次回説明します。

 次回も売上入力です。

====================================================================

           メルマガ廃刊のお知らせ

====================================================================

 2002年11月29日から始めましたメルマガですが、2008年度で終了する
 ことに致しました。

 理由といたしましては、以前メルマガで記述しました。

「Vista上でSQL Server 2000はサポートしない、当然のごとく、MSDEも。
 MSDEの後継に位置付けているのが、SQL Server 2005 Express Editionです。
 無料でダウンロードできます。」

 新バージョンが登場して2年が経過することになりMSDE2000も過去の
 産物となりました。

 SQL Server 2005 Express Editionへのバージョンアップも考えましたが、
 検討した結果、断念することにしました。

 現在、販売しています、「販売管理ソフト教材」は在庫がなくなり次第
 販売終了といたします。

 メルマガを途中でやめるのは、とても残念ですが、これ以上msde2000を
 取り上げて説明しても意味がないと判断した次第です。

 長年ご購読してくださいました読者の方々には、ご迷惑をおかけして
 誠に申し訳なく思っています。

 ご意見や励ましのメールをいただきまして6年間継続することができました。
 これもひとえに皆様のおかげです。
 とても感謝しています。 

 今年も残り3ケ月間ですがメルマガを発行しますのでよろしければご購読ください。

 長い間、誠にありがとうございました。

====================================================================

   ”最後までお読みいただきましてありがとうございます。”

今後も「Accessで役立つ」をテーマに、実践テクニックや最新トピックなど
お役にたつ情報をお送りしていきたいと思っております。

     システムは、シンプルオブベストで作りましょう!

====================================================================

   編集・構成:高橋浩
   提供・発行:ティウェア

 Accessのクライアントサーバー 販売管理ソフト教材
 http://www.1tware.com/

 AccessとMSDEで作成する!(ブログ)
 http://access1.jugem.jp/

当メールマガジンに掲載された記事を許可なく転載することを禁じます

====================================================================
□登録/削除はこちら 
  http://www.1tware.com/meruaccess.html
====================================================================

この記事を取り寄せる
最新号をメルマガでお届け
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
上へ戻る