Access VBA質問箱 IV

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

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


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

【7184】クエリ内文字列の分解計算? Yazika 06/1/30(月) 11:41 発言[未読]
【7186】Re:クエリ内文字列の分解計算? Gin_II 06/1/30(月) 13:41 回答[未読]
【7187】Re:クエリ内文字列の分解計算? 小僧 06/1/30(月) 14:03 回答[未読]
【7192】Re:クエリ内文字列の分解計算? Yazika 06/1/31(火) 11:46 質問[未読]
【7193】Re:クエリ内文字列の分解計算? 小僧 06/1/31(火) 12:37 回答[未読]
【7198】Re:クエリ内文字列の分解計算? Yazika 06/1/31(火) 19:50 お礼[未読]

【7184】クエリ内文字列の分解計算?
発言  Yazika  - 06/1/30(月) 11:41 -

引用なし
パスワード
   こんにちは
文字列の分解作業を行ないたいですが、その方法はわからなくて、
困っています。
クエリ内で、解決したいです。
ご伝授ください。
その文字列は、
数字単位×数字単位×数字単位で構成されています。
規格のフィールドを使って、数量1、単位1、数量2、単位2、数量3、単位3
に分解したい。
規格            数量1 単位1 数量2 単位2 数量3 単位3
1.5g×10枚×12打      1.5  g    10   枚   12    打
10kg×5箱          10  kg   5    箱
5枚×5打×1箱        5   枚   5    打   1    箱

【7186】Re:クエリ内文字列の分解計算?
回答  Gin_II  - 06/1/30(月) 13:41 -

引用なし
パスワード
   >その文字列は、
>数字単位×数字単位×数字単位で構成されています。

区切りが、必ず × でされているのなら、Split 関数を使えば分割できます。
VAL 関数を使えば、先頭の数値を取得することができると思います。

【7187】Re:クエリ内文字列の分解計算?
回答  小僧  - 06/1/30(月) 14:03 -

引用なし
パスワード
   ▼Yazika さん、Gin_II さん:
こんにちは。

>クエリ内で、解決したいです。

ユーザ定義関数を使ってよいのであれば、

標準モジュール内に

Function Bunkatsu(strName As String, Syubetsu As String, Num As Long)
On Error Resume Next
Dim strData As String
  strData = Split(strName, "×")(Num - 1)
  Select Case Syubetsu
    Case "数量"
      Bunkatsu = IIf(Val(strData) = 0, "", Val(strData))
    Case "単位"
      Bunkatsu = Replace(strData, Val(strData), "")
  End Select
End Function

と記述。この Function プロシジャを

数量1: bunkatsu([規格],"数量",1)
単位1: bunkatsu([規格],"単位",1)

のように呼び出す事が可能です。

【7192】Re:クエリ内文字列の分解計算?
質問  Yazika  - 06/1/31(火) 11:46 -

引用なし
パスワード
   小僧さん
Gin_IIさん
こんにちは。
お蔭様で、問題解決しました。
本当にありがとうございました。

「(Num - 1)」の役割について、調べましたが、わかりませんので、
教えていただけませんか?

【7193】Re:クエリ内文字列の分解計算?
回答  小僧  - 06/1/31(火) 12:37 -

引用なし
パスワード
   ▼Yazika さん:
こんにちは。

>「(Num - 1)」の役割について、調べましたが、わかりませんので、
>教えていただけませんか?

Mojiretu = "月,火,水,木,金"

strTmp = Split(Mojiretu,",")(0)

'→ strTmp は "月"

strTmp = Split(Mojiretu,",")(1)

'→ strTmp は "火"

配列の最小の添字は指定しない限り 0 から始まりますので、
n 番目の文字を取り出す為に n-1 を括弧内に入れています。

【7198】Re:クエリ内文字列の分解計算?
お礼  Yazika  - 06/1/31(火) 19:50 -

引用なし
パスワード
   小僧さん
問題解決しました。
ありがとうございました。

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