Değişken Tablo ve Kolon İsimleri Kullanma

MapBasic programlarında bir kayda ait bir değeri alırken çoğu zaman

TabloAdı.KolonAdı

yapısını kullanırız. Örneğin USA tablosunda

Fetch First from USA
Print USA.State_Name

kodu bize USA tablosuna ait ilk kaydın State_Name değerini verir. Buraya kadar problem yok. Ama bazı durumlarda tablo adı programın çalışma zamanında önceden belli olmayabilir ve bu yüzden tablo adını bir değişken olarak tanımlamak zorunda kalabiliriz. Böyle bir durumda ilk olarak aşağıdaki gibi bir kod yazmak aklımıza gelebilir:

dim TabName, ColName as string
TabName="USA"
ColName="State_Name"
Open Table "USA.TAB" Interactive
Fetch First From TabName
do while EOT(TabName)=0
  print TabName.ColName
  Fetch Next From TabName
loop

İlk bakışta bu kodda problem yok gibi görünebilir. Ama kodu derlediğimizde 7. satırda Unrecognized command: .. hatası verilir. Buradaki problem

print TabName.ColName

satırında bir syntax hatası olmasıdır. Hatanın sebebi ise bir değişken adından (TabName) hemen sonra nokta (.) kullanılması ve MapBasic derleyicisinin burada doğal olarak ne yapacağını bilememesidir. İşte bu tür durumlarda alias veri tipleri devreye girer. Yani string değişkenler içeren kolon referansları oluştururken alias tipini kullanmamız gerekir. Aşağıdaki kod yukarıdaki hatalı kodu düzelterek alias tiplerinin nasıl kullanıldığını gösteriyor:

dim TabName, ColName as string
dim ColAlias as Alias
TabName="USA"
ColName="State_Name"
ColAlias=TabName & "." & ColName
Open Table "USA.TAB" Interactive
Fetch First From TabName
do while EOT(TabName)=0
  print ColAlias
  Fetch Next From TabName
loop
Advertisements
  1. Anonymous
    16/04/2015 at 10:25

    Güzel paylaşım olmuş. Teşekkürler

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: