Filemaker, если заявление не будет работать - PullRequest
0 голосов
/ 22 мая 2018

У меня есть оператор if, который успешно перебирает данные json, но по какой-то причине мой оператор if всегда читается как true, если это не так.Результатом этого является то, что остальная часть моего оператора if не выполнена, поэтому данные, которые мне нужны для перехода в другие поля, повторно вставляются в то же поле, а не переходят к следующему.

Вот мой код.

Set Variable [ $dataCount; Value:ValueCount ( JSONListKeys ( $json ; "data" ) ) ]
Set Variable [ $i; Value:0 ]
#needs if statement to revert changes if existing
Go to Layout [ “grievances” (grievances) ]
New Record/Request
Set Field [ grievances::_IDgrievance; JSONGetElement ( $json ; "id" ) ]
Set Field [ grievances::grievanceTimestampSubmitted; JSONGetElement ( $json ; "timestamp" ) ]
Loop
#match institution
Set Error Capture [ On ]
If [ (JSONGetElement ( $json ; GetAsNumber ( "data[" & $i & "].field") ) = GetField ( jsonFieldIDs::institution )) ]
Set Field [ grievances::institution; JSONGetElement ( $json ; "data[" & $i & "].value" ) ]
#match delegate
Else If [ (JSONGetElement ( $json ; GetAsNumber ( "data[" & $i & "].field" )) = GetAsNumber (jsonFieldIDs::delegates)) = 1 ]
Set Field [ grievances::delegate; JSONGetElement ( $json ; "data[" & $i & "].value" ) ]
#match grievancedateorignated
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::dateGrievanceOriginated ]
Set Field [ grievances::dateGrievanceOriginated; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match grievanceStep
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::grievanceStep ]
Set Field [ grievances::grievanceStep; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match relatedgrievanceID
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::grievanceSubmissionID ]
Set Field [ grievances::relatedGrievance; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesName
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::employeesName ]
Set Field [ grievances::rawEmployeeName; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesPhoneNumber
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::employeePhone ]
Set Field [ grievances::rawEmployeePhoneNumber; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesAddress
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::employeesAddress ]
Set Field [ grievances::rawEmployeeAddress; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesEmail
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::email ]
Set Field [ grievances::employeesEmail; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesJobTitle
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::delegates ]
Set Field [ grievances::employeesJobTitle; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesShift
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::shift ]
Set Field [ grievances::employeesShift; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesSeniorityDate
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::seniorityDate ]
Set Field [ grievances::employeesSeniorityDate; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match Employee Department
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::department ]
Set Field [ grievances::employeesDepartment; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match EmployeesSignature
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::employeeSignature ]
Set Field [ grievances::employeesSignature; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match nature of grievance
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::natureOfGrievance ]
Set Field [ grievances::grievanceNature; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match violation of Article
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::violationOfArticle ]
Set Field [ grievances::grievanceArticle; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match grievanceSection
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::section ]
Set Field [ grievances::grievanceSection; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match grievance Statement of Case
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::statementOfCase ]
Set Field [ grievances::grievanceCaseStatement; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match grievance Adjustment Requested
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::adjustmentRequested ]
Set Field [ grievances::grievanceAdjustmentRequested; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
#match Union Rep or Delegate Signature
Else If [ JSONGetElement ( $json ; "data[" & $i & "].field" ) = jsonFieldIDs::unionDelegateUnionRepSignature ]
Set Field [ grievances::grievanceUnionRepSignature; JSONGetElement ( $json ; "data[" & $i & "]value" ) ]
End If
Set Variable [ $i; Value:$i + 1 ]
Exit Loop If [ $i ≥ $dataCount ]
End Loop
Commit Records/Requests [ No dialog ]
Go to Layout [ original layout ]

Сценарий работает, но почему мой оператор if читает как true?

ОБНОВЛЕНИЕ

Я прикрепил JSON

{
  "id": "383694318",
  "timestamp": "2018",
  "user_agent": "Mozilla/5.0",
  "remote_addr": "",
  "payment_status": "",
  "form": "",
  "latitude": "",
  "longitude": "",
  "data": [
    {
      "field": "59492998",
      "value": "institution name"
    },
    {
      "field": "61085927",
      "value": "delegate name"
    },
    {
      "field": "59493162",
      "value": "Jan 02, 2016"
    },
    {
      "field": "60868658",
      "value": "1"
    },
    {
      "field": "59493345",
      "value": "first = jane\nmiddle = a\nlast = doe"
    },
    {
      "field": "59493496",
      "value": "555-555-5555"
    },
    {
      "field": "59493502",
      "value": "email@address.com"
    },
    {
      "field": "59493355",
      "value": "CNA"
    },
    {
      "field": "59493364",
      "value": "1st Shift"
    },
    {
      "field": "59493381",
      "value": "Dec xx, 19xx"
    },
    {
      "field": "59493506",
      "value": "https://s3.amazonaws.com/files.formstack.com/uploads/.png"
    },
    {
      "field": "59493533",
      "value": "wrongful termination"
    },
    {
      "field": "59493536",
      "value": "33-1"
    },
    {
      "field": "59493577",
      "value": "XIII"
    },
    {
      "field": "59493589",
      "value": "Wrongful Termination "
    },
    {
      "field": "59493591",
      "value": "make whole"
    },
    {
      "field": "59493713",
      "value": "https://s3.amazonaws.com/files.formstack.com/uploads/.png"
    }
  ],
  "pretty_field_id": "59493345"
}

1 Ответ

0 голосов
/ 22 мая 2018

Если jsonFieldIDs::institution возвращает имя поля, GetField() будет возвращать содержимое поля, а не имя.

Без просмотра файла / json, это немного сложноУстранение неполадок.

Кроме того, попробуйте отключить захват ошибок и посмотрите, есть ли ошибки.

ОБНОВЛЕНИЕ

ВВ первом операторе if вы используете GetAsNumber для ключа json, а не результат:

If [(JSONGetElement ($ json; GetAsNumber ("data [" & $ i & "]).поле ")) = GetField (jsonFieldIDs :: agency))]

Должно быть за пределами JSONGetElement

If [(* GetAsNumber (JSONGetElement ($ json;"data ["& ​​$ i &"] .field ")) = GetField (jsonFieldIDs :: agency))]

Кроме того, я бы удалил GetField, так как вы передаете поле напрямую.

...