Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索


Q&A-019 レポート内で文字列の結合を行う一例


タイトル : レポートの印刷で・・・・・ 
記事No : 10790 
投稿日 : 2003/08/05(Tue) 13:18 
投稿者 : KEI  

OS:2000
Access Version:2000

テーブル
図面番号 ブロック番号 路線番号  幅員
   1          10         1001  3.0
   1          10         1001   3.5
  2-1         20         2001   5.0
  2-1         20         2001   4.3
  2-2         20         2001   3.6
  2-2         20         2001   4.5
とあります。
路線番号で抽出させレポートに各項目を表示させるときに
1001を抽出、レポートに表示させると
レポート
図面番号 1
ブロック番号 10
路線番号 1001
詳細幅員 3.0
         3.5
と表示します。
そのとき、路線番号2001を抽出させたときに、
図面番号の表示で2-1〜2-2とレポートに表示させたいのです。

> 図面番号の表示で2-1〜2-2とレポートに表示させたいのです。

図面番号フィールドにある、最大値と最小値を求める必要がありますね。このフィールドはテキスト型と思われますので、2-9 と 2-10 の関係は、2-9 > 2-10 となってしまいます。

よって、****-■■ の■部分だけ抽出し、大小を比較しなくてはいけません。

 

テーブルデータを下記のように想定します。

 

ID 図面番号 ブロック番号 路線番号 幅員
1 1 10 1001 3.0
2 1 10 1001 3.5
3 2-1 20 2001 5.0
4 2-1 20 2001 4.3
5 2-2 20 2001 3.6
6 2-2 20 2001 4.5
7 2-6 20 2001 2.8
8 2-8 20 2001 4.1
9 2-9 20 2001 3.8
10 2-11 20 2001 5.2
11 3-2 30 3001 5.1

 

レポートのレコードソースとなるクエリを外部に作成します。下記のようなデザインビューになる筈です。

 

 

次に、Function関数を2種類作成します。

 

'ハイフォン以下右側の文字を抽出し、Integer型で表示します。

Function InStrGet(str図面番号) As Integer

    Dim strSearchChar As String
    Dim IntMyPos As Integer
    
    strSearchChar = "-"     '"-" を検索します。

    ' InStr関数を用いて、SearchCharの位置を求めます。
    IntMyPos = InStr(str図面番号, strSearchChar)
    
    'Right関数を用いて、****-■■のうち、■■を抽出します。
    InStrGet = Right(str図面番号, Len(str図面番号) - IntMyPos)

End Function

 

'図形番号フィールドの最大、最小値を求めます。

Function SampleModule()

    Dim strMax As String
    Dim strMin As String

    strMax = DLookup("[図面番号]", "Q_sample", "[式] = DMax('[式]', 'Q_sample')")
    strMin = DLookup("[図面番号]", "Q_sample", "[式] = DMin('[式]', 'Q_sample')")
    'strMin = DMax("[図面番号]", "Q_sample") ---- 簡易
    'strMin = DMin("[図面番号]", "Q_sample") ---- 簡易
    
    SampleModule = strMin & "〜" & strMax
    
End Function

# ****-■■の■部分が一桁であれば、上記プロシージャ内にある 簡易 を使用してもOKです。

 

これを上記クエリに下記のように配置します。

 

 

フィールド名の式、式2は適当な名前です。そして、レポートを開くと下記のように表示されます。

 

 

 

2003/08/07


Q&A-019 レポート内で文字列の結合を行う一例


 

-Microsoft Access Club-