Lagi

Debugging HitungField_management ERROR 000623: Jenis nilai tidak valid untuk bidang parameter?

Debugging HitungField_management ERROR 000623: Jenis nilai tidak valid untuk bidang parameter?


Saya mencoba memilih catatan di tabel saya yang memiliki kata-kata tertentu di bidang "Nama" dan kemudian mengkodekannya sebagai 0 (bukan apotek) atau 1 (apotek) Ini hanya tes mencari dua kata untuk memilih non-apotek.

Saya mendapatkan:

ExecuteError: ERROR 000622: Gagal mengeksekusi (Menghitung Bidang). Parameter tidak valid. GALAT 000623: Jenis nilai tidak valid untuk bidang parameter.

Saya tidak tahu variabel mana yang tidak valid. Ada pikiran? Saya juga tidak tahu apakah Bidang Hitung hanya akan berfungsi pada catatan yang dipilih. Saya tidak bisa cukup jauh untuk memeriksanya.

# impor modul sistem impor arcpy impor acak # setel lingkungan ruang kerja myWorkspace = arcpy.env.workspace = "C:/PharmacyProtocol/tables" arcpy.env.overwriteOutput = Benar # setel variabel out_table = "VT_TRL_DLC.dbf" # setel variabel bidang fieldList = arcpy.ListFields(out_table) untuk field di fieldList: if field.name == "Name": nameF = field elif field.name == "Pharmacy": pharmF = field #buat daftar kata yang BUKAN apotek noPharmWords = [ 'AMERICAN LEGION','BAR'] ekspresi = 0 #temukan kata di kolom Nama, kode Farmasi sebagai "0" jika belum dikodekan untuk codeWord di noPharmWords: #create SQL teks klausa fldName = '"Nama"' endClause = "% '" SQLstr = fldName + " LIKE '%" + codeWord + endClause #pilih catatan dari tabel dengan kursor codeWord = arcpy.da.SearchCursor(out_table, ["Name"], SQLstr) arcpy.CalculateField_management(out_table, pharmF, ekspresi) del kursor

Anda tampaknya menyalahgunakan kursor.arcpy.CalculateField_management()akan beroperasi pada seluruh tabel atau tampilan tabel yang diberikan, terlepas dari keberadaan objek kursor apa pun. Mungkin gagal karena Anda melewati lapangan obyek bukannya lapangan nama untuk itu.

Coba gunakan kursor pembaruan sebagai gantinya, ganti ini:

#pilih catatan dari tabel dengan kursor codeWord = arcpy.da.SearchCursor(out_table, ["Name"], SQLstr) arcpy.CalculateField_management(out_table, pharmF, ekspresi) del kursor

dengan ini:

#select record dari tabel dengan codeWord dengan arcpy.da.UpdateCursor(out_table, ["Name","Pharmacy"], SQLstr) sebagai kursor: untuk baris di kursor: baris[1] = ekspresi kursor.updateRow(baris)

Apakah bidang tersebut bertipe integer, Anda dapat mencoba ekspresi = int(0). Bidang hitung hanya akan berfungsi pada rekaman yang dipilih atau semua rekaman jika tidak ada yang dipilih. Akankah Hitung bidang 0 berfungsi dari tabel atribut untuk bidang itu?

Hanya opsi lain yang dapat saya sarankan adalah mengomentari fungsi CalcField dan mungkin melakukan hal lain yang membuktikan kursor berfungsi sebagaimana dimaksud.


Untuk menentukan mengapa Anda menerima kesalahan itu, saya sarankan untuk mengganti:

arcpy.CalculateField_management(out_table, pharmF, ekspresi)

dengan:

print out_table print pharmF ekspresi cetak arcpy.CalculateField_management(out_table, pharmF, ekspresi)

Saya menduga bahwa Anda tidak menyediakan HitungField_management dengan nilai parameter yang Anda pikirkan.


Tonton videonya: Problem Set Kalkulus - Representasi Parametrik dari Kurva di Bidang