
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Load table Where Exist ($(Variable that may be empty))
Hello,
I am working in a Foor loop where i have to chech for duplicates and I want to do it with an Exist. Comparing the Field of the New Table with the one of the Old Table. The point is that sometimes for some tables i have to do it for 1 field but sometimes for more.
My load is the Folowing
Table:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not( Exist ( $(Field2NewTable), $(Field2OldTable) ) ) ;
The problem appears that when $(Field2NewTable) and $(Field2OldTable) are empty I can not do the load.
I Tryed Qlikview Loads the table if I do something like not( Exist ( 'RandomText', 'RandomText') ) . But if I use '$(Field1NewTable)' it is text and when the Fields are not empty does not work Correctly.
Also I tryed to do if( len($(Field2NewTable))>0, $(Field2NewTable), 'RandomText') but QlikView is Still Complaining.
Is there some way to do that?
- « Previous Replies
-
- 1
- 2
- Next Replies »
Accepted Solutions
.png)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, so it is not that the field is empty, is that the field does not even exist for the step of the loop you are in, therefore the variable is never populated, with neither 0 or anything else, because you are in step 3 while you only have 2 values, so in the step 3 of the loop, the field does not exist in that table (not that it is empty).
In this case you will need to do two loads: one loading everything you need to load, the second with the EXISTS() in the second load. Or remove the loop altogether (if possible), and use the EXISTS() function to know what you have to load instead of looping through each field.
.png)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Use the condition when you create the variables, in the LET or SET statement instead of the EXISTS().
Maybe you could post a sample app to look into?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Maybe You Refere to this?
Let vField1Name = FieldValue('Field1Name',$(iTable))& if(len(FieldValue('Field1Name',$(iTable)))=0,'a')
I Tryed also:
Let vField1Name =if(len(FieldValue('Field1Name',$(iTable)))=0,'a', FieldValue('Field1Name',$(iTable)))
But it is not working: (. It dose not work because it says that field a does not exist. It whould work if it was exists('a','a') or exists('$(vField1Name)','$(vField1Name)'). But then doesent work if the field is the correct.
//**************************************
Here I show you some code:
Suppose this data on the QV
Table1:
[SomeKeyName1
A
B
C
]
Table2:
[SomeKeyName2,SomeKeyName3
D,1
E,2
F,3
]
Tables:
Load *
Inline [
TableName,Field1Name,Field2Name
Table1, SomeKeyName1
Table2,SomeKeyName2,SomeKeyName3
];
Data on QVD'S
Table1:
[SomeKeyName1
B
C
D
E
]
Table2:
[SomeKeyName2,SomeKeyName3
E,4
F,3
G,5
]
And now I am loading new data to concatenate on the tables so:
for iTable=1 to 2
Let vTableName= FieldValue('TableName',$(iTable));
Let vField1Name= FieldValue('Field1Name',$(iTable));
Let vField2Name= FieldValue('Field2Name',$(iTable));
Concatenate('$(vTablename)')
Load *
From [$(QVDPath)$(QVDName).qvd](qvd)
Where not (Exist ( $(vField1Name), $(vField1Name) ) )
and not (Exist ( $(vField2Name), $(vField2Name) ) ) // <-------- Here is the problem if vField2Name is Empty
The resullt have to be:
Table1:
[SomeKeyName1
A
B
C
D
E
]
Table2:
[SomeKeyName2,SomeKeyName3
D,1
E,2
F,3
E,4
G,5
]


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
give it a try
Table:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not( Exist ( alt($(Field2NewTable),0), alt($(Field2OldTable),0 ) ) ;
or
Table:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not( Exist ( alt($(Field2NewTable),0), alt($(Field2OldTable),1 ) ) ;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, it seems pretty cool!
But when I try this is what I get:
Error in expression:
')' expected
MyTable:
LOAD *
From [..\QVD\MyTable.qvd](qvd)
Where not( Exists(EVT_OCRD_TS,EVT_OCRD_TS))
and not( Exists(Alt(,'0'),Alt(,'0')) )


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
try this
Table:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not Exist ( alt($(Field2NewTable),0), alt($(Field2OldTable),0 ));


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i guess we missed one extra parenthesis at the last . add it and give it a go..
able:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not( Exist ( alt($(Field2NewTable),0), alt($(Field2OldTable),0 ) )) ;
or
Table:
Load *
Resident MyResidenTable
where not( Exist ( $(Field1NewTable), $(Field1OldTable) ) )
and not( Exist ( alt($(Field2NewTable),0), alt($(Field2OldTable),1 ) )) ;

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This whas the code when I got the error:
Table:
LOAD *
From [$(MyPath)$(MyTable).qvd](qvd)
Where not( Exists($(vTimeField),$(vTimeField)))
and not( Exists( Alt($(vField4),0), Alt($(vField4),0) )


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Table:
LOAD *
From [$(MyPath)$(MyTable).qvd](qvd)
Where not( Exists($(vTimeField),$(vTimeField)))
and not( Exists( Alt($(vField4),0), Alt($(vField4),0) ) )
notice the last ')' for not it was not closed before
.png)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, so it is not that the field is empty, is that the field does not even exist for the step of the loop you are in, therefore the variable is never populated, with neither 0 or anything else, because you are in step 3 while you only have 2 values, so in the step 3 of the loop, the field does not exist in that table (not that it is empty).
In this case you will need to do two loads: one loading everything you need to load, the second with the EXISTS() in the second load. Or remove the loop altogether (if possible), and use the EXISTS() function to know what you have to load instead of looping through each field.

- « Previous Replies
-
- 1
- 2
- Next Replies »