• ベストアンサー

Access2000のことで困っています。

今、Access2000で顧客管理みたいなものを作っているのですが、 月毎に誕生日カードを送りたいのです。 そこで、月毎に抽出する方法を知りたいのですが、 どなたかご存じないですか?

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

  • ベストアンサー
  • gould09
  • ベストアンサー率33% (196/589)
回答No.4

>この関数はクエリーで使用可でしょうか? もちろん使えます。 選択クエリーのデザインを開いて下さい。 フィールドの所にCInt(Mid([誕生日],6,2))を入れてください。 後は、抽出条件の所に印刷したい月を設定すればOKです。 ※barbieriさんの回答に対する補足についてですが、どんなエラーメッセージが出ているかきちんと書かないと解答出来ないと思いますよ。

frmattun
質問者

補足

何度もありがとうございます。 >※barbieriさんの回答に対する補足についてですが、どんなエラーメッセージが出ているかきちんと書かないと解答出来ないと思いますよ。 そうですよね。すみません。 今見たら、”定義されているフィ-ルドが多すぎます。(Error3190)” と出てきました。 ヘルプを見ると”255以上の…”と出でくるのですが、レコードが170くらいなんです。どうしてなのでしょう?

その他の回答 (4)

  • barbieri
  • ベストアンサー率24% (19/78)
回答No.5

申し訳ありません。私の説明不足でした。 現在存在するレコード全ての[誕生日]のフィールドが完全にyyyy/mm/dd又はyy/mm/ddの形に整形されているならば、そのテーブルをデザインモードで開き[誕生日]を日付型に変更するだけ(デフォルト状態)で完全に変換可能です。 >今見たら、”定義されているフィ-ルドが多すぎます。(Error3190)” と出てきました。 テーブル作成クエリーを使用して新たなテーブルを作成する場合に同一のフィールドを複数回定義するとExpr????のようなフィールドが自動生成されます。 現在、使用されているテーブル構造がどのようになっているのか見当つきませんが既にかなりのフィールドを作成されたのではないでしょうか? とすれば、本質問から外れてしまいますが一度テーブルの解析をしてテーブル自体の構造をアクセスのアプリケーションにお願いした方が良いかも知れませんね。 どちらにしてもテーブルを最初の状態にして、[誕生日]を日付型に定義し直すことを試して下さい。 面倒ならば、既にgould09さんが回答された方法でこの問題はクリアしていると思いますので時間が出来た時にでも実験されて良いのではないでしょうか? >ヘルプを見ると”255以上の…”と出でくるのですが、レコードが170くらいなんです。どうしてなのでしょう? フィールド数とレコード数とは関係有りません。 「エクセルの列に相当する物がフィールド、同じく行がレコードに相当する」と考えて下さい。これは色々なデータベースの基本ですから覚えておいて損はありません。

frmattun
質問者

お礼

回答ありがとうございました(^○^) 理解しているようでしていなかったんですね… もう少し勉強して頑張ってつくりたいと思います。

  • barbieri
  • ベストアンサー率24% (19/78)
回答No.3

質問の内容から今後も長い期間に亘って使用されるものと思います。 データ量が多くて大変との事ですが、やはりここは日付型に変更されることが望ましいと思います。 「何月の予定」とかいった場合は日付を特定できない場合が多いのですが、誕生日は(知らない場合は別として)必ず特定できますから年月日が一つのフィールドになっているなら早めに日付型に変更して処理する方があとあと楽になります。別フィールドならばエクセルにイクスポートして整形してYYYY/MM/DDの形にしましょう。その後改めてアクセスに日付型としてインポートすれば使用可能です。 アクセスのテーブルからアクセスのテーブルへ直接変換するのはちょっと厄介です。

frmattun
質問者

補足

回答ありがとうございました(^。^) 返事が遅くなって申し訳ありません。 何度か、テキスト型から日付型に変えようとしましたが、 エラーが出てしまうんです。フィールドエラーみたいなんですけどよくわかりません。 無理にでも実行しようとするとフィールド名まで変わってしまうんです。 どうすればいいですか?

  • gould09
  • ベストアンサー率33% (196/589)
回答No.2

関数Month()は、日付型用なので使えません。 テキスト型のフォーマットはどうなっていますか? 例えば、YYYY/MM/DDだった場合には、MID()関数を使って月を取り出せます。 MID([誕生日],6,2) 後は、数値に変換などすれば大丈夫だと思います。

frmattun
質問者

補足

再度ありがとうございました(^O^) 返事が遅くなって申し訳ありません たびたびの質問で申し訳ないんですが… この関数はクエリーで使用可でしょうか? Access初心者なので教えていただければうれしいです よろしくお願いします。

  • gould09
  • ベストアンサー率33% (196/589)
回答No.1

1.顧客テーブルの中に誕生日と言う名称の日付型のフィールドを作成します。 2.選択クエリーで抽出条件としてMonth([誕生日])に誕生カードを作りたい月を指定します。 3.後は誕生カードを作るレポートで、2で作ったクエリーを指定すればOKです。

frmattun
質問者

補足

回答、ありがとうございます。 やってみたんですが・・・できませんでした(ーー;)。 フィールドがテキスト型だからでしょうか? Excelのデータをインポートしてきたもので、 データ量が多いので、変更できないのです。 こういう場合はどうすればいいのでしょうか?

関連するQ&A