プロが教えるわが家の防犯対策術!

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

A 回答 (5件)

西暦への変換の更新クエリです。



UPDATE テーブル名 SET フィールド1 = Format(CDate([フィールド1] & "1月1日"),"yyyy\年");

和暦の場合は、"yyyy\年" を "ggge\年" に。
    • good
    • 1

モジュールにユーザー定義関数を作成する。


モジュールの新規作成ででてくる画面で
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]で西暦に変換できます。
    • good
    • 0

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
    • good
    • 0

ご参考まで・・・



参考URL:http://www.gakkai.net/wareki-seireki.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/18 21:52

「日付/時刻型」フィールドに格納されたデータでしたら「書式」プロパティで西暦または和暦で表示することが出来ますが、


ご質問のご様子ですとテキスト型(または数値型)にデータが保存されているようですね。

現在のデータ型および実際のデータサンプルを数件示していただければ的確な回答が付くはずです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
データは下記の通り、昭和及び平成、西暦が混在しています↓
データ型はテキスト型です。

フィールド1
---------------
平成13年
1998年
平成5年
平成17年
1977年
昭和60年

お礼日時:2005/12/18 21:55

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