I'm trying to consolidate all my reports on one table into a single script so that maintenance is simpler. In the following script the variables "query.filter" and "Query.order" are used twice, The first on a query works just fine, when I try to use same variable values on a report preview is fails with "Invalid report filter expression 'eval("icao_code")''".
here is the script:
dim dupl as p
dim input as p
dim save_iata as c
dim save_ati as c
dim save_base as c
dim save_other as c
dim save_place as c
dim save_country as c
dim save_area as C
dim save_faa as c
dim save_icao as c
dim i_field as c
dim save_country as c
dim t_field as c
dim q_field as c
tbl0 = table.open("dupl_entry", FILE_RW_EXCLUSIVE)
tbl0.zap(.t.)
tbl0.close()
t_field=ui_get_radio("Code",4,"ATI","FAA","IATA","ICAO","OTHER")
q_field=t_field-"_code"
save_field="save_"-t_field
p_index=chr(34)+ut(t_field)+chr(34)
i_field="input."+ut(q_field)
dupl=table.open("dupl_entry",FILE_RW_EXCLUSIVE)
input=table.open("bases")
input.index_primary_put(eval(p_index))
query.description=""
query.order = "eval(q_field)"
query.filter = "eval(q_field)"-"''"
indx=input.query_create()
input.fetch_first()
WHILE .not. input.fetch_eof()
IF eval(i_field) = eval(save_field) THEN
dupl.enter_begin()
dupl.iata_1 = input.iata_code
dupl.iata_2 = save_iata
dupl.icao_1 = input.icao_code
dupl.icao_2 = save_icao
dupl.ati_1 = input.Ati_code
dupl.ati_2 = save_ati
dupl.faa_1 = input.faa_code
dupl.faa_2 = save_faa
dupl.base_1 = input.base
dupl.base_2 = save_base
dupl.place_1 = input.place_name
dupl.place_2 = save_place
dupl.other_name_1 = input.other_name
dupl.other_name_2 = save_other
dupl.country_1 = input.country
dupl.country_2 = save_country
dupl.area_1 = input.area
dupl.area_2 = save_area
dupl.other_code_1 = input.other_code
dupl.Other_code_2 = save_other_code
dupl.enter_end(.t.)
ELSE
save_iata = input.iata_code
save_ati = input.ati_code
save_icao = input.icao_code
save_faa = input.faa_code
save_base = input.base
save_place = input.place_name
save_other = input.other_name
save_country = input.country
save_area = input.area
save_other_code = input.Other_code
END IF
input.fetch_next()
END WHILE
dupl.close()
:report.preview("duplicate codes report",query.filter,query.order)
done:
indx.drop()
input.close()
end
here is the script:
dim dupl as p
dim input as p
dim save_iata as c
dim save_ati as c
dim save_base as c
dim save_other as c
dim save_place as c
dim save_country as c
dim save_area as C
dim save_faa as c
dim save_icao as c
dim i_field as c
dim save_country as c
dim t_field as c
dim q_field as c
tbl0 = table.open("dupl_entry", FILE_RW_EXCLUSIVE)
tbl0.zap(.t.)
tbl0.close()
t_field=ui_get_radio("Code",4,"ATI","FAA","IATA","ICAO","OTHER")
q_field=t_field-"_code"
save_field="save_"-t_field
p_index=chr(34)+ut(t_field)+chr(34)
i_field="input."+ut(q_field)
dupl=table.open("dupl_entry",FILE_RW_EXCLUSIVE)
input=table.open("bases")
input.index_primary_put(eval(p_index))
query.description=""
query.order = "eval(q_field)"
query.filter = "eval(q_field)"-"''"
indx=input.query_create()
input.fetch_first()
WHILE .not. input.fetch_eof()
IF eval(i_field) = eval(save_field) THEN
dupl.enter_begin()
dupl.iata_1 = input.iata_code
dupl.iata_2 = save_iata
dupl.icao_1 = input.icao_code
dupl.icao_2 = save_icao
dupl.ati_1 = input.Ati_code
dupl.ati_2 = save_ati
dupl.faa_1 = input.faa_code
dupl.faa_2 = save_faa
dupl.base_1 = input.base
dupl.base_2 = save_base
dupl.place_1 = input.place_name
dupl.place_2 = save_place
dupl.other_name_1 = input.other_name
dupl.other_name_2 = save_other
dupl.country_1 = input.country
dupl.country_2 = save_country
dupl.area_1 = input.area
dupl.area_2 = save_area
dupl.other_code_1 = input.other_code
dupl.Other_code_2 = save_other_code
dupl.enter_end(.t.)
ELSE
save_iata = input.iata_code
save_ati = input.ati_code
save_icao = input.icao_code
save_faa = input.faa_code
save_base = input.base
save_place = input.place_name
save_other = input.other_name
save_country = input.country
save_area = input.area
save_other_code = input.Other_code
END IF
input.fetch_next()
END WHILE
dupl.close()
:report.preview("duplicate codes report",query.filter,query.order)
done:
indx.drop()
input.close()
end