20年使用した請求書システムを変えることに抵抗がある

このQ&Aのポイント
  • 20年近く使い続けた請求書システムを変えることに抵抗があり、新しいフォームを付け加えることなどで対応できないか考えています。
  • 請求先ごとに税計算方法を区別しようとしたが、中身が変わる不具合が心配で他の案を探している。
  • 請求書システムを変更するために、以下の対応策を考えています。1. 標準モジュールのコードを作成して税計算を実行する。2. 得意先テーブルに税区分フィールドを追加し、入力規則を設定する。3. 請求書のレコードソースに税区分フィールドを追加する。4. マクロを作成して税計算を実行する。5. 得意先登録フォームに税区分フィールドを追加する。
回答を見る
  • ベストアンサー

20年近く使い続けた請求書システムを変えることに抵抗があり、新しいフォ

20年近く使い続けた請求書システムを変えることに抵抗があり、新しいフォームを付け加えることなどで対応できないか考えています・・・良い案があったら教えてください! 以下の順序で請求先によって消費税の計算方法を区別しようとしたのですが、中身が大幅に変わることで後々の不具合などに応対できるか心配で、他の案を探しています! 1標準モジュールに以下のコードを作成しました。 Public Function TaxInterPre(iNum As Variant, cVal As Variant) As Currency On Error Resume Next TaxInterPre = 0 If (IsNull(iNum) Or IsNull(cVal)) Then Exit Function Select Case iNum Case 1 TaxInterPre = Int(cVal) Case 2 TaxInterPre = funcSG(cVal) End Select End Function Public Function funcSG(ByVal xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.5) Else xCy = Int(xCy - 0.5) End If funcSG = xCy End Function 2得意先名テーブルに税区分フィールドを追加し、入力規則を1 Or 2としました。 3請新フォーム(請求書新規作成)と請修フォーム(請求書修正)のレコードソースとなっているクエリにそれぞれ税区分フィールドを追加しました。 4以下のマクロを作成しました。 アクション 値の代入 アイテム [Forms]![請新フォーム]![消費税額] 式 TaxInterPre ( [税区分] , Forms![請新フォーム]![税抜金額] *0.05) アクション 値の代入 アイテム [Forms]![請修フォーム]![消費税額] 式 TaxInterPre ( [税区分] , Forms![請修フォーム]![税抜金額] *0.05) 5得意先名登録フォームに税区分フィールドを追加しました。

noname#137913
noname#137913

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

以前も申し上げましたが、得意先番号と請求先番号が 別々に管理され、得意先番号と請求先番号につながりが ない、という現状ではどのようにシステムを補強しても どのような有効な関数などを取り入れても使い物に ならないということをもう一度確認してください。 それが解消できれば、以前提案した方法は何の障害も無く システムに組み込むことができたはずです。 消費税の切り替えは、必要な個々の関数の作成や関数の 呼び出し方法については質問すれば誰かが案を出してくれます。 しかし、もとになるシステムの保守が20年の間にいろいろな 人が付け加えていった結果、得意先番号と請求先番号が 別々に管理されるということになったのかもしれません。 それでは、ある得意先の売上げと請求額はどのように して特定していたのか、という疑問がおおいに残るのですが。 システムの中で、得意先に関することは、販売実績の閲覧 であろうと請求書の作成であろうとすべて得意先マスタに 登録している得意先番号で行なうべきです。 たとえば、商品番号にしても出荷と入荷の商品番号が違って いれば何もできなくなるのは自明のことです。 システムを膨らませていく毎にいろいろな人の考えたものが 入っていきます。しかし、得意先番号のような商売の根幹 に関わるようなデータがシステム全体で一貫して使用され ていないならば、いろいろな提案も行き違いになるのは 目に見えています。 質問の中の関数には私も関わった手前、このように申し あげている次第です。ekusenさんがシステムを業務の 変化に合わせて、あるいは先取りして再構築したいという 気持ちは良く分かります。また、部分的にいろいろ 変更していくことで業務に支障の出ることが起きは しないかという心配もわかります。しかし、アバウトな 提案はさておき、質問を凝視して裏の事情を考えながらの 提案は、時としてこのようなことが後から判明すると お互いの混乱の元になります。それは他のekusenさんの 質問でも同様です。 苦言を呈すようになってしまいましたが、ekusenさんの やる気と切実さはわかっているつもりです。以前の 質問をもう一度読み直してみます。

noname#137913
質問者

お礼

ありがとうございます! こちらのシステムで得意先の売上を管理していないのでこのようなことになったのかもしれません・・・ 請求先コードの名前を得意先コードに変えて対応できるのでしょうか? ちなみに請求先コードと得意先コードは同じ値です。 得意先名テーブルの得意先コードが"1"で請求明細テーブルの請求先コードが"∞"でリレーションシップがあるのですがそれでもだめでしょうか・・・?

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

長い目で見たときに、 「内税・外税」の仕様と「税率」の仕様で どちらが将来仕組みが変わるかと言われたら「税率」の方だと思うので、 これを機に「税率」の仕様もシステム化(フォームから設定値更新で済む等)の 方が良いかと思います。 funcSGについては、それ単体で意味があるのかどうか、 分ける必要もないように思います。

noname#137913
質問者

お礼

ありがとうございます! 税率のシステムを変える方向で一度進めてみます。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

「消費税の計算方法を区別」というのは内税・外税の話ですか、税率ですか?。 実現になるかわかりませんが、 「消費税率10%」というのもチラホラ言われています。 システム化改善でこれは視野に入れないのでしょうか?。 共通化できるものは、共通化で良いと思います。 funcSGはTaxInterPreからしかCALLされないのかどうか、 ほかからもCALLされることがあるのかどうか、そこはわかりません。

noname#137913
質問者

お礼

ありがとうございます! 請求書で外税で小計を載せて、消費税額を載せて、合計額も載せているので外税の話だと思います。 funcSGはTaxInterPreと同時に作成したのでTaxInterPreからしかCALLされません。 消費税率の変更はマクロの式の変更で対応する予定なのですが、これではやはり問題があるのでしょうか?

関連するQ&A

  • 税区分によって消費税を区別

    見積請求納品システムというアクセス2000で請求書等を作成しています。 (Windows XP home edition) その中で今回関係するのは 得意先名テーブル 請新フォーム 請修フォーム だと思いますが補足が必要かもしれません。 1.アクセスのモジュールにTax関数を作成しました。 Public Function Tax(Anum As Variant, Bnum As Variant) As Currency On Error Resume Next Tax = 0 If (IsNull(Anum) Or IsNull(Bnum)) Then Exit Function Select Case Anum Case 1 Tax = Int(Bnum) Case 2 Tax = Int(Bnum + 0.9) Case 3 Tax = Format(Bnum, "0") End Select End Function 2.得意先名テーブルに税区分フィールドを作成しました。 3.請求書新規作成フォームと請求書修正フォームのレコードソースとなっているクエリに税区分フィールドを追加しました。 4.請求書新規作成フォームと請求書修正フォームの工数・数量、単価、金額(それぞれ1~10)のテキストボックスのフォーカス喪失時イベントにあるマクロを以下のようにしました。 アイテム [Forms]![請新フォーム]![消費税額] 式     Tax([税区分],[Forms]![請新フォーム]![税抜金額]*0.05) アイテム [Forms]![請修フォーム]![消費税額] 式     Tax([税区分],[Forms]![請修フォーム]![税抜金額]*0.05) 上記のようにしてフォームで工数・数量、単価、金額のいずれかを入力すると 「指定した式に、Microsoft Access が見つけることができない関数名が含まれています。」 となり上記のアイテムと式が表示されます。 モジュールで関数を作成したのにどうしてできないのでしょうか・・・ 教えてください!!!

  • 取引先の消費税の計算方法を四捨五入と切り捨てに区別

    MicrsoftAccess2000「見積請求納品システム」を使用しています。 取引先の消費税の計算方法を四捨五入と切り捨てに区別したいです。 以前にも同じ質問をしたのですが、難しい為諦めました・・・。 ですが、やはりシステムの変更が必要なので教えてください! Module1に以下の式があります。 Public Function funcSG(xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.55) Else xCy = Int(xCy - 0.55) End If funcSG = xCy End Function 請求書コマンドマクロは以下のようになっています。 マクロ名 計算 アクション 値の代入 アイテム [Forms]![請新フォーム]![消費税額] 式 funcSG([Forms]![請新フォーム]![税抜金額]*0.05) アイテム [Forms]![請修フォーム]![消費税額] 式 funcSG([Forms]![請修フォーム]![税抜金額]*0.05) 今は全て四捨五入されるようになっていると思うので、切り捨てもできるようにしたいです。 得意先テーブルに消費税区分を設けて区別したいです! 宜しくお願い致します!

  • MicrosoftAccess2000 消費税の計算方法 他の方法を教えてください

    MicrosoftAccess2000「見積請求納品システム」を使用しています。 来月から取引先の一社のみ消費税の計算方法を四捨五入に変更します。 知識不足のためシステム自体の変更は諦めました。 1.通常通り作成 2.印刷前にデスクトップに見積請求納品システムのコピー作成。 3.請求書コマンドマクロのデザインビューを開く。 マクロ名:計算2 アクション:値の代入 アイテム:[Forms]![請修フォーム]![消費税額] 式:Int(CCur([Forms]![請修フォーム]![税抜金額]*0.05)) 4.上記に該当するマクロの式を下のように変更。 round([Forms]![請修フォーム]![税抜金額]*0.05,0) 5.工数・数量を再入力して四捨五入されたデータを作成。 6.それを印刷して終了。 今は上記の方法しか思いつかないのですが他にあれば教えてください!!

  • 自作のCOMをアプリケーションで使用するには

    こんにちは、Makotoと申します。 VB6で以下のような簡単なCOMを作成しました。 Public Function tasizan(a As Currency, b As Currency) As Currency tasizan = a + b End Function Public Function hikizan(a As Currency, b As Currency) As Currency hikizan = a - b End Function Public Function kakezan(a As Currency, b As Currency) As Currency kakezan = a * b End Function Public Function warizan(a As Currency, b As Currency) As Currency warizan = a / b End Function KeisanComというdllを作成し、標準EXEでこのdll を使用したいのですが、どのようにして呼び出せばよいのでしょうか?

  • Access 2000一社のみ消費税計算方法変更 助言頂きたいです!!!

    Microsoft Access 2000で作成された「見積請求納品システム」を使っています。 来月から取引先の一社のみ消費税の計算方法を四捨五入に変更します。 「請求書コマンドマクロ」で マクロ名:計算 アクション:値の代入 アイテム:[Forms]![請新フォーム]![消費税額] 式:Int(CCur([Forms]![請新フォーム]![税抜金額]*0.05)) で計算しています。 他の質問を見ると、得意先名テーブルに消費税の扱い方区分を持たせると書いてあったので 得意先コード テキスト型 得意先名   テキスト型 略称     テキスト型 郵便番号   テキスト型 住所1    テキスト型 住所2    テキスト型 電話番号   テキスト型 振込先コード テキスト型 消費税区分  テキスト型 としてみましたが、この後何をどうつなげたらいいのか分かりません・・・ まずまとをえた質問をする為にも、助言頂きたいです!!!

  • アクセスクエリでの空白の値の表示

    フォームで条件フィールドから2つ同時の検索をかけたく クエリに以下の式を記載致しました。 検索はかかるのですが空白のデータがでてきません。 空白のデーターも表示させたいためにはどうしたらいいでしょうか? 式1: IIf(IsNull([Forms]![フォーム]![条件1]) And IsNull([Forms]![フォーム]![条件2]),True,[条件]=[Forms]![フォーム]![条件1]Or [条件]=[Forms]![フォーム]![条件2] 抽出条件  True

  • VBAでサブフォームに自動的にデータを入力したい。

    VBAでサブフォームに自動的にデータを入力したい。 メインフォームに[工期自][工期至]フィールドがあります。 サブフォームに[請求予定日]フィールドがあります。 メインとサブは[管理No.]フィールドで繋がっています。 メインフォームの"請求"テキストをクリックすると、サブフォームが開きます。 そこで[工期至]フォーカス喪失時に、自動で[請求予定日]が入るようにしようと思います。 工期の期間中、毎月月末が請求予定日になります。 [工期自]の入力が無い場合は[工期至]の月の月末のみ請求になります。 下記のようなプロシージャを書いてみましたが、結果、データが全く入りません。 ADO(←まだ全く分かりません)というのを使わないとできないでしょうか? すいませんごちゃごちゃしてますが宜しくお願いします! Private Sub 工期至_Exit(Cancel As Integer) Dim SEIKYU As Date Dim TUKI As Integer Dim SYURYO As Integer DoCmd.OpenForm "サブ", acFormDS, , "管理No.='" & Me!管理No. & "'", acFormEdit If IsNull(Forms!サブ!請求書発行) Then If IsNull(Me.工期自.Value) Then SEIKYU = Me.工期至 TUKI = Month([工期至]) Else SEIKYU = Me.工期自 TUKI = Month([工期自]) End If SYURYO = Month([工期至]) + 1 Do Until TUKI = SYURYO Forms!サブ!管理No. = "[forms]![メイン]![管理No.]" Forms!サブ!請求書発行 = DateSerial(Year(SEIKYU), Month(SEIKYU) + 1, 0) SEIKYU = DateAdd("m", 1, SEIKYU) TUKI = Month(SEIKYU) Loop DoCmd.CLOSE acForm, "サブ" End If End Sub

  • datagridviewでたまに例外・・

    モジュールからフォームの関数を呼び出し時にたまに以下の例外が発生しており、 なぜ例外が発生するのか原因がわからず困っています。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 場所 System.Windows.Forms.DataGridViewIntLinkedList.Remove(Int32 integer) 場所 System.Windows.Forms.DataGridView.SetSelectedRowCore(Int32 rowIndex, Boolean selected) 場所 System.Windows.Forms.DataGridView.ClearSelection() 場所 System.Windows.Forms.DataGridView.set_SelectionMode(DataGridViewSelectionMode value) 以下のようなフォームがありgridset()はタイマーで動いているモジュールの関数より呼び出されます。 Public Class frmTest Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load gFrmTest = Me End Sub Public Function gridset() dataGridView1.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect ☆例外発生箇所    ・    ・ End Function End Class Module Modtest //以下はタイマーで何回も呼ばれる関数 Public Function aaa() As Integer gfrmTest.gridset() End Function End Module 環境はvb.net 2008です。 ご教示いただけますと助かります。 よろしくお願いします。

  • IIFのTRUE時に、2つのデータを対象としたい

    アクセスで管理簿を作成しています。 テーブル→クエリ→フォームと作成しています。 テーブル    請求の有無 処理状況 ・・・・・・・ 1  未請求      2  請求中     完了 3            未完了 4   済       完了 抽出フォーム  テキストボックス 請求の有無 [select請求の有無]             処理状況  [select処理状況] このようなテーブル、フォームを作っています。 クエリに、 Like IIf(IsNull([Forms]![F_メニュー]![select請求の有無]),"*",[Forms]![F_メニュー]![select請求の有無]) Like IIf(IsNull([Forms]![F_メニュー]![select請求の有無]),Null,[Forms]![F_メニュー]![select請求の有無]) Like IIf(IsNull([Forms]![F_メニュー]![select処理状況]),"*",[Forms]![F_メニュー]![select処理状況]) Like IIf(IsNull([Forms]![F_メニュー]![select処理状況),Null,[Forms]![F_メニュー]![select処理状況]) と2つのフィールドに抽出条件を2行ずつ記載していますが、SQLをみると、 抽出条件が最終的に、    select請求の有無"*" and select処理状況"*" or  select請求の有無Null and select処理状況Null という条件になっており、1行目や3行目の様に、NULL+データありが抽出できません。 Like IIF(IsNull(フォームA), NULL と"*" ,フォームA)                  ↑↑↑  この部分をNULLと"*"の両方とするような記述方法はありますでしょうか? ご教示の程よろしくお願い致します。

  • アクセス複数の条件で同じ書式をつけるには?

    条件付き書式です。(しかもVBAです) 一つのフィールドに対して違う条件だけど同じ書式をつけたい時、 まとめる事は出来ないのでしょうか? 例えばフォールド1の「あ」と「い」を赤にしたい場合、 Sub test01() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""" And "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub のような事は出来ないのでしょうか? これをすると 実行時エラー:型が一致しません。(Error 13) になります。 素直に、 Sub test02() Dim Field As String Dim MyFormName As String MyFormName = "フォーム" Field = "フィールド1" With Forms(MyFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""") .ForeColor = 225 End With With .Add(acExpression, , "[" & Field & "]=""い""") .ForeColor = 225 End With End With End With End Sub としなくちゃダメでしょうか? 何故こんな事がしたいかと言うと、3つ以上やりたい条件がありので、 同じ書式のものはまとめたいのです。 ご教授よろしくお願いします。

専門家に質問してみよう