ACCESS2000でカスタマバーコードを印字したいのですが、関数の使い方で困っております。
例)郵便番号 123-4567
  東京都千代田区8-9東京マンションA-1号
を123456789A1 と抜き出したいのです。
桐,ファイルメーカーの関数でも構いません。
最終的に ACCESS2000で印刷を行いますのでCSV出力ができれば良いのです。

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

A 回答 (5件)

> 文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。

何とか関
> 数で処理したいのでよろしければ
> 参考例をおしえていただければ大変有り難いのですが。

関数だけでやるなら、事前に最大何バイトになるか調べておいて
ひたすら繰り返すしかないんじゃないでしょうか?
=midb(a1,1,1)&midb(a1,2,1)&midb(a1,3,1)&midb(a1,4,1)&…

だから、「マクロでループさせる方が美しい」んですね。

この回答への補足

私もaccessで同じ方法でやったのですがだめでした。
それはaccess95以降、文字コードが変わったからです。
以前はANSI でしたが現行は UNICODE になり、すべての
文字が2バイト表示となったからです。
結局2バイトめが 0 でなおかつ1バイトめが英数字だけを判断させるという面倒な方法になります。
あわせて文字列が最大バイト数以下ですと計算結果がerrorを返します。よってさらに複雑になります。
やはりマクロでループがよいのかもしれません。

補足日時:2002/03/12 21:01
    • good
    • 0

ファイルメーカーの関数ですが、



Substitute(郵便番号,"-","") & MiddleWords(Substitute(住所,"-",""),2,3)

でどうでしょうか。
ただし、すべての住所で正しい出力が得られるか確認していません。
    • good
    • 0

アクセスの組み込み関数だけを使いたいとのことですが、関数を作るイコール組み込み関数では無くなってしまいます。

アクセスの提供している関数には、mr_ayumi さんが求めているものは無いので関数を使わないイコールマクロを使用するしかありません。
「諸事情によりaccessがもっている組み込み関数だけで処理を行いたい」
の背景を説明してもらえると、ご回答できるのですが。
ちなみに 桐を使用して一括処理で #条件選択 を使用しても同様のことが出来ますが、この場合表を作成→データ読み込み→置換 と言う一括処理をくむことになります。
それでいいのでしょうか?

この回答への補足

grumpy_the_dwarf さんのようなご返答をお待ちしております。

補足日時:2002/04/03 23:03
    • good
    • 0

カスタマバーコードを印字するのになぜ半角文字だけが抽出できなければいけないのかは分かりませんが、全半角混じりから半角英数字のみを抽出する関数は以下の通りです


Public Function HankakuDake(Hikisu As String) As String
Dim i As Integer

Dim Moji As String
Dim MojiAsc As Integer
For i = 1 To Len(Hikisu)
Moji = Mid(Hikisu, i, 1)
MojiAsc = Asc(Moji)
If (MojiAsc >= 48 And MojiAsc <= 57) Or _
(MojiAsc >= 97 And MojiAsc <= 122) Or _
(MojiAsc >= 65 And MojiAsc <= 90) Then 
HankakuDake = HankakuDake & Moji
End If
Next
End Function

これでいいのでしょうか?

この回答への補足

関数は関数なのですが諸事情によりaccessがもっている組み込み関数だけで処理を行いたいのです。

補足日時:2002/03/12 21:10
    • good
    • 0

東京都千代田区8-9東京マンションA-1号 を89A1にするというと、一番


大変なのは2バイト文字を消すところでしょうかねぇ。

Accessでも同じじゃないかと思うんですが、Excelやファイルメーカの
テキストの指定位置から指定バイト数取り出す関数(MIDBとかMiddleb)
で、2バイト文字のところから1バイトだけ取り出そうとすると1バイト
スペースが返ってきます。これを文字列の長さだけ繰り返すとすべての
2バイト文字が1バイトスペースに化けますので、あとはSubstituteで
スペースやハイフンを詰めてやれば完成です。

マクロでlenb(文字列)回ループさせる方が美しいけど、とりあえず関数
だけでも何とかなりますということで。

この回答への補足

ご指導ありがとうございました。
2バイト文字のところから1バイトだけ取り出そうとすると1バイトスペースが返ってくることを知りませんでした。
文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。何とか関数で処理したいのでよろしければ
参考例をおしえていただければ大変有り難いのですが。
よろしくお願いいたします。

補足日時:2002/03/08 23:39
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

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

QAccess97の更新クエリーのformat$関数をAccess2000タイプに直したいのですが

Access97の更新クエリーのformat$関数で
format$([印刷]![区分],"@@")
上記の構文で数値を二桁の文字に直している更新しているのですが
Access2000では関数を認識してくれません、
format関数でも同じでした

Access2000で同じ事が出来る方法を教えてください

Aベストアンサー

Access2000だと

Visual Basic For Application
Microsoft Access 9.0 Object Library
Microsoft DAO 3.6 Object Library

になっているかと思います。

Access97は
Microsoft Access 8.0 Object Library
Microsoft DAO 2.5/3.5 Compatibility Library

Microsoft DAO 3.51 Object Library
だと思います。

環境によって変わってくる部分もあるかと思いますが、
この辺を直しておけばよかったと思います。

QACCESS2002で市内局番だけを抜き出す関数

ACCESS2002初心者です。
ACCESSのフォーム上で市外局番から入力する『電話番号』というテキストボックスがあります。
この電話番号を「市外局番」・「市内局番」・「局番」それぞれを切り取りレポートに印字されるように、
コントロールソースに書く関数を教えていただきたいです。

入力型は【000-000-0000】または【00-0000-0000】【0-00000-0000】
といったように市外局番、市内局番ともに文字数が変わります。

市外局番は
=Left([電話番号],Instr(1,[電話番号],"-")-1)
このクエリで表示されました。

局番は必ず下4桁なのでRight関数で表示されました。

問題は市内局番です。
=Mid([電話番号],InStr([電話番号],"-")+1)
このクエリだと市内局番から下は全て表示されてしまいます。
どうしたら良いでしょうか?

ご回答のほど、どうかよろしくお願いいたします。

Aベストアンサー

Mid関数を利用するのであれば、
=Mid([電話番号],Instr([電話番号],"-")+1,InstrRev([電話番号,"-")-Instr([電話番号],"-")-1)
ですが
=Split([電話番号],"-")(1)
とすれば出ます。

Q桐からACCESSへ

コンピュータメーカの営業してる旦那からの質問です。

桐で開発したものをACCESSに移行できますか?ときかれました。
私はACCESSしか知らない(桐はDBソフトというのを知ってるくらい・・・なんせ全盛の頃は私オフコンのSEだったもので・・・)ので
「さぁ・・・CSVとかでデータほりだして、ACCESS側で読み込めばデータ使えるんちゃうん?」と答えたんですが(&データはEXCEL経由とかでなんとかなりそうですね・・・)帳票とかのアプリは???とさらに突っ込まれて・・・
でも、それってソフトが違うから無理なんちゃう?と答えたんですが
「アンタ、使えんなぁ。。。。」って言われてムカついたので、どなたかご教授ください。
まぁDOS版から・・・ではないと思うんですが・・・。

Aベストアンサー

おっしゃる通りだと思います。

データ(表)はCSVで書き出して保存ですね。
[ファイル]-[書き出し]-[CSV]

データ以外の帳票などは無理なはずです。

自信を持って「オマエが使えない」と言って差し上げましょう。

Qaccess2003で桐の表引きのようなシステムはありますか?

access2003のフォームを使いデータ入力を行えるものを作りたいのですが、日本語データベースソフト桐の表引きのように他のテーブルからデータをひっぱってくるようなシステムはありますか?
accessは全くの初心者で質問の内容も伝わりにくいかもしれませんがよろしくお願いします。

Aベストアンサー

IDをコンボボックスにすべきです。
コンボボックスの設定値
値集合ソース:SELECT ID,名前,住所 FROM テーブル1
列数:3
列幅:1;0;0 各列の幅の並び、最初の列(ID)だけ0以外を指定
更新後処理:イベントプロシージャ(下記参照)
Sub ID_AfterUpdate() ※"ID"はフォーム上のコンボボックスの名前
Me.名前 = Me.ID.Column(1) 'コンボの2列目=名前
Me.住所 = Me.ID.Column(2) 'コンボの3列目=住所
End Sub

コンボボックスにはID、名前、住所の3列がありますが、列幅の指定が
2列目、3列目が0なので、IDしか見えません。見えませんが内容は
入っていますので、Columnプロパティで値を引き出すことができます。
もし、3列とも見せたいなら、列幅での指定値を0以外にし、更に
リスト幅を「自動」→数値にします。見栄えはリスト幅との兼ね合い
から試行錯誤して決定してください。

Qaccess2007 とaccess2000

access2000で作成したプログラムがあるのですが、

これをaccess2007でそのまま使えますか?

以前、access97からaccess2000にはデータベースの
変換が必要でした。

access2000とaccess2003は互換性があってデータベースは
そのまま使用できました。

access2007はどうなんでしょうか?

Aベストアンサー

基本的にはそのまま動きます。

http://office.microsoft.com/ja-jp/access/HA102091151041.aspx?pid=CH100645711041
http://www.microsoft.com/japan/msdn/office/2007/bb203849.aspx


人気Q&Aランキング

おすすめ情報