過去ログ

                                Page      29
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼あるフォームで抽出したものを並べ替えて印刷するとき  ゆき 02/9/12(木) 9:28
   ┗Re:またしゃしゃり出てきました  Hirofumi 02/9/12(木) 21:25
      ┗大変ありがとうございます^^  ゆき 02/9/13(金) 14:05

 ───────────────────────────────────────
 ■題名 : あるフォームで抽出したものを並べ替えて印刷するとき
 ■名前 : ゆき
 ■日付 : 02/9/12(木) 9:28
 -------------------------------------------------------------------------
   あるフォームで複数条件のもと抽出したものだけ
で印刷しようと思ったときにコマンドボタンに
以下のプロシージャを作成したらうまくいきました^^


Private Sub コマンド1_Click()
If Me.FilterOn = True Then
DoCmd.OpenReport "main1", acViewPreview, , Me.Filter
End If

else
DoCmd.OpenReport "main1", acViewPreview
End If

End Sub

ここで本題にはいるのですが
この同じフォームに並び替えをおこなえるボタンも3箇所ほど
作ったのですが、抽出したものでさらに並び替えした順番に
印刷しようと思ったら
どうすればいいのでしょうか?(><)
If文で作るには無理があるのでしょうか?(><)

並び替えのイベントは以下のプロシージャでこれが3種類ほどあります。
(3種類というのは場所順、番号順、種類順にそれぞれ昇順、降順で
 並び替えができるようになっています。)

'昇順
Private Sub コマンド1_Click()
Me.OrderBy = "場所 ASC"
Me.OrderByOn = True

End Sub

'降順
Private Sub コマンド2_Click()
Me.OrderBy = "場所 DESC"
Me.OrderByOn = True

End Sub

 ───────────────────────────────────────  ■題名 : Re:またしゃしゃり出てきました  ■名前 : Hirofumi <hirofumi@venus.dti.ne.jp>  ■日付 : 02/9/12(木) 21:25  -------------------------------------------------------------------------
   人に聞けと言っといて、またしゃしゃり出てきました
解らないのも癪に障るので、出来る範囲で調べてみました
もっと善い方法が有るのかも知れません
調べた範囲で一番、単純な方法はこんな感じらしいです
リポートの「グループ化/並べ替え」が設定されてないのが条件の一つらしいです
「グループ化/並べ替え」が設定されていると其方が優先されるようです
それと、当方Access97で試したのですが、環境の問題なのか解りませんが
当方では、「グループ化/並べ替え」が設定されていると、これが解除できない見たいです
また、OrderBy、OrderByOnとも設定は出来るのですが、参照は出来ない見たいです
Access2000だとここら辺が変わっているかもしれません

'Declarationsセクションに記述
Private strOrderBy As String

'昇順
Private Sub コマンド1_Click()

  strOrderBy = "[場所] ASC"
  With Me
    .OrderBy = strOrderBy
    .OrderByOn = True
  End With

End Sub

'降順
Private Sub コマンド2_Click()

  strOrderBy = "[場所] DESC"
  With Me
    .OrderBy = strOrderBy
    .OrderByOn = True
  End With

End Sub

'解除
Private Sub コマンド解除_Click()

  strOrderBy = ""
  Me.OrderByOn = False

End Sub

Private Sub コマンド1_Click()

  Dim stDocName As String

  stDocName = "main1"
  If Me.FilterOn = True Then
    DoCmd.OpenReport stDocName, acViewPreview, , Me.Filter
  Else
    DoCmd.OpenReport stDocName, acViewPreview
  End If
  If strOrderBy <> "" Then
    With Reports(stDocName)
      .OrderBy = strOrderBy
      .OrderByOn = True
    End With
  End If
 
End Sub

 ───────────────────────────────────────  ■題名 : 大変ありがとうございます^^  ■名前 : ゆき  ■日付 : 02/9/13(金) 14:05  -------------------------------------------------------------------------
   Hirofumi さん何度も何度も大変ありがとうございます^^
わざわざ調べてくれるなんて感激(><)
すごいわかりやすくてさっそく使わせてもらいました^^

>リポートの「グループ化/並べ替え」が設定されてないのが条件の一つらしいです
>「グループ化/並べ替え」が設定されていると其方が優先されるようです
>それと、当方Access97で試したのですが、環境の問題なのか解りませんが
>当方では、「グループ化/並べ替え」が設定されていると、これが解除できない見たいです

私はAccess2000でおこなっているのですが、私のほうも、
「グループ化/並べ替え」が設定されていると、これが解除できない見たいです(><)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 29