伝票番号の採番で、西暦+5桁という仕様です。
これを、年が変わってから入力する際に

新しい年(度)+00001

としたいのですが、どのようにプログラムを組んだらいいのか分かりません。
ちなみに今までのプログラムでは
Format関数や、DMax関数を使って自動採番していました。

Access2000での開発です。
どうぞよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

パソコンのタイマーから・・・・=システムの日付ですかね?


どちらにしろできると思いますが・・・・

テーブル名:伝票

フィールド:伝票No(数値型/長整数型)
      日付(日付/時刻型)

Dim StrSeireki As String

StrSeireki = Format(Me.日付, "yyyy")

If DCount("伝票No", "伝票", "Left(伝票No,4) = " & StrSeireki) = 0 Then
  Me.伝票No = StrSeireki & "00001"
Else
  Me.伝票No = DMax("伝票No", "伝票") + 1
End If

以上、フォーム上の日付更新時のコードです。
動作確認済み。
システムの時間をご希望であれば
Me.日付 → date()
にご変更を!

日付更新時に変更されないよう新規レコードのCheckは必要になるとは思いますが。
がんばって下さい。
    • good
    • 0

伝票に日付を入力するフィールドがあるのであれば



1)format関数にて西暦の抜き出し
2)Recordset若しくはDCountによりレコード数を取得
3)レコード数0(ゼロ)の時のみ西暦+00001を伝票番号に代入

以上のような方法で如何でしょうか(^ ^)
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

実はこの方法、一度試していたんです。
西暦の抜き出しは、伝票の日付からではなくて
パソコンのタイマーからなんですけど・・・
結果はというと、

 新しい年(度)+昨年からの番号の続き

という結果でして(汗)
伝票の日付からの抜き出しでも同じことだと思います。
やはりテーブルに直接入力ですかね。

いや、もうちょいがんばってみます。
それでは失礼します

お礼日時:2002/01/10 17:42

> DMax関数を使って自動採番していました。



新しい年(度)+00000 のダミーレコードを作成しておく、ではいかがですか?
    • good
    • 0
この回答へのお礼

回答、どうもありがとうございます。

はっきり言ってこの方法が一番手っ取り早いですよね。
でもやはり、こういうプログラムって作れるのか、という
興味と自分を試す意味でやってはみたもののなかなか・・・
まだまだ修行が足りないみたいです。(苦笑)

お礼日時:2002/01/10 17:11

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q通信販売における配送伝票の保管義務について

通信販売において、注文や配送の控えの保管義務についてお教え下さい。
お客様からの注文ハガキ、注文FAX、また、こちらからの配送伝票について、法律的に何年間保管をしなければならない。という決まりはあるのでしょうか?
以前に何かで3年から5年の保管義務があるときいたのですが、3年から5年の違いは何でしょうか?

Aベストアンサー

税務上は下記のURLが参考になると思います(下の方に保存期間があります)。

参考URL:http://www.e-tohmatsu.com/ek/keyword/2004/key041217_2.shtml

Qアクセス メインフォームの伝票番号(DMax関数で連番)が11番以上自動連番されない。

こんばんは。どうしてなのか、原因がみつけられません。
解決方法をご教示いただけないでしょうか?よろしくお願いいたします。

事象:メインフォームの伝票番号が11番以上は自動連番されない。
(伝票番号10までは、新規追加すれば発番できていたのに、11以降、手入力で対応中。)

仕様:
table:伝票テーブル(伝票番号フィールドはテキスト型)
明細テーブル(明細番号フィールドはオートナンバー型)
※明細テーブルに伝票番号フィールドがあって、伝票テーブルの伝票番号フィールドとリレーションシップがかかっています。
Query:伝票クエリ
明細クエリ
Form:伝票フォーム
(伝票番号のプロパティ\データ\規定値に、=Nz(DMax("[伝票番号]","伝票テーブル")+1,1)と設定)
   明細フォーム

伝票フォームに、明細フォームをサブフォームとして組み込んでいます。
新規追加をすれば、伝票番号が発番されて、サブフォームへ明細情報を入力する。

イメージ画像添付します。

どうすれば、11以降も、自動連番されるのでしょうか?
困っています。どうかよろしくお願いいたします。

こんばんは。どうしてなのか、原因がみつけられません。
解決方法をご教示いただけないでしょうか?よろしくお願いいたします。

事象:メインフォームの伝票番号が11番以上は自動連番されない。
(伝票番号10までは、新規追加すれば発番できていたのに、11以降、手入力で対応中。)

仕様:
table:伝票テーブル(伝票番号フィールドはテキスト型)
明細テーブル(明細番号フィールドはオートナンバー型)
※明細テーブルに伝票番号フィールドがあって、伝票テーブルの伝票番号フィールドとリレ...続きを読む

Aベストアンサー

テキスト型の比較では
"10" < "2" ですからね。

伝票番号フィールド を 数値型にすれば問題ないんですが、
それじゃダメなの?

Q会社で保管義務のある税務関係などの書類をPDFで保存しておくのは認められるのでしょうか?

会社で保管義務のある税務関係などの書類をPDFで保存しておくのは認められるのでしょうか?どなたか詳しい方よろしくお願いします。

Aベストアンサー

国税関係帳簿の電磁的記録等による保存等の承認を
受けていれば認められます。
詳しくはこちらで・・・
http://www.nta.go.jp/tetsuzuki/shinsei/annai/denshichobo/mokuji.htm

QAccessで自前の自動採番処理で採番テーブルを

Accessで自前の自動採番処理で採番テーブルを作り、その採番テーブルに格納してある最後の主キーのNO.を取得して、それに1加算したものを、新規レコードの主キーの自動採番処理結果として設定するやり方を考えていますが、その場合に

1) 複数レコードにエクセルなどから複数行データをコピーして貼り付けた場合には、採番がうまくいくのでしょうか?行かない場合には、その対処策はありますでしょうか。

2) 一行、または、複数行を削除した場合には、採番は既に登録済みの最後のNo.から自動採番するようになると思いますが、通常のアクセスのシステムでは、このような挙動で宜しいのでしょうか?

ご回答のほうよろしくお願いします。

Aベストアンサー

#1 の回答は番号フィールドにNull がある複数のレコードが存在する場合の
サンプルです。
※最後に採番テーブルの番号の値を変更するのが抜けてました。
rs.close:set rs =nothing の前に
currentdb.execute("update 採番テーブル set 番号 =" & maxnum)
を追加してください。

1レコードずつ手入力で行っている場合はまた別の話になります。
フォームのレコード移動時イベントに
if me.newrecord then
me!フォームの番号コントロール名 = Nz(DMax("番号", "採番テーブル"), 0) +1
・・・とかになりますが
採番テーブルの方の番号を更新するタイミングは更新前処理に行えば
良いでしょう。

が、もしかしてマルチユーザー環境で・・・と考えているのなら
全部忘れてください。ハードルがぐっと上がりますので確かな回答は出来ません。
こちらが参考になるかと思いますけど。。。
[VB] DAO でユーザー定義カウンターを実装する方法
http://support2.microsoft.com/default.aspx?scid=kb;ja;191253

私からは以上です。

#1 の回答は番号フィールドにNull がある複数のレコードが存在する場合の
サンプルです。
※最後に採番テーブルの番号の値を変更するのが抜けてました。
rs.close:set rs =nothing の前に
currentdb.execute("update 採番テーブル set 番号 =" & maxnum)
を追加してください。

1レコードずつ手入力で行っている場合はまた別の話になります。
フォームのレコード移動時イベントに
if me.newrecord then
me!フォームの番号コントロール名 = Nz(DMax("番号", "採番テーブル"), 0) +1
・・・とかになりますが
採番テ...続きを読む

Q設計士による税務上の伝票代とは?

自宅新築に際して、設計事務所(個人経営)にお願いしました。
建築は工務店と契約しましたが、地盤補強と空調(床暖房とエアコン)とキッチンは別の専門業者の納入でした。
その別業者全てについてですが、設計士の説明では「業者向け業者で個人とは契約してくれない」と言って、全て設計士を間に挟む形でした。
請求金額=業者の設計士向け請求書×1.04(4%上乗せ)×1.05(消費税)でした。
この上乗せ分は税務上必要なので伝票代としてもらう、との説明でしたが、こういうものなのでしょうか?

Aベストアンサー

>この上乗せ分は税務上必要なので伝票代としてもらう、
本心はどうかは別にして、「100万円で、キッチンを仕入れて、同じく100万円で質問者様に売ると、税務署から、寄付の様な扱いと見なされ、脱税の疑いがかけられる。従って、本当は工銭は頂きたくないのですが、そう言った理由で、4%の上乗せをさせて頂く。」
と言うことでしょう。まず税務署から疑いをかけられることは無いと思いますが・・・。
>業者向け業者で個人とは契約してくれない
そりゃまた、特殊な業者に頼まれたのですね。
キッチンメーカー(例えばタカラスタンダード)や、空調メーカー(ダイキンなど)が直接個人客に売ることはありません。必ず最低限代理店が入ります。
今回のケースは代理店→設計事務所→質問者様であり、良くあるパターンは設計事務所の代わりに工務店が入るパターンです。工務店の工銭は20~30%ぐらいなので、4%は格安ですが、通常の代理店であれば、直接個人客にも売ったり、施工したりするはずです。ただし現金払いになりますが。
 ちなみに代理店から直接買った場合、20~30%安く買えそうですが、代理店側ももちろんそのあたりは重々分かっているのでそれほど安くならない場合が多いと思います。代理店社長の考え方ひとつでしょう。
結局今回のように、質問者様が安く買われたか、設計事務所の工銭が入った分高く買ったかどうかは、分かりません。要はご自身が納得されているかどうかが重要だと思います。
 この設計事務所、4%とオープンにしている点は良心的ですが、説明が回りくどく、不親切な部分はありますね。「別施工で、別業者の監理もしっかりさせて頂くので4%だけ頂きます」と言えばよいのに。設計者と施主の関係って、どうもこのあたりのビジネスライクな話が出来ずらい雰囲気はありますね。

>この上乗せ分は税務上必要なので伝票代としてもらう、
本心はどうかは別にして、「100万円で、キッチンを仕入れて、同じく100万円で質問者様に売ると、税務署から、寄付の様な扱いと見なされ、脱税の疑いがかけられる。従って、本当は工銭は頂きたくないのですが、そう言った理由で、4%の上乗せをさせて頂く。」
と言うことでしょう。まず税務署から疑いをかけられることは無いと思いますが・・・。
>業者向け業者で個人とは契約してくれない
そりゃまた、特殊な業者に頼まれたのですね。
キッチン...続きを読む

QAccess 文字+年ごとの自動採番

Accessは全くの初心者です。
プログラマーさんのサイトや質問サイトを参考に、初めてデータベースを作っているのですが、
どうしても文字+年ごとの自動採番がうまくいきません。

挿入前処理で「営250001」のように漢字1文字+和暦2桁+4桁連番にして、
年が変わるごとに4桁連番を0001に戻したいのです。

今入力してあるコードは以下の通りです。

-----------------------------------------------------------------------------
Private Sub Form_BeforeInsert(Cancel As Integer)

 Dim vDt As Variant

 vDt = DMax("番号", "営テーブル", "番号 Like '" & Format(Date, "ee") & "*'")
 If (IsNull(vDt)) Then
  番号 = "営" & Format(Date, "ee") & "0001"
 Else
  番号 = "営" & Left(vDt, 2) & Format(Val(Right(vDt, 4)) + 1, "0000")
 End If

End Sub
-----------------------------------------------------------------------------
この状態では、0001のまま採番が進まず、行き詰ってしまいました。

他の質問者さんが(Date,"ee")を(Now,"nn")に置き換えて、分ごとの採番を試していたのを参考に、
「"営"&」を取って、採番が進むところまでは確認できました。

使っているのはAccess2003です。

どうか、よろしくお願いします。

Accessは全くの初心者です。
プログラマーさんのサイトや質問サイトを参考に、初めてデータベースを作っているのですが、
どうしても文字+年ごとの自動採番がうまくいきません。

挿入前処理で「営250001」のように漢字1文字+和暦2桁+4桁連番にして、
年が変わるごとに4桁連番を0001に戻したいのです。

今入力してあるコードは以下の通りです。

-----------------------------------------------------------------------------
Private Sub Form_BeforeInsert(Cancel As Integer)

 Dim vDt As Variant

 ...続きを読む

Aベストアンサー

> vDt = DMax("番号", "営テーブル", "番号 Like '" & Format(Date, "ee") & "*'")

これでは、先頭の 「漢字1文字」 が無視されていますね。

vDt = DMax("番号", "営テーブル", "番号 Like '営" & Format(Date, "ee") & "*'")

とか、

vDt = DMax("番号", "営テーブル", "番号 Like '?" & Format(Date, "ee") & "*'")

さらに
> 番号 = "営" & Left(vDt, 2) & Format(Val(Right(vDt, 4)) + 1, "0000")


番号 = Left(vDt, 3) & Format(Val(Right(vDt, 4)) + 1, "0000")


上記は
"営テーブル"の "番号"フィールドには , 「営250001」 のように保存されているものとします。
1桁目は"営"固定の場合です。
そうでない場合は、また変わってきます。

Q伝票打ち出し必要?

中小企業です。
売掛金・買掛金伝票があると思うのですが、
仕訳(件数)が数百件あります。

みなさんの会社でもたくさんあるとおもうのですが
この仕訳伝票は打ち出し保管していますか?
(ほかの仕訳伝票は打ち出しています)
会社法等によりやはり打ち出し、紙での保管は必須なんでしょうか?
教え下さい。

Aベストアンサー

一枚一枚振替伝票を印刷・保管せず、仕訳帳等を印刷して保管します。
100の仕訳があっても一枚一枚伝票にすれば、かなり紙を食いますが
仕訳帳形式だと1枚に20行~30行は仕訳が印刷できますので
仕訳数が増えても保管場所に困ることはないでしょう。

Qaccess 請求番号の自動採番

まったくわかりません!
よろしくお願いします。
仕様環境
WinXP  access2002

顧客管理のシステムを作っています。

テーブル
顧客テーブル(主キーは顧客番号 テキスト型)
請求テーブル(主キーは請求番号 テキスト型)
明細テーブル(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。)

そしてリレーションシップで顧客テーブル(1)→(多)請求テーブル(1)→(多)明細テーブルになっています。

顧客情報を入力するフォームを作りました。
主キーは顧客番号(テキスト型,入力モードON,インデックス いいえ)で
他のテキストボックス(例えば名前)に何かしら文字を入力すると自動で顧客番号を採番してくれます。
例:0001 0002 0003~

そしてそのフォームから請求書作成フォームに飛ぶように
「請求書作成ボタン」を作り、顧客情報も一緒にひっぱっていってくれる
請求書作成フォームを作りました。(入力したばかりの情報も最新の情報で更新してくれます。)

・・請求書作成フォームはサブフォームを使い3つのテーブルからなっています。・・
親フォーム:顧客テーブルから。
子フォーム:請求テーブルから。
孫フォーム:明細テーブルから。

主キーは請求番号で(テキスト型,入力モードON,インデックス はい(重複なし))
他のテキストボックス(例えば請求日)に何かしら入力すると自動で請求番号を採番してくれます。
例:A0001

そこで問題なのですが、顧客情報は入力する度、次々自動で採番してくれるんですが、
請求番号は一番最初のレコードの”A0001”だけ採番してくれて、
新しいレコードで請求書を作ろうとテキストボックスに文字を入力すると「型が一致しません」というエラーが出ます。

○ エラー内容
アクションエラーの実行
条件
true
アクション名
値の代入
引数
[請求番号],Format(DMax("請求番号","請求マスタ")+1,"A0001")


マクロは・・(参考書を参考にしています、マクロ名:自動採番マクロ)
-------------------------------------------------
条件 : DCount("請求番号","請求テーブル")=0
アクション : 値の代入
アイテム  : [請求番号]
式     :"A0001"
-------------------------------------------------
条件    : ...
アクション : マクロの中止
-------------------------------------------------
アクション : 値の代入
アイテム  : [請求番号]
式     : Format(DMax("請求番号","請求テーブル")+1,"A0001")
-------------------------------------------------
となっています。

念のため、主キーの入力モードを切り替えたり、式の"A0001"を単純に"1"にしたりしましたが、
請求番号はエラーが発生します。

原因がまったくわかりません。
よろしくお願いします!

まったくわかりません!
よろしくお願いします。
仕様環境
WinXP  access2002

顧客管理のシステムを作っています。

テーブル
顧客テーブル(主キーは顧客番号 テキスト型)
請求テーブル(主キーは請求番号 テキスト型)
明細テーブル(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。)

そしてリレーションシップで顧客テーブル(1)→(多)請求テーブル(1)→(多)明細テーブルになっています。

顧客情報を入力するフォームを作りました。
主キーは顧客番号(テ...続きを読む

Aベストアンサー

エラーの原因は#1のご回答通りだと思いますが、請求書番号作りなどで苦労しなくても良いような気もします。
単純に請求書番号をオートナンバーにしておき、入力フォームで請求番号を
・書式:\A0000
・使用可能:いいえ
にしておく。後は請求書印刷時などにFormat関数で整形してやればよいのでは?

Q簿記の実務で入出伝票について教えてください。

入金、出金伝票の記入の仕方は、わかるのですが、取り扱いがわかりません。振り替え伝票のように別に保管すればいいのですか?それとも領収書と
一緒に保管するのですか?

また、これらは、現金出納帳のみに使用するのですか?わからなくて困っています。

Aベストアンサー

普通は「入出金伝票」を一括りとして振替伝票と一緒に保管します。
領収書の綴りは他の証憑と一緒に別の括りで保管することが多いと思います。
伝票の発行には必ずその原因となった証憑がありますから、その関係がわかるような保管をします。
伝票と証憑をつど一緒に閉じこむという方法もありますが、伝票と領収書との関係がわかりやすい反面、伝票だけを見たい時には見にくくなるので、経理データがある程度多い場合は別々に閉じこむことが一般的ではないかと思います。
入出金があったつど作成する原始伝票ですから、現金出納帳の元となるものです。
現金出納帳は他の補助元帳などと一緒に帳簿の一つとして保管することになります。

Qアクセス 項目ごとに自動採番

講座名ごとに受付番号を自動採番したいのですが、出来るのでしょうか?

テーブル名 セミナー受付(講座名、受付番号・・・)
講座名     受付番号
セミナーA   1001、1002、1003のように連番
セミナーB   2001、2002、2003のように連番

他のサイトを見ても解決できなかったので、ご指導をお願いします。

Aベストアンサー

#3です

コンボボックス「セミナー名」のクリック時イベントに以下を記述してみてください。

Private Sub セミナー名_Click()
  Dim iNumS As Long
  Dim vTmp As Variant

  If (IsNull(Me.セミナー名)) Then
    Me.受付番号 = Null
    Exit Sub
  End If

  Select Case Me.セミナー名
    Case "セミナーA": iNumS = 1000
    Case "セミナーB": iNumS = 2000
    Case "セミナーC": iNumS = 3000
  End Select

  Me.受付番号 = Nz(DMax("受付番号", "セミナー受付", "セミナー名 ='" & Me.セミナー名 & "'"), iNumS) + 1
End Sub


※ 
選択したセミナー名の採番初期値を設定しておきます。
セミナー受付テーブルから、登録されているセミナー名の受付番号最大値を求めます。
なかったら、採番初期値+1を、あったら、最大値+1を受付番号に設定します。


※ この書き方になるとセミナー名が変わったとか・・・で修正が必要になります。
そこでコンボボックスに非表示で採番初期値を設定しておきます。

テーブル「T講座一覧」
講座ID 講座名  採番初期値
1   セミナーA  1000
2   セミナーB  2000
3   セミナーC  3000

コンボボックスの値集合ソースは、
SELECT 講座名, 採番初期値 FROM T講座一覧 ORDER BY 講座名;
として、
連結列: 1
列数: 2
列幅:4cm;0cm (2列目を表示しないように0に:4部分は適当に)

としておけば、

  Select Case Me.セミナー名
    Case "セミナーA": iNumS = 1000
    Case "セミナーB": iNumS = 2000
    Case "セミナーC": iNumS = 3000
  End Select

部分は、

  iNumS = Me.セミナー名.Column(1)

で、後々修正が要らなくなります。
(テーブルの内容を書き換えるだけの修正になります)

#3です

コンボボックス「セミナー名」のクリック時イベントに以下を記述してみてください。

Private Sub セミナー名_Click()
  Dim iNumS As Long
  Dim vTmp As Variant

  If (IsNull(Me.セミナー名)) Then
    Me.受付番号 = Null
    Exit Sub
  End If

  Select Case Me.セミナー名
    Case "セミナーA": iNumS = 1000
    Case "セミナーB": iNumS = 2000
    Case "セミナーC": iNumS = 3000
  End Select

  Me.受付番号 = Nz(DMax("受付番号...続きを読む


人気Q&Aランキング

おすすめ情報