Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


752 / 2272 ツリー ←次へ | 前へ→

【10291】和暦チェック ぎんばしゃ 08/3/4(火) 13:28 質問[未読]
【10292】Re:和暦チェック neptune 08/3/4(火) 14:08 発言[未読]
【10293】Re:和暦チェック VBWASURETA 08/3/4(火) 16:56 質問[未読]
【10294】Re:和暦チェック ぎんばしゃ 08/3/5(水) 8:46 発言[未読]
【10295】Re:和暦チェック VBWASURETA 08/3/5(水) 14:54 回答[未読]
【10300】Re:和暦チェック VBWASURETA 08/3/13(木) 10:40 回答[未読]

【10291】和暦チェック
質問  ぎんばしゃ  - 08/3/4(火) 13:28 -

引用なし
パスワード
   フォームのテキストボックスに和暦の値を入力する
箇所を作成し、和暦を入力後、形式(日付)が異なる場合は
データが消えるようにしたいのですが
うまくいきません。

入力形式は7文字で
・和暦(1文字)
 1:明治
 2:大正
 3:昭和
 4:平成 
・年(2文字)
・月(2文字)
・日(2文字)

平成11年2月9日の場合は4110209になります。

【10292】Re:和暦チェック
発言  neptune  - 08/3/4(火) 14:08 -

引用なし
パスワード
   ▼ぎんばしゃ さん:
こんにちは

提案になりますが、
>フォームのテキストボックスに和暦の値を入力する
のではなくComboBoxを使用したらどうですか?

>箇所を作成し、和暦を入力後、形式(日付)が異なる場合は
>データが消えるようにしたいのですが
消えるとはどういう意味でしょうか?どこから、どのデータを消すのか?

>うまくいきません。
現在どの様な処理をして、どのような結果を得ているかを書かなければ
回答する皆さんも無駄な想像をしなければなりません。
現状を書く事をお勧めします。

>
>入力形式は7文字で
>・和暦(1文字)
> 1:明治
> 2:大正
> 3:昭和
> 4:平成 
>・年(2文字)
>・月(2文字)
>・日(2文字)
>
>平成11年2月9日の場合は4110209になります。

【10293】Re:和暦チェック
質問  VBWASURETA  - 08/3/4(火) 16:56 -

引用なし
パスワード
   ▼ぎんばしゃ さん、neptune さん:

こんにちは。
制限というのは、例えばこいう感じですか?

入力年制限:
1.明治 1〜45年(7/29まで)
2.大正 1〜15年(12/24まで)
3.昭和 1〜64年(1/7まで)
4.平成 1〜現在


入力例:
 2160101 結果:×
 2151224 結果:○

【10294】Re:和暦チェック
発言  ぎんばしゃ  - 08/3/5(水) 8:46 -

引用なし
パスワード
   ▼VBWASURETA さん

>入力年制限:
>1.明治 1〜45年(7/29まで)
>2.大正 1〜15年(12/24まで)
>3.昭和 1〜64年(1/7まで)
>4.平成 1〜現在

そうです。

説明がたりませんでした。
各和暦ごとで入力制限をかけたいと
おもっていました。

【10295】Re:和暦チェック
回答  VBWASURETA  - 08/3/5(水) 14:54 -

引用なし
パスワード
   ▼ぎんばしゃ さん:
こんにちは。

簡単な条件でするのでしたら、構造体と配列で制限値を入れると
出来ると思います。
例えば以下のような感じで配列とデータを用意して
後は条件を作ることで出来ると思います。

例:

Type userYear
  intYear As Integer
  ChakDate As Date
End Type

Dim testyear() As userYear

Sub test()
  Dim textdate As Date
  
  '制限年データセット
  setYaerdata
  
  '*** ここに条件式 ***

End Sub

'制限データセット関数
Function setYaerdata()
  ReDim testyear(3) As userYear
  
  '配列はtestyear(暦値,制限値)の二次元配列で管理
  '素数2番目が 0 は制限年
  testyear(0).intYear = 15      '15年まで
  '素数2番目が 1 は制限年月日
  testyear(0).ChakDate = #1/1/1980#  '1980/01/01まで
  
  testyear(1).intYear = 8       '8年まで
  testyear(1).ChakDate = #7/1/1990#  '1990/07/01まで
  
  testyear(2).intYear = 12      '12年まで
  testyear(2).ChakDate = #1/7/1998#  '1998/01/07まで
  
  '現在
  testyear(3).intYear = Year(Date) - Year(testyear(2).ChakDate)
  testyear(3).ChakDate = Date     '現在年月日
End Function

【10300】Re:和暦チェック
回答  VBWASURETA  - 08/3/13(木) 10:40 -

引用なし
パスワード
   ▼ぎんばしゃ さん:

おはようございます。
もう解決されたのかわかりませんが、サンプルを置いておきます。

Type userYear
  intYear As Integer
  ChakDate As Date
End Type

Dim testyear() As userYear


'制限データセット関数
Function setYaerdata()
  ReDim testyear(3) As userYear
  
  '配列はtestyear(暦値,制限値)の二次元配列で管理
  '素数2番目が 0 は制限年
  testyear(0).intYear = 15      '15年まで
  '素数2番目が 1 は制限年月日
  testyear(0).ChakDate = #1/1/1980#  '1980/01/01まで
  
  testyear(1).intYear = 8       '8年まで
  testyear(1).ChakDate = #7/1/1990#  '1990/07/01
  
  testyear(2).intYear = 12      '12年まで
  testyear(2).ChakDate = #1/7/1998#  '1998/01/07
  
  '現在
  testyear(3).intYear = Year(Date) - Year(testyear(2).ChakDate)
  testyear(3).ChakDate = Date     '現在年月日
End Function

'年チェック関数 YearCalc(暦値,年,月,日)
Function YearCalc(intlist As Integer, _
          intYear As Integer, _
          intmonth As Integer, _
          intday As Integer) As Boolean
          
  On Error GoTo YearCalc_ERR
  
  Dim setdate As Date
  
  '制限年内であればTrueで返す
  If (testyear(intlist).intYear > intYear) Then
    YearCalc = True
  Else
    '入力された値(比較する日)を日付型に変換
    setdate = DateSerial(Year(testyear(intlist).ChakDate), intmonth, intday)
        
    '制限年月日内であればTrueで返す
    If (testyear(intlist).ChakDate >= setdate) Then
      YearCalc = True
    End If
  End If
  
  Exit Function
YearCalc_ERR:
  '制限年データがセットされてなければFalseで抜ける
  YearCalc = False
  Debug.Print Err.Number & ":" & Err.Description
  
End Function

Sub test()
  Dim textdate As Date
  
  '制限年データセット
  setYaerdata
  
  '日付比較 OKならばTrue、範囲外はfalseを返す。
  '例:暦1 8年7月1日
  MsgBox YearCalc(1, 8, 7, 1)

End Sub

752 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free