Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Simple IF statement getting error "a string is required here"

Status
Not open for further replies.

dellguy

Programmer
Aug 14, 2001
70
CA
Same issue in CR 10 & 2008. This is a simply IF statement but for the life of me, I can not see what's wrong. I am getting a "a string is required here" error for code tagged below.

Anyone able to shed some light?

WhilePrintingRecords;
stringVar Assigned;
numberVar DaysAssigned;
dateTimeVar AssignStart;
dateTimeVar AssignEnd;

IF ({CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim Assigned to")
THEN
(
IF {@check}
THEN
(
AssignStart := AssignStart;
AssignEnd := {CLAIM_ACTIVITY_HISTORY.CREATED_AT};
DaysAssigned := (AssignEnd - AssignStart) + DaysAssigned + 1;
Assigned := "NO";
)
ELSE
// ********************** BELOW IS HIGHLIGHTED *******
(
Assigned := "YES";
AssignStart := {CLAIM_ACTIVITY_HISTORY.CREATED_AT};
AssignEnd := AssignEnd;
)
// ********************** ABOVE IS HIGHLIGHTED *******

)
ELSE
IF {CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim re-opened"
THEN
(
IF NOT {@check}
THEN
(
Assigned := "YES";
AssignStart := {CLAIM_ACTIVITY_HISTORY.CREATED_AT};
)
)
ELSE YES
;
 
Hi,
Is the error at this point:

ELSE YES


If so, do you mean TRUE or the string "YES"



[profile]

To Paraphrase:"The Help you get is proportional to the Help you give.."
 
YES and TRUE provide the same results.

I kept fiddling with this code and ended up with a working solution. Still do not know why this was not working.
 
If you reorder the lines you will get a different error--looking for a number or looking for a datetime. So you either have to set each of these values in separate if/then clauses or make the variables all strings (I think).

-LB
 
This really had me scratching my head. The final code has mixed variable types being assigned within the same if block. So I'm lost on this one. Anyway works fine now.

Thanks for the input!!
 
Can you please post the one that worked? Thanks.

-LB
 
OK will do first thing Friday. I'm off tomorrow (government job) so no access to system until Friday.
 
lbass - this is what works now. Thanks for your help (as usual).

WhilePrintingRecords;
stringVar Assigned;
numberVar DaysAssigned;
numberVar DaysDiff;
dateVar AssignStart;
dateVar AssignEnd;
shared dateVar FirstDate := (IF FirstDate > DATE(1900,01,01) THEN FirstDate ELSE DATE(1900,01,01));
shared dateVar LastDate;

IF ({CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim Assigned to"
AND {CLAIM_ACTIVITY_HISTORY.DESCRIPTION} LIKE "*"+{ESSI_USER.USER_ID}+"*")
OR {CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim re-opened"
OR {CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim Settlement has failed"
THEN
(
IF Assigned = "YES"
THEN
(
AssignStart := AssignStart;
AssignEnd := DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT});
LastDate := DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT});
DaysAssigned := (AssignEnd - AssignStart) + DaysAssigned + 1;
DaysDiff := (AssignEnd - AssignStart) + 1;
Assigned := "NO";
)
ELSE
(
FirstDate := IF FirstDate = DATE(1900,01,01) THEN DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT}) ELSE FirstDate;
AssignStart := DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT});
AssignEnd := AssignEnd;
DaysAssigned := DaysAssigned;
DaysDiff := 0;
Assigned := "YES";
)
)
ELSE
IF ({CLAIM_ACTIVITY_HISTORY.DESCRIPTION} STARTSWITH "Claim Assigned to"
AND NOT ({CLAIM_ACTIVITY_HISTORY.DESCRIPTION} LIKE "*"+{ESSI_USER.USER_ID}+"*"))
OR OnLastRecord
THEN
(
IF Assigned = "YES"
THEN
(
AssignStart := AssignStart;
AssignEnd := DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT});
LastDate := DATE({CLAIM_ACTIVITY_HISTORY.CREATED_AT});
DaysAssigned := (AssignEnd - AssignStart) + DaysAssigned + 1;
DaysDiff := (AssignEnd - AssignStart) + 1;
Assigned := "NO";
)
ELSE
(
AssignStart := AssignStart;
AssignEnd := AssignEnd;
DaysAssigned := DaysAssigned;
DaysDiff := 0;
Assigned := Assigned;
)
)
ELSE
(
AssignStart := AssignStart;
AssignEnd := AssignEnd;
DaysAssigned := DaysAssigned;
DaysDiff := 0;
Assigned := Assigned;
)
;
DaysAssigned;
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top