• ベストアンサー

アクセスのレポートで

アクセス2000を使って、名簿管理をしています。 このたび、その名簿を使って宛名を印刷する事になりました。 しかし、「住所」というフィールドはあるのですが、「郵便番号」というフィールドがなく、「住所」のフィールドの中に一緒に打ち込んであるのです。 住所 064-XXXX△△札幌市中央区xxxx こんなイメージです。 これをなんとか郵便番号と住所に分けて、葉書の所定の場所に印刷したいのですが、良い方法はありませんか? 宜しくお願いします。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

印刷時のみ郵便番号と住所を分けて出力するのはレポート上でやれば簡単です。 印刷する葉書のレポートをデザインビューで開き郵便番号と住所を出力するテキスト ボックスを作ります。 例えばテキストボックスの名前を郵便番号と住所1のように名前をつけ作ったテキ ストボックスのプロパティのデータのコントロールソースに郵便番号の場合は =Mid([住所],1,8) 住所の場合は住所1のデータのコントロールソースに =Mid([住所],9) これで郵便番号のフィールドには[住所]のレコードの最初から8文字目まで住所1 には[住所]のレコードの9文字目以降のレコードを表示できます。 これで簡単に出来ますので試してみてください。

toshima
質問者

お礼

有り難うございます。 早速これでやってみようとおもいます。 助かります。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)今回印刷だけ対処 (2)データベース「住所録」テーブルをこの際変更 する。 のやり方のうち、(2)をVBAで行う方法を説明します。 (1)「住所録」テーブルに郵便番号フィールドを追加する。 (2)Moduleに下記を貼り付ける。    テーブル名、フィールド名を実際の名に代える。 (3)実行する。 (コード) Option Compare Database Option Explicit Sub jyusho() Dim dbs As Database Dim rst As Recordset Dim recMax, i As Long Set dbs = CurrentDb Set rst = dbs.OpenRecordset("住所録") rst.MoveLast recMax = rst.RecordCount 'MsgBox recMax rst.MoveFirst '----- For i = 1 To recMax ' MsgBox Mid(rst![住所], 1, 8) rst.Edit rst![郵便番号] = Mid(rst![住所], 1, 8) rst![住所] = Mid(rst![住所], 9, 20) rst.Update rst.MoveNext Next i '---- rst.Close End Sub (結果) 郵便番号 住所録ID 氏名 住所 201-2123 1 山田 太郎 大阪市中央区本町2-3-14 203-3211 2 神田 次郎 名古屋市北区上町2-34-45 元は住所の先頭に郵便番号がくっついていました。

回答No.2

郵便番号は =LEFT(住所,8) 住所は =MID(住所,9) でいけるかと思います。

noname#9808
noname#9808
回答No.1

詳しく説明すると長くなりそうなので、ヒントだけ。(ご勘弁下さい。) アクセスにはクエリというものが有りますよね。4つ程有ると思うのですが、その中の「テーブル作成クエリ」というものを使い、郵便番号と住所を分けたテーブルを自動的に作ってしまうのが一番でしょう。 ただし、失敗する可能性も有るのでアックアップをとる事をお忘れなく。

関連するQ&A