Bu iki aşamalı bir işlemdir ve sonuç olarak Alan Hesaplayıcı buna çok uygun değildir. Bunu bağımsız bir komut dosyasında çalıştırmak daha iyidir. Ancak, bir hile kullanmanız koşuluyla, alan hesaplayıcısında yapılabilir. Sıralı listeden tüm değerleri genel bir sözlüğe yüklemek için bir imleç kullanmanız gerekir, ancak yalnızca ilk kaydın hesaplanması sırasında. Diğer tüm kayıtlar için, her satır için tüm tabloyu sürekli olarak yeniden okumayı önlemek amacıyla sözlük oluşturma işlemini atlamanız gerekir.
Düzgün sıralanacak bir anahtar işlevi görmek için üç alan değerinin bir demet içine yerleştirilmesi gerekir. Tüm 3 alan birleşimi değerlerinin SamplePoint tablosunda benzersiz olduğunu varsayacağım, ancak benzersiz olduğundan emin olmak için ObjectID'yi ekledim. 8. satırda yol ve şekil dosyası adını sağlamanız gerekir (ya da FelixIP'in geçerli haritadaki ilk katmanın kullanıldığı yerde kullandığı tekniği kullanabilirim). Bir anahtar için farklı alanlar kullanmak isterseniz, satır 10'daki alan listesini değiştirmeniz ve bunları satır 3 ve satır 15'teki giriş alanlarıyla eşleştirmeniz gerekir.
#Pre-logic Script Code:
relateDict = {}
def autoIncrement(myYear, myMonth, myDay, OID):
global relateDict
# only populate the dictionary if it has no keys
if len(relateDict) == 0:
# Provide the path to the relate feature class/table
relateFC = r"C:\Users\OWNER\Documents\ArcGIS\SamplePoints.shp"
# create a field list with the relate fields in sort order
relateFieldsList = ["Year", "Month", "Day", "OID@"]
# process a da search cursor to transfer the data to the dictionary
relateList = sorted([(r[0:]) for r in arcpy.da.SearchCursor(relateFC, relateFieldsList)])
for relateSort in range(0, len(relateList)):
relateDict[relateList[relateSort]] = relateSort + 1
return relateDict[(myYear,myMonth,myDay,OID)]
#Expression:
autoIncrement(!Year!, !Month!, !Day!, !OBJECTID!)
Yıl, Ay ve Gün alan adlarının kullanılmasını da tavsiye etmem, çünkü bunlar yalnızca şekil dosyalarında çalışır ve coğrafi veri tabanlarında izin verilmez. Bir coğrafi veritabanı, tablonun özelliklerindeki alan listesine eklemeye çalışırsanız, adları Yıl_1, Ay_1, Gün_1 olarak değiştirir.
Bu tablonun amacı, onu çok alanlı bir anahtardaki başka bir tablo / özellik sınıfıyla ilişkilendirmekse, Blogumda oluşturduğum aracı Birden Çok Alan Anahtarına Tek Alan Anahtar Aracıyla İlişkilendirme - Birden Fazla Tabaka Dayalı İki Katmanı İlişkilendirme Alan