project QadFinancials > class BSafStructure > API query SafStructureLineByStructIDLine (optimised)

Description

SafStructureLineByStructIDLine


query filter (table tFilter)


tcBusinessFieldNametcDataTypetcOperator
iiSafStructure_IDi=
iiLineNumberi=
icSafStructureCodec=
icSafConceptCodec=
tSaf.SafCodec=,>=,>,<>,<=,<,begins,can-do,matches
tSafConcept.SafConceptCodec=,>=,>,<>,<=,<,begins,can-do,matches
tSaf.SafDescriptionc=,>=,>,<>,<=,<,begins,can-do,matches
tSafStructure.SafStructureCodec=,>=,>,<>,<=,<,begins,can-do,matches
tSafStructureLine.SafStructureLineNumberi=,>=,>,<>,<=,<


Parameters (internal)


iiSafStructure_IDintegerSAF Structure ID
iiLineNumberintegerLine Number
icSafStructureCodecharacterSafStructureCode
icSafConceptCodecharacterSAF Concept Code


query condition


  each SafStructureLine where
SafStructureLine.SafStructure_ID = iiSafStructure_ID AND
SafStructureLine.SafStructureLineNumber = iiLineNumber

      first SafConcept (inner-join) where
SafConcept.SafConcept_ID = SafStructureLine.SafConcept_ID AND
SafConcept.SafConceptCode = icSafConceptCode

          each Saf (inner-join) where
Saf.SafConcept_ID = SafConcept.SafConcept_ID AND

      first SafStructure (inner-join) where
SafStructure.SafStructure_ID = SafStructureLine.SafStructure_ID AND
SafStructure.SafStructureCode = icSafStructureCode


query resultset tqSafStructureLineByStructIDLine


field namedata typedb fielddescription
tiSaf_IDintegerSaf.Saf_IDRecord ID
tcSafCodecharacterSaf.SafCodeSAF Code
tiSafConcept_IDintegerSafStructureLine.SafConcept_IDLink to SafConcept
tcSafConceptCodecharacterSafConcept.SafConceptCodeSAF Concept Code
tcSafDescriptioncharacterSaf.SafDescriptionSAF Description
tiSafStructure_IDintegerSafStructureLine.SafStructure_IDLink to SafStructure
tcSafStructureCodecharacterSafStructure.SafStructureCodeStructure Code
tiSafStructureLine_IDintegerSafStructureLine.SafStructureLine_IDRecord ID
tiSafStructureLineNumberintegerSafStructureLine.SafStructureLineNumberLine Number
SafStructureLineCustomcharactercalculatedcustom fields
SafConceptCustomcharactercalculatedcustom fields
SafCustomcharactercalculatedcustom fields
SafStructureCustomcharactercalculatedcustom fields
ti_sequenceintegercalculatedprimary index
tc_rowidcharactercalculated = rowid(SafStructureLine),rowid(SafConcept),rowid(Saf),rowid(SafStructure)


Internal usage


QadFinancials
method BExpenseNote.ValidateComponent2


Sample code: how to call this query through RPCRequestService (QXtend Inbound)

define temp-table ttContext no-undo
    field propertyQualifier as character
    field propertyName as character
    field propertyValue as character
    index entityContext is primary unique
        propertyQualifier
        propertyName
    index propertyQualifier
        propertyQualifier.

define dataset dsContext for ttContext.

define variable vhContextDS as handle no-undo.
define variable vhExceptionDS as handle no-undo.
define variable vhServer as handle no-undo.
define variable vhInputDS as handle no-undo.
define variable vhInputOutputDS as handle no-undo.
define variable vhOutputDS as handle no-undo.
define variable vhParameter as handle no-undo.

/* Create context */
create ttContext.
assign ttContext.propertyName = "programName"
       ttContext.propertyValue = "BSafStructure".
create ttContext.
assign ttContext.propertyName = "methodName"
       ttContext.propertyValue = "SafStructureLineByStructIDLine".
create ttContext.
assign ttContext.propertyName = "applicationId"
       ttContext.propertyValue = "fin".
create ttContext.
assign ttContext.propertyName = "entity"
       ttContext.propertyValue = "1000".
create ttContext.
assign ttContext.propertyName = "userName"
       ttContext.propertyValue = "mfg".
create ttContext.
assign ttContext.propertyName = "password"
       ttContext.propertyValue = "".

/* Create input dataset */
create dataset vhInputDS.
vhInputDS:read-xmlschema("file", "xml/bsafstructure.safstructurelinebystructidline.i.xsd", ?).
vhParameter = vhInputDS:get-buffer-handle("tParameterI").
vhParameter:buffer-create().

assign vhParameter::icRange = "A"
       vhParameter::icRowid = ""
       vhParameter::iiRownum = 0
       vhParameter::iiNumber = 5 /* Number of records to read */
       vhParameter::icSortColumns = ""
       vhParameter::ilCountOnly = false
       vhParameter::ilForwardRead = true
       vhParameter::iiMaximumBrowseRecordsToCount = 0.

vhParameter = vhInputDS:get-buffer-handle("tFilter").
vhParameter:buffer-create().

assign vhParameter::<field-name-1> = <field-value-1>
       vhParameter::<field-name-2> = <field-value-2>
       ...

/* Connect the AppServer */
create server vhServer.
vhServer:connect("-URL <appserver-url>").

if not vhServer:connected()
then do:
    message "Could not connect AppServer" view-as alert-box error title "Error".
    return.
end.

/* Run */
assign vhContextDS = dataset dsContext:handle.

run program/rpcrequestservice.p on vhServer
    (input-output dataset-handle vhContextDS by-reference,
           output dataset-handle vhExceptionDS,
     input        dataset-handle vhInputDS by-reference,
     input-output dataset-handle vhInputOutputDS by-reference,
           output dataset-handle vhOutputDS).

/* Handle output however you want, in this example, we dump it to xml */
if valid-handle(vhExceptionDS)
then vhExceptionDS:write-xml("file", "Exceptions.xml", true).

if valid-handle(vhOutputDS)
then vhOutputDS:write-xml("file", "Output.xml", true).

/* Cleanup */
vhServer:disconnect().
assign vhServer = ?.

if valid-handle(vhInputDS)
then delete object vhInputDS.

if valid-handle(vhOutputDS)
then delete object vhOutputDS.

if valid-handle(vhExceptionDS)
then delete object vhExceptionDS.