kumorijunのブログ

生きすぎてしまった人生の帳尻合わせですか

おじんEulerHepjeanの余生の過ごし方その001-数学 回転行列の固有値問題(その1)-20240615-1700

 ヒマに任せて回転行列の固有値問題なんてのんをやってます。回転行列って
 

※LibreOfficeMATHを使用しました。少しオカシイです。行列=0の項はDet(行列)=0と理解願います。紙とエンピツを持ってません。

みたいなやつですよネ~これ実は変数ならぬ変行列で、θ=0の場合は単位行列(2次)で素通りしてました。固有値固有ベクトルは上記になります。変位行列としての回転行列には作用して拡大縮小するという意味では平行以外にベクトルはありませんので、固有値は実数の範囲にはありません。ご想像の通りとんでもない数になります。次回のお楽しみ~・・・


♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(9) おじんEulerHepjeanの余生の過ごし方その033-会計-20240508-1500


 今回は「振替伝票」のフォームにつき説明いたします。使いやすさを優先して設計しました。
 

「会計年月」「部門C」「仕訳日」「仕訳No」「見出摘要」は連結された RecordSource「qry仕訳見出Sel年月」の項目です。これらの項目は RecordSource を設定すれば自動で表示されます。「処理年月」はここで指定された会計年月のレコードが絞られてフォームに表示されます。「会計年月」は入力不可に設定されています。また「貸借バランス」は明細行の貸借りのバランスをチェックするための作業項目です。ここがゼロでなければ登録しようとしても警告が発せられます。
「処理年月」には以下のプログラムが設定されています。
---------+---------+---------+---------+---------+---------+---------+
Private Sub 処理年月_AfterUpdate()
  ' qry仕訳伝票Sel年月のRequery(該当年月のレコード表示)
  Me.Requery
  ' qry仕訳明細の科目CのRequery(年月により科目が増減する)
  [frm仕訳明細].[Form]![科目C].Requery
End Sub
---------+---------+---------+---------+---------+---------+---------+
このプログラムで表示される伝票の年月が変更されます。たとえば、当月の処理をしているときに前月の伝票を見たくなったとき等に使用します。
次は「仕訳No」です。
---------+---------+---------+---------+---------+---------+---------+
Private Sub 仕訳No_Enter()
' カーソルが仕訳Noに置かれるまでは採番しない
On Error GoTo Err_仕訳No_Enter
  ' 仕訳Noを採番する(tbl仕訳見出がInsertされる)
  If IsNull(Me![仕訳No]) Or (Me![仕訳No] = 1) Then
    Me![仕訳No] = DMax("仕訳No", "tbl仕訳見出") + 1
    Me.Dirty = True     'cmdNewをenableとするため
    ahtHandleKeys Me    'cmdNewをenableとするため
  End If
Exit_仕訳No_Enter:
  Exit Sub
Err_仕訳No_Enter:
  MsgBox Err.Description
  Resume Exit_仕訳No_Enter
End Sub
---------+---------+---------+---------+---------+---------+---------+
ここでは伝票管理番号としての「仕訳No」の採番をしています。単に既存の仕訳No+1としています。多人数で同時に使用することは前提していません。
次は「貸借バランス」ですが、ここではqry仕訳明細のFutterで SUM「借方」-SUM「貸方」を計算して表示しています。
また「部門C」はプルダウン選択になっており RowSourceType は Table/Query でRowSource にはSELECT文[SELECT tbl会計部門.部門C, tbl会計部門.部門名 FROM tbl会計部門;]が設定されています。
以下は「frm仕訳明細」です。
 


「貸借区分」もプルダウンで RowSourceType は ValueList で直接”借方,貸方”を指定、「科目C」には以下のSELECT文を設定しています。(長いですゥ)


PARAMETERS [Forms]![frm仕訳伝票]![処理年月] Text ( 255 ); 
SELECT tbl総勘定元帳.科目C, tbl勘定科目.勘定科目名 FROM tbl勘定科目 
INNER JOIN tbl総勘定元帳 ON tbl勘定科目.勘定科目C=tbl総勘定元帳.科目C
WHERE (((tbl総勘定元帳.会計年月)=Forms!frm仕訳伝票!処理年月)); 

科目コードをプルダウン表示するだけなら2行目だけでもよさそうなのですが、月次決算を想定しており、勘定科目も月毎に増減することを想定しています。が、…チョットやり過ぎたかとも思います。ご参考まで…

あとは所謂、COMMIT と ROLLBACK ですが、これは章を改めて次回に解説します。
♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(9) おじんEulerHepjeanの余生の過ごし方その033-会計-20240508-0900

 今回は「振替伝票」のフォームにつき説明いたします。使いやすさを優先して設計しました。
 

「会計年月」「部門C」「仕訳日」「仕訳No」「見出摘要」は連結された RecordSource「qry仕訳見出Sel年月」の項目です。これらの項目は RecordSource を設定すれば自動で表示されます。「処理年月」はここで指定された会計年月のレコードが絞られてフォームに表示されます。「会計年月」は入力不可に設定されています。また「貸借バランス」は明細行の貸借りのバランスをチェックするための作業項目です。ここがゼロでなければ登録しようとしても警告が発せられます。
「処理年月」には以下のプログラムが設定されています。
---------+---------+---------+---------+---------+---------+---------+
Private Sub 処理年月_AfterUpdate()
  ' qry仕訳伝票Sel年月のRequery(該当年月のレコード表示)
  Me.Requery
  ' qry仕訳明細の科目CのRequery(年月により科目が増減する)
  [frm仕訳明細].[Form]![科目C].Requery
End Sub
---------+---------+---------+---------+---------+---------+---------+
このプログラムで表示される伝票の年月が変更されます。たとえば、当月の処理をしているときに前月の伝票を見たくなったとき等に使用します。
次は「仕訳No」です。
---------+---------+---------+---------+---------+---------+---------+
Private Sub 仕訳No_Enter()
' カーソルが仕訳Noに置かれるまでは採番しない
On Error GoTo Err_仕訳No_Enter
  ' 仕訳Noを採番する(tbl仕訳見出がInsertされる)
  If IsNull(Me![仕訳No]) Or (Me![仕訳No] = 1) Then
    Me![仕訳No] = DMax("仕訳No", "tbl仕訳見出") + 1
    Me.Dirty = True     'cmdNewをenableとするため
    ahtHandleKeys Me    'cmdNewをenableとするため
  End If
Exit_仕訳No_Enter:
  Exit Sub
Err_仕訳No_Enter:
  MsgBox Err.Description
  Resume Exit_仕訳No_Enter
End Sub
---------+---------+---------+---------+---------+---------+---------+
ここでは伝票管理番号としての「仕訳No」の採番をしています。単に既存の仕訳No+1としています。多人数で同時に使用することは前提していません。
次は「貸借バランス」ですが、ここではqry仕訳明細のFutterで SUM「借方」-SUM「貸方」を計算して表示しています。


あとは所謂、COMMIT と ROLLBACK ですが、これは章を改めて次回に解説します。


♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(8) おじんEulerHepjeanの余生の過ごし方その032-会計-20240508-0500

  ここから振替伝票入力フォームを設計していきます。まずは連結フォームの RecordSource に使われるクエリを説明します。

 

 
このFormのProperties「Form」も併せて表示してあります。RecordSourceに「qry仕訳見出Sel年月」が設定されています。このFormの連結先のクエリです。ではその「qry仕訳見出Sel年月」の設計画面を示しましょう。

 


これはクエリの設計画面ですが「仕訳No」「仕訳日」「部門C」「見出摘要」は「tbl仕訳見出」での設定項目です。テーブルの主キーは「仕訳No」です。唯一「会計年月」という項目をクエリをして追加しました。『会計年月:Format(「仕訳日」,"yyyymm")』意味は「仕訳日」の年月部分を「会計年月」という名前で切り出すという意味です。例えば仕訳日が 20240508 だとすると会計年月は 202405 となります。表示される伝票を絞るのに利用されます。


次はサブフォームの設計画面をお見せしましょう。


 メインの振替伝票フォームの下半分に埋め込まれたサブフォームの実態が「frm仕訳明細」です。ここに登録される明細情報は「仕訳No」というキー項目で親情報と関連付けられます。このフォームのレコードソースは「qry仕訳明細」というクエリをRecordSourceに持つ「frm仕訳明細」そのものです。これはFormFutterを利用したいからです。


 
これも「仕訳No」「行No」「貸借区分」「科目C」「仕訳額」「行摘要」はtbl仕訳明細の項目、「仕訳No」「行No」が主キーに設定されています。「貸借区分」の貸借によって「仕訳額」と「借方」または「貸方」に転記しています。


これら追加項目はクエリで作るのがプロです。テーブルで作成すると【正規化】に違反し後日、不具合が発生する原因になります。


次回は「振替伝票」のフォームにつき説明いたします。
♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(7) おじんEulerHepjeanの余生の過ごし方その031-会計-20240506-1800

 

 MSAccessの連結フォームはデータベースのテーブルにデータを入力するのに非常に強力に働いてくれます。見栄えとしての伝票を実装するマスターディテール構造モデルは完璧です。

ただ1つ、非常に残念なのはそのレコード更新のタイミングです。フォームに任せっきりにした場合、見出し情報はカーソルがサブフォーム内に立ち入ったタイミングで登録、また明細行は通常複数行存在しますが、これもカーソルが行を跨いだタイミングで登録されます。

業務の設計者が意図するのは、画面に入力された情報を確認し、良ければ『登録』、気が変われば『取消』を押すというように作業を進めたいのが意図せぬクズデータが勝手に登録される…アクセスを初めて人が最初に悩む、というか裏切られたァと思います。

データベースソフトでコレですから…MSAccessのトランザクションは使い物になりません(私の2冊目の著作、一応作りましたが使い物になりません)。このブログでは、この辺りもキッチリ対応いたします。というほどでもありません。チョットした工夫です。
では次回から実際にプログラム作成に入りましょう。
♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(6) おじんEulerHepjeanの余生の過ごし方その030-会計-20240506-1200

 私はこのブログで役立つ簿記を解説することでそのシステム化の過程を辿ることを思い描いています。


で、システム化の最初の一歩をどうするか考えたのですが、こうすることといたしました。


 
これはリレーションシップ図と呼ばれるもので、業務に使用されているテーブルやビュー(クエリ)のつながり具合を表現しています。実は、ストックとしてのテーブルをうまく設計し、フローとしてビューをうまく使えば実プログラムは半分以下に抑えられます。
それを実感していただくためにここからスタートすることとしました。図をクリック願えればすこし大きく表示されますが、tblで始まるのがテーブル、qryで始まるのがクエリです。テーブルとしては業務上の発生データとマスタ類に限定します。『正規化』が必要なのはテーブルでクエリはそんな制限は受けません。業務が組みやすいように多いに重複させればいいのです。
図の中央の一等席に「tbl仕訳見出」と「tbl仕訳明細」が見えますがこれは入力伝票フォームのレコードソースではありません。連結フォームのソースとなるのは
「qry仕訳見出Sel年月」と「qry仕訳明細」です。ただこれらは【更新可能クエリ】である必要があります。「qry仕訳見出Sel年月」の末尾に「会計年月」という項目がありますが、これは「仕訳日」の年月部分をFORMAT関数を用いて抽出したものです。伝票の表示条件に使用しますが、もしこれを入力項目としたら年月部で齟齬が発生する可能性があり余分なチェック作業が必要になります。もう1つ「qry仕訳明細」には「借方」「貸方」がこれは貸借区分によって「仕訳額」をどちらかにコピーしています。このクエリの仕組みによって総勘定元帳への転記が一瞬化されます。プログラムを書くことだけがシステム化ではないのです。


以下にもこういうレベルのお話を続けることになると思います。


♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)

 

伝票会計のプログラムを作る(5) おじんEulerHepjeanの余生の過ごし方その029-会計-20240505-0900

 号外です。十数年前に発行した私の書いた本がまだネット販売されてましたので紹介します。

 

 

あまり評判は良くなかったみたいです。簡潔に過ぎたかナ~本質的なことをズバリまとめた著作でした。
♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥♥♥♥♡♥♥♥♥♥♥
著作者情報・・・というほどではありませんが・・・
芸名 Euler HepJean 理学修士技術士
現況 75歳。高齢者施設で車椅子暮らし。孫と外食散歩したく自主筋トレ中…
   あァ若いころはSEとしてIBMに勤務してました。
メール fukjun13@gmail.com
(済)