jeudi 13 septembre 2007

Fwd: tracer les suppressions dans pivotal



---------- Forwarded message ----------
From: Nicolas LAURENT <nla@carmis.fr>
Date: 12 sept. 2007 11:27
Subject: tracer les suppressions dans pivotal
To: collaborateurs <collaborateurs@carmis.fr>

 
Bonjour voici une methode simple pour tracer les suppressions par les boutons supprimer (primary) dans pivotal (dll en vb)
 
1. creer table Trace_suppression
champs :
User_Id ( id sur users...)
Table_Name (text80)
Detail_Suppression (text 254)


2. dans la dll d'un formulaire scriptable par tous
ajouter dans le execute
        Case Is = UCase$("TRACESUPPRESSION")
            Call TraceSuppression(vntUserDefParams(0), vntUserDefParams(1))
et ajouter dans la sub suivante:
Private Sub TraceSuppression(ByVal SuppFormName As String, ByVal SuppRecord_Id As Variant)
    Dim rstJOB As ADODB.Recordset
    Dim rdstJOB As RDALib.IRDataset
    Dim suppDescr As String
    Dim SuppForm As RDALib.IRForm   
    Set SuppForm = mrsysSystem.Forms(SuppFormName)   
    suppDescr = "Suppression : "
    suppDescr = suppDescr & FindValue(SuppForm.Table.TableName, "Rn_Descriptor", SuppForm.Table.PrimaryKeyField.FieldName, SuppRecord_Id)
    suppDescr = suppDescr & " (" & mrsysSystem.IdToString(SuppRecord_Id) & ")" 
    Set rdstJOB = mrsysSystem.CreateDataset
    rdstJOB.TableName = "Trace_suppression"
    rdstJOB.Fields.Append "User_Id"
    rdstJOB.Fields.Append "Table_Name"
    rdstJOB.Fields.Append "Detail_Suppression"
    Set rstJOB = rdstJOB.BuildNewRecordset
    rstJOB.AddNew
    rstJOB.Fields("User_Id").Value = mrsysSystem.CurrentUserId
    rstJOB.Fields("Table_Name").Value = SuppForm.Table.TableName
    rstJOB.Fields ("Detail_Suppression").Value = suppDescr
    rdstJOB.SaveRecordset rstJOB
    Set rstJOB = Nothing
    Set rdstJOB = Nothing
End Sub

3. créer dans script client un global

sub TraceSuppression()
      
    Dim rfrmForm,objParams,vntParams,objrParam
    Set rfrmForm = UIMaster.RSysClient.GetForm("FORMULAIRE ACCESSIBLE PAR TOUS")
    Set objParams = CreateTransitPointParamsObj()
    objParams.SetUserDefParam 1, UIMaster.RUIcenter.Form.FormName
    objParams.SetUserDefParam 2, UIMaster.RUIcenter.recordId
    vntParams = objParams.ConstructParams()
    rfrmForm.Execute "TRACESUPPRESSION", vntParams
      
end sub


4. faire un Global.TraceSuppression() dans tous les deleteformdata des scripts clients
des formulaires dont on veut tracer la suppression

par exemple

Sub DeleteFormData(rfrmForm, vntRecordId, vntParameters)
   
    On Error Resume Next
    
    Global.TraceSuppression()
                                                           
    rfrmForm.DoDeleteFormData vntRecordId, vntParameters
 
    If Err.Number <> 0 Then
        uimaster.ShowErrorMessage Err.Description
    End If
   
End Sub
 
Ca peut toujours servir...
 
++
 
Une première pierre à la base de connaissance CARMIS ?
 

mardi 3 juillet 2007

KB Item: UIMaster.RUICenter.Dirty = False property does not disable buttons

Detail
The "UIMaster.RUICenter.Dirty = False" property does not disable the Save & Apply buttons.
------------------------------ 
Resolution
A workaround is available as below:

1) Define ClearDirtyFlagDelayed sub in the event handler itself or in a global script as per the code sample below:

Sub ClearDirtyFlagDelayed()
Dim strCommand
strCommand = "RUIMaster.RUICenter.Dirty = False"
UIMaster.Window.SetTimeOut strCommand, 300, "VBScript"
End Sub

2) Place a call to ClearDirtyFlagDelayed sub in the event handler instead of the statement UIMaster.RUICenter.Dirty = False
 

KB Item: How to modify the "Title" on the Title bar in Rich client

Detail
When connecting to Rich Client, the Title bar on the browser always displays "Pivotal Active Access - 'system name'.

Attempting to edit "Rdauimodal.htm title" has no effect. Is it possible to modify the title on the title bar?
----------------------------------- 
Resolution
To change the displayed title, go to the customization system and use the "TITLE_SYSTEM" LD String to modify the title.
 
 
 

KB Item: Newly added records do not appear in 'recently viewed' records.

Detail
The recently viewed records feature does not include newly added records.
--------------------------------------- 
Resolution
This functionality is not currently available in the Out of the Box system. However, this feature can be added via customization.

As per the 5.9 API guide available on eService, the function is as follows:

Public Sub AddToRecentItems( _
ByVal tableId As Variant, _
ByVal recordId As Variant, _
ByVal itemText As String, _
ByVal ViewType As ViewTypeEnum _
)

Once the new record has been saved, invoking this function will add the new record to the recently viewed records.

lundi 18 juin 2007

filters on tables

On a 5.7 system, I overrode OnQuickSearchLoaded and enforced a 'Refinement' that restricted what records I wanted visible. 
There would be a Global variable that was set previously that I checked.

Refinements apply additional filters to searches.

It won't work against Global Search, that is definitely only limited by View Filters.
Is it really a problem if non-active employees appear in Global Search?

I don't have the code handy, but something like:

Sub OnQuickSearchLoaded(vntParam)
  
   Dim searchObj
   Set searchObj = UIMaster.RUICenter
   If (gActiveEmployeesOnly) Then
      Call searchObj.SetRefinement(0, True) ' This turns on Refinement #1
   End If

End Sub
     
Alternatively review your policy around assignment of activities to in-active employees, maybe re-assign to a 'Inactive Employee' employee record that is Active,
and record somewhere else who the original employee was...

vendredi 25 mai 2007

Récupérer un recordset depuis un Result List


Set rstSRL = UIMaster.RUICenter.Recordset
rstSRL.MoveFirst
Do Until rstSRL.EOF
if rstSRL.Fields("MultiSelect@MS").Value = -1 Then
' Do something
End if
Loop

jeudi 26 avril 2007

Disable Forms

 
Sub DisableForm()

    Dim i

    Dim I2

    Dim nField

    Dim nSegment

    Dim rfrmForm

    Dim sField

    Dim sSegment

    Dim sSegmentVisible

    Dim sFieldVisible

     

    Set rfrmForm = UIMaster.RUICenter.Form

    nSegment = rfrmForm.Segments.Count

   

    For i = 0 To (nSegment - 1)

        nField = rfrmForm.Segments(i).FormFields.Count

        sSegment = rfrmForm.Segments(i).SegmentName

        sSegmentVisible = rfrmForm.Segments(i).IsHidden

        For I2 = 0 To (nField - 1)

            sField = rfrmForm.Segments(i).FormFields.Item(CInt(I2)).FieldName

            sFieldVisible = rfrmForm.Segments(i).FormFields.Item(CInt(I2)).Visible

           

           ' stop

            If rfrmForm.Segments(i).FormFields.Item(CInt(I2)).IsButton And rfrmForm.Segments(i).FormFields.Item(CInt(I2)).Visible Then

                                               If Not rfrmForm.Segments(i).IsHidden Then

                                                           UIMaster.RUICenter.GetButtonEx(rfrmForm.Segments(i).ParentTab.TabId, sSegment, rfrmForm.Segments(i).FormFields.Item(CInt(I2)).ButtonName).Disabled = True

                                               End If

            End If

           

            If sField <> "" And sFieldVisible = True And sSegmentVisible = False Then
                If rfrmForm.Segments(i).IsSecondary Then
                    UIMaster.RUICenter.DisableSecondaryFieldEx rfrmForm.Segments(i).ParentTab.TabId, sSegment, sField, True
                Else
                    UIMaster.RUICenter.DisableFieldEx rfrmForm.Segments(i).ParentTab.TabId, sSegment, sField, True
                End If

            End If

        Next

        If rfrmForm.Segments(i).IsSecondary Then MakeSecondaryReadonly sSegment, True

    Next

   

    UIMaster.RUICenter.SelectTab 0

End Sub





' RemoveAddButtonFromSecondary. AndreyF. 09/19/05

Sub RemoveAddButtonFromSecondary(vntSecondary)

    Dim strAddButtonId: strAddButtonId = "AddButton" + GetSegmentSuffix(vntSecondary)

    Dim htmlAddButton: Set htmlAddButton = Document.frames("Centre").Document.getElementById(strAddButtonId)

    If htmlAddButton Is Nothing Then Exit Sub



    htmlAddButton.innerHTML = ""

    htmlAddButton.Title = ""

    htmlAddButton.ClassName = "NoAddButton"

End Sub



' GetSegmentSuffix. AndreyF. 09/19/05

Function GetSegmentSuffix(vntSegment)

    Dim rfrm: Set rfrm = UIMaster.RUICenter.Form

    Dim rseg: Set rseg = rfrm.Segments(vntSegment)

    Dim rtab: Set rtab = rseg.ParentTab



    Dim lngTab: lngTab = 0

    While Not rfrm.Tabs(lngTab) Is rtab

        lngTab = lngTab + 1

    Wend

    Dim lngSeg: lngSeg = 0

    While Not rtab.Segments(lngSeg) Is rseg

        lngSeg = lngSeg + 1

    Wend



    GetSegmentSuffix = "_" & lngTab & "_" & lngSeg

End Function



' RemoveDeleteButtonFromSecondary. AndreyF. 09/19/05

Sub RemoveDeleteButtonFromSecondary(vntSecondary)

    Dim strSegmentSuffix: strSegmentSuffix = GetSegmentSuffix(vntSecondary)

    Dim strDeleteHeadingId: strDeleteHeadingId = "DeleteHeading" + strSegmentSuffix

    Dim strDeleteButtonId: strDeleteButtonId = "DeleteButton" + strSegmentSuffix



    Dim htmlDocument: Set htmlDocument = Document.frames("Centre").Document

    Dim htmlDeleteHeading: Set htmlDeleteHeading = htmlDocument.getElementById(strDeleteHeadingId)

    If Not htmlDeleteHeading Is Nothing Then htmlDeleteHeading.removeNode True

    Dim htmlDeleteButton: Set htmlDeleteButton = htmlDocument.getElementById(strDeleteButtonId)

    If Not htmlDeleteButton Is Nothing Then htmlDeleteButton.removeNode True

End Sub



'--------------------------------

' MakeSecondaryReadonly  ArthurH 23/06/2005

'--------------------------------

Sub MakeSecondaryReadonly(vntSecondary, blnStatus)

   ' On Error Resume Next

    'stop

    Dim RUICenter: Set RUICenter = UIMaster.RUICenter

    Dim rfld: For Each rfld In RUICenter.Form.Segments(vntSecondary).FormFields

        If Not rfld.ReadOnly And Not RUICenter.Form.Segments(vntSecondary).IsHidden Then RUICenter.DisableSecondaryFieldEx RUICenter.Form.Segments(vntSecondary).ParentTab.TabId, vntSecondary, rfld.FieldId, blnStatus

    Next

   

RemoveAddButtonFromSecondary vntSecondary

RemoveDeleteButtonFromSecondary vntSecondary

   

    'If Err.Number <> 0 Then Err.Clear

End Sub