今、Excelで作っていた名簿をAccess97を使って管理ができるようにしています。
Excelでは"3061222”とデータが”昭和6年12月22日”とMID関数を使って表示されるようになっていました。
 Accessのフォームやレポートでも同じ様なことは出来ないでしょうか?いったん生年月日だけ入力し直すとか考えたんですがデータの量が半端でないので何とかしたいのです。
 すみませんが分かる方ご教授お願いします。

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

A 回答 (4件)

再登場


 日付: IIf(Mid$([年月日],1,1)=3,"昭和","平成")+Mid$([年月日],2,2)+"年"+Mid$([年月日],4,2)+"月"+Mid$([年月日],6,2)+"日"
   ↓
 日付: iif(mid$([年月日],1,1)=1,"大正",iif(mid$([年月日],1,1)=2,"明治",iif(mid$([年月日],1,1)=3,"昭和","平成")))+Mid$([年月日],2,2)+"年"+Mid$([年月日],4,2)+"月"+Mid$([年月日],6,2)+"日"
のように
iif(式,正,偽)
iif(式,正,iif(式,正,偽))
iifの入れ子すれば良いです。
参考になれば幸いです
何かあれば補足して下さい。
    • good
    • 0
この回答へのお礼

ありがとうござました。
最初、昭和生まれだけの人しか対象っていう設定で作ったのですが、今後のことを考えて教えていただいたとおりにiifの入れ子を使って作ってみました。
ホント助かりました。

お礼日時:2002/03/08 12:43

御疲れ様です



>複数のコードを設定した場合(例えば1が大正とか2が明治とか・・・)でもこのIIf関数は使えるのでしょうか?
k_ebaさんの補足的なことになりますが、このような関数もありますよ。


例1:Choose関数を使用する
Choose(Mid$([年月日],1,1),"明治","大正","昭和","平成")


例2:Switch関数を使用する
Switch(Mid$([年月日],1,1)=1,"明治",Mid$([年月日],1,1)=2,"大正",Mid$([年月日],1,1)=3,"昭和",Mid$([年月日],1,1)=4,"平成")


例3:自分で関数を作成する
下記処理を「モジュール」に登録する
Public Function 年号(wCode As Integer) As String

Select Case wCode
Case 1
年号 = "明治"
Case 2
年号 = "大正"
Case 3
年号 = "昭和"
Case 4
年号 = "平成"
Case Else
年号 = ""
End Select

End Function

年号(Mid$([年月日],1,1))


どの例も期待値は、同じになります。
ただ、メンテナンスのことを考えると個人的には「例3」がいいような気がします。
頑張って下さい。
    • good
    • 0
この回答へのお礼

今回の処理はIIfを使ったものにしましたが、いろいろな方法があるなって分かりました。
特に例3は他のことに応用がききそうですね。ありがとうございました。

お礼日時:2002/03/08 12:29

元データ(シート)のメンテが可能であれば、別の方法としてExcel側で別の列にExcel関数を使ってAccessに日付データとしてインポートできる西暦表示"yyyy/mm/dd"等にしてこの生成された列をインポートする方法もあります。


Access側では、表示等したいコントロールの書式に「ggge\年m月d日」をセットします。
Excel、Access共、日付は日付データにしておくほうが何かと便利だと思います。
もしExcelとリンクしているのであれば上記方法だとAccess側でデータ修正するとExcel関数の計算式が消えてしまいますのでご注意ください。
なお、メンテ不可であれば、k_ebaさんのご回答のとおり。
    • good
    • 0
この回答へのお礼

ありがとうございました。私とするとAccess側での作業が少しでも減らせればとこの方法をとろうと思ったのですが、Excelメンテ不可だったので出来なかったので残念です・・・

お礼日時:2002/03/08 12:38

クエリー


項目名を年月日とします
日付: IIf(Mid$([年月日],1,1)=3,"昭和","平成")+Mid$([年月日],2,2)+"年"+Mid$([年月日],4,2)+"月"+Mid$([年月日],6,2)+"日"

フォーム、レポート
項目名を年月日とします
=IIf(Mid$([年月日],1,1)=3,"昭和","平成")+Mid$([年月日],2,2)+"年"+Mid$([年月日],4,2)+"月"+Mid$([年月日],6,2)+"日"


参考になれば幸いです
何かあれば補足して下さい。

この回答への補足

 早速の回答ありがとうございます。
 参考までに教えていただきたいのですが、複数のコードを設定した場合(例えば1が大正とか2が明治とか・・・)でもこのIIf関数は使えるのでしょうか?それとも似たような関数がありますか?
 関数のことあまりよく知らなくてすみません。

補足日時:2002/03/05 14:09
    • good
    • 0

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

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

QAccess97で作ったデータをWord97であらかじめ作成した表の該当部分に落としたい

こんにちは。Accessについての質問です。

Access97で作ったデータベースがあるのですが、
それをAccessのレポートに出すのではなく、
あらかじめ作ったWordの表(レポートのようにレイアウトしてあるもの)の
該当する部分へデータを選択してそれぞれ落としたいのです。
何か方法があるでしょうか。
よろしくお願いします。

Aベストアンサー

Wordのツールから
差込印刷ヘルパーでできませんか?

QACCESS97でACCESS2003のmdbはどうすれば見れますか?

ACCESS97環境です。知人より作成してもらったACCESS2003のmdbを開く事が出来ません。
どうすれば開く事が可能でしょうか??

また、ACCESSがインストールされていないPCでACCEESを起動する事は可能でしょうか??

以前はVBにてEXEを作成し配布しておりましたが、今後はACCESSで作成し配布出来ればいいなと考えております。

よろしくお願い致します。

Aベストアンサー

>どうすれば開く事が可能でしょうか??
不可能です。ACCESS97で上位のバージョンを開くことはできません。
お友達にマイナーバージョンへの変換をお願いしてください。
「ツール」「データベースユーティリティ」「データベースの変換」でできます。

2003のmdbをそのまま開きたい場合は、Office2003デベロッパーエディションに含まれる
Access2003用のランタイムパッケージが必要になります。

QAccess2000→Access97にインストールをしたい

現在WIN2KのAccess2kですが、事情があり、ACCESS2Kをアンインストールをし、ACCESS97をインストールしたのですが、他のWordやExcelは大丈夫なのですが、ACCESS97を起動すると、
The Dinamic Link Library MSO9.DLL Couldnotbe Located と表示されます。
DLLファイルが新しいものになってしまっていて、使えないんだとは思うのですが、Win2kを再インストールする以外で、何か方法はありますか?よろしくお願いいたします。

Aベストアンサー

質問に MSO9.DLL ってありますが MSO97.DLLの間違いでしょうか? 私のパソコンにないのですが、

私も諸事情があってACCSESS97とoffice2003を使っています。
少しバージョンが違うかもしれませんがもしよろしければ 参考にしてください。
先にOfficeのACCSESS以外をインストール
次にACCESS97をインストール
 インストールしたディレクトリは 2003と同じディレクトリー
 新しいファイルが存在しますが このまま使いますか?の問いには はい(すべて)
としました。

これで ちゃんと動いています
#時たまACCSESS97のバージョンを上げろって言ってきますがほっといてます

QAccess2002で作ったファイルはAccess97で開けないものなのでしょうか?

先日買ったAccess2002用の問題集のファイルが、Access97で開いてみようとしたら、全く開かないのです。エクセルやワードだったらきっとこのような事はないように思うのですが(もっと古いファイルは知りませんが・・・)、Accessの場合は結構こういうことってありえるのでしょうか?

Aベストアンサー

プログラム開発の一般論からいえば、同種のアプリを改良する時に
(A)ファイル形式を変更する変更
(B)機能を増やす拡張
があります。(A)の方が旧バージョンソフトにとって致命的になります。97-->2000もこれが行われたようです。
(1)変更が少ない場合は、後の方が旧であることを判別して、処理を分ければ済みます。
(2)しかし大幅(量の多少でなく、設計思想などの変更)であれば(1)では済まず、処理に入る事前に新形式
のファイルに置換えてしまうのも手です。増えた項目などは、取りあえずの無難な値に(アクセスシステムが)セットします。
2000の場合は(2)に当たるようです。
97側からすれば、2000のファイルの新設部分はすて
て、97形式にすれば済むのですが、設計思想などの変更であれば、それも不可能な場合もあるでしょう。
どうも(2)のケースらしく、下位のソフト(97)で上位(2000)のファイルを読めるように変換をする道は設けなかったのです。技術的に不可能だったか、サービスの必要性を切り捨てたか、私などには判りません。
私も2002を入れるまで97時代に、雑誌に入っていた
2000のCDROMが読めなくて残念でした。
>Accessの場合は結構こういうことってありえるのでしょうか
変更の度合いとサビース精神の度合いによります。
普及の度合いや利用者の想定層にも影響を受けるかもしれません。エクセルではしても、アクセスではしないのは
MS社の営業判断もあり得ます。
実際例があるかといえば、同一職場などで97と2000がやむを得ず並存していたりのケースはあり得ます。

プログラム開発の一般論からいえば、同種のアプリを改良する時に
(A)ファイル形式を変更する変更
(B)機能を増やす拡張
があります。(A)の方が旧バージョンソフトにとって致命的になります。97-->2000もこれが行われたようです。
(1)変更が少ない場合は、後の方が旧であることを判別して、処理を分ければ済みます。
(2)しかし大幅(量の多少でなく、設計思想などの変更)であれば(1)では済まず、処理に入る事前に新形式
のファイルに置換えてしまうのも手です。増えた項目などは...続きを読む

QAccessで生年月日から現在の年齢を求めるには?

Access2002を使用しています。
生年月日のフィールドに「1965/05/01」を入力しているとします。
その場合、現在の年齢フィールドに今日現在の年齢の「41歳」と出すようにするにはどういった式をどこに入れればよいでしょうか?

また、現在の年齢と何ヶ月かまで求めることは出来ますか?
例えば上記の例ですと、「41歳3ヶ月」と。
勿論、何ヶ月というフィールドは別に作ってもOKです。

どうぞよろしくお願い致します。

Aベストアンサー

>すようにするにはどういった式をどこに入れればよいでしょうか?
下の式を出したいところに書きます
年齢: DateDiff("yyyy",[誕生日],Date())+(Format([誕生日],"mmdd")>Format(Date(),"mmdd")) & "才"

>年齢と何ヶ月かまで求めることは出来ますか?
(DateDiff("m",[誕生日],Date())+(Format([誕生日],"dd")>Format(Date(),"dd")))\12 & "才" & (DateDiff("m",[誕生日],Date())+(Format([誕生日],"dd")>Format(Date(),"dd"))) Mod 12 & "ヶ月"


このカテゴリの人気Q&Aランキング

おすすめ情報