1

Konu: Fields as variables

Field'leri variable olarak nasil kullanirim.

Diyelimki Dummy isimli tablomda d01, d02, d03, ... isminde n tane numerik field var. Ben bu field'lerde belirli kurallara gore replace islemi yapmak istiyorum. Mesela, Dummy.d01 isimli field'imi scan .. endscan ile tarayip field deki degerleri belirli kurallara gore replace ediyorum:

scan
lnDeger = Dummy.d01
Do Case
    Case m.lnDeger == 0
        lnYeniDeger = Null
    Case m.lnDeger == 1
        lnYeniDeger = 0
    Case m.lnDeger == 2
        lnYeniDeger = 22.5
        Case m.lnDeger == 3
        lnYeniDeger = 45
endcase
Replace d01 With m.lnYeniDeger
endscan


Dummy.d02, Dummy.d03, Dummy.d04, ... fieldlerinide yukaridaki isleme tabi tutmak istiyorum. Bunun icin yukaridaki kodda lnDeger variable'ina sirasi ile Dummy.d02, Dummy.d03, .. fieldlerini
gondermem lazim. Bunu nasil yaparim.

2

Re: Fields as variables

Erdal naber:)

Eger kesin olarak d01, d02 ... 0-3 ise ve hep ayni sey olacaksa:

Visual Fox Pro
local array aValues[4]

aValues[1] = null
aValues[2] = 0
aValues[3] = 22.5
aValues[4] = 45
 
replace d01 with aValues[d01-1], d02 with aValues[d02-1], ...

Seninki gibi:

Visual Fox Pro
scan

Replace ;
d01 With YeniDeger(d01), ;
d02 With YeniDeger(d02), ;
d03 With YeniDeger(d03), ;
* ...
dN With YeniDeger(dN)
endscan
 
function YeniDeger(m.tnDeger)
  local lnYeniDeger
  Do Case
       Case m.tnDeger == 0
               lnYeniDeger = Null
       Case m.tnDeger == 1
               lnYeniDeger = 0
       Case m.tnDeger == 2
              lnYeniDeger = 22.5
       Case m.tnDeger == 3
              lnYeniDeger = 45
       Otherwise
              lnYeniDeger = m.tnDeger
  endcase
  return m.lnYeniDeger
endfunc

3

Re: Fields as variables

Cok sagol Cetin Abi.