Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 property "DecimalPlaces"  [new]
mlena
Member

Откуда: Toronto
Сообщений: 13
Добрый день!

Подскажите пожалуйста: можно-ли менять значение property "DecimalPlaces" поля на репорте в зависимости от value другого поля в "run-time" ? И если можно, то как?
Что-то типа такого:

If Me.SubjectNo.Value = 9 Then
    Me.MonthActDol.DecimalPlaces = 2
Else
   Me.MonthActDol.DecimalPlaces = 2
End If
Результат отчета должен быть таким:

SubjectNo MonthActDol
1 100
2 150
9 97.44
10 45

Спасибо.
21 май 04, 19:59    [694260]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Да, конечно. Это лучше делать в событии либо Format, либо Print.
21 май 04, 20:03    [694264]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
можно но лучше писать .00 читаемость выше
21 май 04, 20:20    [694281]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
mlena
Member

Откуда: Toronto
Сообщений: 13
автор
событии либо Format, либо Print.


Что-то я не поняла - можно поподробнее, PLEASE :-)?
21 май 04, 20:21    [694282]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
У отчета, как и у формы, есть события. У них обработчики. В обработчиках пишется программа.
21 май 04, 20:25    [694289]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
пример обработчика живого отчета формирующего размеры /цвет считающего для оглавления номера страниц правый / левый колонтитул
Access97/mdb

Dim Swop1(32000) As Integer
Dim Swop2(32000) As Integer
Dim Swop3(32000) As Integer
Dim Swop4(32000) As Integer
Private PageColon As Integer

Private Sub ВерхнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
If (Me![P_Rang] = 4) Then Me![Col_Corp_1] = Me![P_Post]
If (Me![P_Rang] = 4) Then Me![Col_Corp_2] = Me![P_Post]
PageColon = Me.Page
If Int(PageColon / 2) = PageColon / 2 Then
Col_Corp_2.Visible = False
Col_Corp_1.Visible = True
Else
Col_Corp_1.Visible = False
Col_Corp_2.Visible = True
End If
End Sub

Private Sub НижнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)

With LeftColon
PageColon = Me.Page
If Int(PageColon / 2) = PageColon / 2 Then
.Visible = False
CDULeft.Visible = True
Else
.Visible = True
CDULeft.Visible = False
End If
End With

With RightColon
PageColon = Me.Page
If Int(PageColon / 2) = PageColon / 2 Then
.Visible = True
CDURight.Visible = False
Else
.Visible = False
CDURight.Visible = True
End If
End With

End Sub

Private Sub ОбластьДанных_Format(Cancel As Integer, FormatCount As Integer)
If (Me![P_Rang] = 1) Then
               Me![P_Post].Visible = True
               Me![P_Fio].Visible = True
               Me![P_Num].Visible = True
               Me![P_Post1].Visible = False
               Me![P_Fio1].Visible = False
               Me![P_Num1].Visible = False
              Else
               Me![P_Post1].Visible = True
               Me![P_Fio1].Visible = True
               Me![P_Num1].Visible = True
               Me![P_Post].Visible = False
               Me![P_Fio].Visible = False
               Me![P_Num].Visible = False
End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Me.Section(0).Visible = True
       If (Me![P_Post] = "Центральный аппарат") Then
       Me.Section(0).Visible = False
       End If
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      Me.Section(9).Visible = True
      Me![P_Post1].FontSize = 8
      Me![P_Post1].BackColor = 16777215
      Me![L_Sep].Visible = True
Select Case Me![P_Rang]
     Case 1
        Swop1(Me![Id]) = Page
        If (Me![P_Gl1] = 1) Then
                          Me![P_Post].FontBold = True
                          Me![P_Fio].FontBold = True
                          'Me![P_Post].Left = 0
                           Else
                          Me![P_Post].FontBold = False
                          Me![P_Fio].FontBold = False
                          'Me![P_Post].Left = 100
        End If
   Case 2
       Swop2(Me![Id]) = Page
      Me![P_Num1].Visible = False
      Me![P_Post1].FontSize = 16
   Case 3
      Swop3(Me![Id]) = Page
      Me![P_Post1].FontSize = 20
   If Len(Me![P_Num1]) < 3 Then Me![P_Num1].Visible = False
   Case 4
      Swop4(Me![Id]) = Page
      Me![L_Sep].Visible = False
      Me![P_Fio1].Visible = False
      Me![P_Num1].Visible = False
      Me![P_Post1].FontSize = 24
      Me![P_Post1].BackColor = 8454016
   Case Else
End Select
End Sub

Private Sub ПримечаниеОтчета_Format(Cancel As Integer, FormatCount As Integer)
Dim MyDb As Database
Dim Sql_String As String
Dim TestTable As Recordset
Set MyDb = CurrentDb
Sql_String = "Select * From TCorp "
    Set TestTable = MyDb.OpenRecordset(Sql_String)
    If (TestTable.RecordCount = 0) Then GoTo Xlop4
    TestTable.MoveFirst
    Do Until TestTable.EOF
    TestTable.Edit
    TestTable![P_Num] = Swop4(TestTable![Corp_Id])
    TestTable.Update
    TestTable.MoveNext
    Loop
Xlop4: TestTable.Close
Sql_String = "Select * From TComp "
    Set TestTable = MyDb.OpenRecordset(Sql_String)
    If (TestTable.RecordCount = 0) Then GoTo Xlop3
    TestTable.MoveFirst
    Do Until TestTable.EOF
    TestTable.Edit
    TestTable![P_Num] = Swop3(TestTable![Comp_Id])
    TestTable.Update
    TestTable.MoveNext
    Loop
Xlop3: TestTable.Close
Sql_String = "Select * From TPodr "
    Set TestTable = MyDb.OpenRecordset(Sql_String)
    If (TestTable.RecordCount = 0) Then GoTo Xlop2
    TestTable.MoveFirst
    Do Until TestTable.EOF
    TestTable.Edit
    TestTable![P_Num] = Swop2(TestTable![Podr_Id])
    TestTable.Update
    TestTable.MoveNext
    Loop
Xlop2: TestTable.Close
Sql_String = "Select * From TPers "
    Set TestTable = MyDb.OpenRecordset(Sql_String)
    If (TestTable.RecordCount = 0) Then GoTo Xlop1
    TestTable.MoveFirst
    Do Until TestTable.EOF
    TestTable.Edit
    TestTable![P_Num] = Swop1(TestTable![Pers_Id])
    TestTable.Update
    TestTable.MoveNext
    Loop
Xlop1: TestTable.Close

21 май 04, 20:31    [694300]     Ответить | Цитировать Сообщить модератору
 Re: property "DecimalPlaces"  [new]
mlena
Member

Откуда: Toronto
Сообщений: 13
Огромное спасибо!!
A я пыталась влепить code на 'Report Event' (там естественно нет Format & Print), a надо было на 'Detail_Format' . Pardon за глупый вопрос :-(
21 май 04, 20:48    [694326]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить