How to connect a data store to a record

Hi! I used to work with records, uploading the data based on a manual task in an interface (user introduces parameters and the record updates the info). However, I had to use a data store entity for an editable grid programmation, and I dont know if there is a chance to upload the record based on the data store entity. Thanks!

  Discussion posts and replies are publicly visible

Parents Reply Children
  • Thanks for your answer! The fact is that I had to make an editable grid with the function append in order to add new rows. I followed a tutorial and they used data store in order to make the local variables. I would prefer to do everything only with records, as you said before, but I´m new in appian and, even though I tried to substitute everything and use a record, I have problems in some lines, specially in the function append. 

    How could I substitute the array for the record in my code? Any help would be useful, thank you so much!

    I show you the editable grid code so you can understand my problem:

     

    a!localVariables(
    local!gridDataType: 'type!{urn:com:appian:types:PTPP}PTPP_INVOICE_LINES'(),

    a!formLayout(
    label: "Invoice Detail",
    contents: {
    a!gridLayout(
    label: "Invoice Lines Information",
    labelPosition: "ABOVE",
    headerCells: {
    a!gridLayoutHeaderCell(label: "Purchase Order"),
    a!gridLayoutHeaderCell(label: "Date"),
    a!gridLayoutHeaderCell(label: "Total Value"),
    a!gridLayoutHeaderCell(label: "Material"),
    a!gridLayoutHeaderCell(label: "Supplier"),
    a!gridLayoutHeaderCell(label: "")
    },
    columnConfigs: {
    a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
    a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
    a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
    a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
    a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
    a!gridLayoutColumnConfig(width:"ICON")
    },
    rows: {
    a!forEach(
    items: ri!Array_InvoiceLines,
    expression: a!gridRowLayout(
    contents: {
    a!textField(value:fv!item.idOrden, saveInto: fv!item.idOrden),
    a!textField(value:fv!item.fechaOrden, saveInto: fv!item.fechaOrden),
    a!textField(value:fv!item.totalOrden, saveInto: fv!item.totalOrden),
    a!textField(value:fv!item.material, saveInto: fv!item.material),
    a!textField(value:fv!item.idProveedor, saveInto: fv!item.idProveedor),
    a!richTextDisplayField(
    value: a!richTextIcon(
    icon: "times-circle",
    color: "NEGATIVE",
    link: a!dynamicLink(
    saveinto: a!save(
    target: ri!Array_InvoiceLines, value: remove(
    ri!Array_InvoiceLines, fv!index
    )
    )
    )
    )
    )
    }
    )
    )

    },
    selectionSaveInto: {},
    addRowLink: a!dynamicLink(
    label: "Add new Invoice Line",
    saveinto: a!save(target: ri!Array_InvoiceLines, append(ri!Array_InvoiceLines, local!gridDataType))
    ),
    validations: {},
    shadeAlternateRows: true
    )
    },
    buttons: a!buttonLayout(
    primaryButtons: {
    a!buttonWidget(
    label: "Submit ",
    submit: true,
    style: "PRIMARY",
    validate: true
    )
    },
    secondaryButtons: {
    a!buttonWidget(
    label: "Cancel",
    value: true,
    saveInto: ri!cancel,
    submit: true,
    style: "NORMAL",
    validate: false
    )
    }
    )
    )
    )

  • a!localVariables(
      local!gridDataType: 'type!{urn:com:appian:types:PTPP}PTPP_INVOICE_LINES'(),
    
      a!formLayout(
        label: "Invoice Detail",
        contents: {
          a!gridLayout(
            label: "Invoice Lines Information",
            labelPosition: "ABOVE",
            headerCells: {
              a!gridLayoutHeaderCell(label: "Purchase Order"),
              a!gridLayoutHeaderCell(label: "Date"),
              a!gridLayoutHeaderCell(label: "Total Value"),
              a!gridLayoutHeaderCell(label: "Material"),
              a!gridLayoutHeaderCell(label: "Supplier"),
              a!gridLayoutHeaderCell(label: "")
            },
            columnConfigs: {
              a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
              a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
              a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
              a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
              a!gridLayoutColumnConfig(width:"DISTRIBUTE"),
              a!gridLayoutColumnConfig(width:"ICON")
            },
            rows: {
              a!forEach(
                items: ri!Array_InvoiceLines,
                expression: a!gridRowLayout(
                  contents: {
                    a!textField(value:fv!item.idOrden, saveInto: fv!item.idOrden),
                    a!textField(value:fv!item.fechaOrden, saveInto: fv!item.fechaOrden),
                    a!textField(value:fv!item.totalOrden, saveInto: fv!item.totalOrden),
                    a!textField(value:fv!item.material, saveInto: fv!item.material),
                    a!textField(value:fv!item.idProveedor, saveInto: fv!item.idProveedor),
                    a!richTextDisplayField(
                      value: a!richTextIcon(
                        icon: "times-circle",
                        color: "NEGATIVE",
                        link: a!dynamicLink(
                          saveinto: a!save(
                            target: ri!Array_InvoiceLines, value: remove(
                              ri!Array_InvoiceLines, fv!index
                            )
                          )
                        )
                      )
                    )
                  }
                )
              )
    
            },
            selectionSaveInto: {},
            addRowLink: a!dynamicLink(
              label: "Add new Invoice Line",
              saveinto: a!save(target: ri!Array_InvoiceLines, append(ri!Array_InvoiceLines, local!gridDataType))
            ),
            validations: {},
            shadeAlternateRows: true
          )
        },
        buttons: a!buttonLayout(
          primaryButtons: {
            a!buttonWidget(
              label: "Submit ",
              submit: true,
              style: "PRIMARY",
              validate: true
            )
          },
          secondaryButtons: {
            a!buttonWidget(
              label: "Cancel",
              value: true,
              saveInto: ri!cancel,
              submit: true,
              style: "NORMAL",
              validate: false
            )
          }
        )
      )
    )
        
        

    I also include images of the code. Thanks!

    With this code, I am able to add rows and put values into it, but I´m not able to upload the data in my record after that. I repplied in the next message (Stefan Helzle) and added the new code using records, in which I have error

    Thank you again, best regards