Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2262 / 2272 ツリー ←次へ | 前へ→

【3154】全角と半角の混在する文字列を取得する方法 morik 04/7/30(金) 16:38 質問[未読]
【3158】Re:全角と半角の混在する文字列を取得する方... よろずや 04/7/30(金) 22:49 発言[未読]
【3160】Re:全角と半角の混在する文字列を取得する方... morik 04/7/31(土) 10:19 質問[未読]
【3161】Re:全角と半角の混在する文字列を取得する方... よろずや 04/7/31(土) 13:09 回答[未読]
【3166】Re:全角と半角の混在する文字列を取得する方... morik 04/8/2(月) 16:00 質問[未読]
【3168】Re:全角と半角の混在する文字列を取得する方... よろずや 04/8/2(月) 22:13 回答[未読]
【3170】Re:全角と半角の混在する文字列を取得する方... morik 04/8/3(火) 17:16 お礼[未読]

【3154】全角と半角の混在する文字列を取得する方法
質問  morik E-MAIL  - 04/7/30(金) 16:38 -

引用なし
パスワード
   現在、全角と半角の混在する15バイトのデータから先頭12バイトの文字列を取得するクエリーを作成しています。

LeftB(フィールド1,12)
MidB(フィールド1,1,12)

上の2つで試みてみたのですが、12バイトの文字列を取得できませんでした。

対処法をご存知の方よろしくお願い致します。

【3158】Re:全角と半角の混在する文字列を取得する...
発言  よろずや  - 04/7/30(金) 22:49 -

引用なし
パスワード
   ▼morik さん:
>現在、全角と半角の混在する15バイトのデータから先頭12バイトの文字列を取得するクエリーを作成しています。
>
>LeftB(フィールド1,12)
>MidB(フィールド1,1,12)
>
>上の2つで試みてみたのですが、12バイトの文字列を取得できませんでした。

思いっきりバージョンに依存する話ですので、
まずはAccessのバージョンを教えてください。

【3160】Re:全角と半角の混在する文字列を取得する...
質問  morik  - 04/7/31(土) 10:19 -

引用なし
パスワード
   ▼よろずや さん:
>▼morik さん:
>>現在、全角と半角の混在する15バイトのデータから先頭12バイトの文字列を取得するクエリーを作成しています。
>>
>>LeftB(フィールド1,12)
>>MidB(フィールド1,1,12)
>>
>>上の2つで試みてみたのですが、12バイトの文字列を取得できませんでした。
>
>思いっきりバージョンに依存する話ですので、
>まずはAccessのバージョンを教えてください。

よろずやさんいつもありがとうございます。

Accessのバージョンですが、わけあって2000で作成したものを2002で使っています。

2000と2002の両方で動くと一番よいのですが。

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

【3161】Re:全角と半角の混在する文字列を取得する...
回答  よろずや  - 04/7/31(土) 13:09 -

引用なし
パスワード
   ▼morik さん:
>▼よろずや さん:
>>▼morik さん:
>>>現在、全角と半角の混在する15バイトのデータから先頭12バイトの文字列を取得するクエリーを作成しています。
>>>
>>>LeftB(フィールド1,12)
StrConv(LeftB(StrConv(フィールド1, vbFromUnicode), 12), vbUnicode)
1行で書いてしまいましたが、実は落とし穴があります。
12バイトめが全角文字の途中にかかる場合は、取得結果の末尾の文字が
vbNullChar になってしまいます。
そういう訳で、
>>>MidB(フィールド1,1,12)
こちらは、もっと大変です。
全角文字の片割れかどうかを、前も後ろも考慮する必要があります。

【3166】Re:全角と半角の混在する文字列を取得する...
質問  morik E-MAIL  - 04/8/2(月) 16:00 -

引用なし
パスワード
   ▼よろずや さん:
>>>>LeftB(フィールド1,12)
>StrConv(LeftB(StrConv(フィールド1, vbFromUnicode), 12), vbUnicode)
>1行で書いてしまいましたが、実は落とし穴があります。
>12バイトめが全角文字の途中にかかる場合は、取得結果の末尾の文字が
>vbNullChar になってしまいます。

よろずやさん何度も質問して申し訳ございません。

>StrConv(LeftB(StrConv(フィールド1, vbFromUnicode), 12), vbUnicode)
の部分ですが、クエリーで書くとパラメータの入力とでてしまいます。

これはモジュールで書くしかないのでしょうか?
これ以外に方法はないのでしょうか?

初歩的な質問ばかりですみません。
よろしくお願い致します。

【3168】Re:全角と半角の混在する文字列を取得する...
回答  よろずや  - 04/8/2(月) 22:13 -

引用なし
パスワード
   >>StrConv(LeftB(StrConv(フィールド1, vbFromUnicode), 12), vbUnicode)
>の部分ですが、クエリーで書くとパラメータの入力とでてしまいます。
失礼しました。
クエリー内部では組み込み定数が使えませんので、
vbFromUnicode, vbUnicode の代わりに、
イミディエイトウィンドウで、
?vbFromUnicode
?vbUnicode
と打ち込んだときに表示される数値を使ってください。

>これはモジュールで書くしかないのでしょうか?
12バイト目が全角文字の片割れの可能性がある場合は、
キチンとモジュールで関数として書く必要があります。
クエリーからは、その関数を呼び出します。

【3170】Re:全角と半角の混在する文字列を取得する...
お礼  morik E-MAIL  - 04/8/3(火) 17:16 -

引用なし
パスワード
   ▼よろずや さん:
ありがとうございました。

クエリーにStrConv(LeftB(StrConv([フィールド1],128),12),64)と記述しましたら12バイトで表示することが出来ました。

あとは12バイト目に全角文字が来た場合の処理をモジュールで考えてみたいと思います。

御丁寧に教えていただきありがとうございました。

2262 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free