Access VBA質問箱 IV

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

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


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

【8057】関数の作り方を教えてください。 たけし 06/6/27(火) 10:54 質問[未読]
【8059】Re:関数の作り方を教えてください。 Gin_II 06/6/27(火) 11:30 回答[未読]
【8065】Re:関数の作り方を教えてください。 たけし 06/6/27(火) 12:31 お礼[未読]
【8067】Re:関数の作り方を教えてください。 Gin_II 06/6/27(火) 12:45 発言[未読]
【8062】Re:関数の作り方を教えてください。 クロ 06/6/27(火) 11:36 回答[未読]
【8066】Re:関数の作り方を教えてください。 たけし 06/6/27(火) 12:34 お礼[未読]

【8057】関数の作り方を教えてください。
質問  たけし  - 06/6/27(火) 10:54 -

引用なし
パスワード
   はじめまして、今まで関数を作成したことがありません。
どうか助けてください。今までにモジュールは作成したことはありますが、初心者なのでよろしくお願いします。
作りたい関数は、テーブルAに項目、A・B・C・D・E(項目はもっとあります)があり、数字が入っています。関数で、A・B・C・D・Eを設定して、項目が0以外の場合、項目と数字をつなげてひとつのデータにしたいのです。

A・・100
B・・0
C・・500
D・・1000
E・・0
関数(A,B,C,D,E)
結果
A・100、C・500、D・1000
というデータを作成したいのですが作成できるのでしょうか?
クエリーでiff文でやるには大変なので関数で作成したいのです。
よろしくお願いします。

【8059】Re:関数の作り方を教えてください。
回答  Gin_II  - 06/6/27(火) 11:30 -

引用なし
パスワード
   > 作りたい関数は、テーブルAに項目、A・B・C・D・E
> (項目はもっとあります)があり、数字が入っています。
> 関数で、A・B・C・D・Eを設定して、項目が0以外の
> 場合、項目と数字をつなげてひとつのデータにしたいのです。

MID(IIF([A]=0, "", "," & "A" & "・" & [A]) &
  IIF([B]=0, "", "," & "B" & "・" & [B]) &
  IIF([C]=0, "", "," & "C" & "・" & [C]) &
  IIF([D]=0, "", "," & "D" & "・" & [D])
 , 2)

そんなに、大変じゃないような ^^;


Function 関数名(ParamArray FLD() As Variant) As String

  Dim lngIdx     As Long
  
  If UBound(FLD) = 0 Then
    関数名 = ""
    Exit Function
  End If
  
  For lngIdx = 0 To UBound(FLD) Step 2
    If FLD(lngIdx + 1) > 0 Then
      関数名 = 関数名 & "," & FLD(lngIdx) & "・" & FLD(lngIdx + 1)
    End If
  Next lngIdx
  
  関数名 = Mid(関数名, 2)
  
End Function

【使用例】
関数名("A",[A],"B",[B],"C",[C],"D",[D])

のように、フィールド名, フィールド・・・・・と続けて
指定してみてください。

また、分かりやすいように、"関数名" としていますが、実際には
別の名前にしてください。(半角英数で。)

【8062】Re:関数の作り方を教えてください。
回答  クロ  - 06/6/27(火) 11:36 -

引用なし
パスワード
   こんにちは

>結果
>A・100、C・500、D・1000

結果が横でなければ

SELECT [名前] & "・" & [数字] AS 式1
FROM テーブルA
WHERE [数字]<>0;

でもいいのでは?

【8065】Re:関数の作り方を教えてください。
お礼  たけし  - 06/6/27(火) 12:31 -

引用なし
パスワード
   ▼Gin_II さん
ありがとうございました
できました。

IFF文は簡単なのですが、項目の名前が多すぎるので、関数でできればなとおもい質問しました。

本当にありがとうございました。

【8066】Re:関数の作り方を教えてください。
お礼  たけし  - 06/6/27(火) 12:34 -

引用なし
パスワード
   ▼クロ さん:
こんにちは
今回はGin_II さんの関数でうまくいきました。
クロさんの教えていただきとても感謝しています。
また何かありましたら教えていただけると嬉しいです。
本当にありがとうございました。

【8067】Re:関数の作り方を教えてください。
発言  Gin_II  - 06/6/27(火) 12:45 -

引用なし
パスワード
   >項目の名前が多すぎるので、

なんとなく。

Access 2000 でのデータベースの正規化の基礎
http://support.microsoft.com/kb/209534/ja

こちらを確認してください。
正規化を意識したテーブル構成にしないと、これからずっと苦労します。

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