• ベストアンサー

Access 西暦を和暦へ一括変換できますか?

西暦と和暦が混在しています。 これを和暦へ統一することはできるのでしょうか(逆の西暦への統一も) 1年づつ更新するのは面倒で・・・。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

西暦への変換の更新クエリです。 UPDATE テーブル名 SET フィールド1 = Format(CDate([フィールド1] & "1月1日"),"yyyy\年"); 和暦の場合は、"yyyy\年" を "ggge\年" に。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

モジュールにユーザー定義関数を作成する。 モジュールの新規作成ででてくる画面で Function WANEN(XNEN) '和暦年変換 If XNEN Is Null And Right(XNEN,1) <> "年" Then Exit Function WANEN = Format(Datevalue(XNEN & "12月31日"),"gggee年") End Function Function CENEN(XNEN) '西暦年変換 If XNEN Is Null And Right(XNEN,1) <> "年" Then Exit Function CENEN = Format(Datevalue(XNEN & "12月31日"),"yyyy年") End Function と入力 更新クエリでWANEN([フィールド1])で和暦に、CENEN([フィールド1]で西暦に変換できます。

回答No.4

ANo.1 の GreatDragon です。 今回のケースでは更新クエリでは難しい(私のスキル不足な)ので、VBA のコードを作成してみました。 宜しかったら(DBのバックアップ後)お試しください。 '■■西暦年→和暦年■■ Public Sub SeirekiWareki() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Dim Nen As Integer Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.Open "テーブル1", Cn, adOpenKeyset, adLockOptimistic Do Until Rs.EOF If IsNumeric(Left(Rs![フィールド1], 4)) Then Nen = CInt(Left(Rs![フィールド1], 4)) If Nen > 1988 Then Rs![フィールド1] = "平成" & (Nen - 1988) & "年" ElseIf Nen > 1925 Then Rs![フィールド1] = "昭和" & (Nen - 1925) & "年" ElseIf Nen > 1911 Then Rs![フィールド1] = "大正" & (Nen - 1911) & "年" Else '何もしません。 End If Rs.Update End If Rs.MoveNext Loop Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing End Sub '■■和暦年→西暦年■■ Public Sub WarekiSeireki() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Dim Nen As Integer Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.Open "テーブル1", Cn, adOpenKeyset, adLockOptimistic Do Until Rs.EOF If Not IsNumeric(Left(Rs![フィールド1], 2)) Then If Left(Rs![フィールド1], 2) = "平成" Then Nen = Val(Replace(Replace(Rs![フィールド1], "平成", ""), "年", "")) Rs![フィールド1] = (Nen + 1988) & "年" ElseIf Left(Rs![フィールド1], 2) = "昭和" Then Nen = Val(Replace(Replace(Rs![フィールド1], "昭和", ""), "年", "")) Rs![フィールド1] = (Nen + 1925) & "年" ElseIf Left(Rs![フィールド1], 2) = "大正" Then Nen = Val(Replace(Replace(Rs![フィールド1], "大正", ""), "年", "")) Rs![フィールド1] = (Nen + 1911) & "年" Else '何もしません。 End If Rs.Update End If Rs.MoveNext Loop Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing End Sub

回答No.2

ご参考まで・・・

参考URL:
http://www.gakkai.net/wareki-seireki.html
dra96
質問者

お礼

ご回答ありがとうございます。 えぇっと・・・、作業量を軽減したくて質問しました。 更新クエリで一括変換できればと思ったのですが。

回答No.1

「日付/時刻型」フィールドに格納されたデータでしたら「書式」プロパティで西暦または和暦で表示することが出来ますが、 ご質問のご様子ですとテキスト型(または数値型)にデータが保存されているようですね。 現在のデータ型および実際のデータサンプルを数件示していただければ的確な回答が付くはずです。

dra96
質問者

お礼

ご回答ありがとうございます。 データは下記の通り、昭和及び平成、西暦が混在しています↓ データ型はテキスト型です。 フィールド1 --------------- 平成13年 1998年 平成5年 平成17年 1977年 昭和60年

関連するQ&A

専門家に質問してみよう