ป้ายกำกับนิพจน์เพื่อแทนที่ค่า Null ด้วยข้อความที่ไม่ได้อยู่ในคลาสคุณลักษณะ


9

ฉันจำเป็นต้องติดป้าย hydrants (คะแนน) - บางส่วนของเหล่านี้เป็นของเพลิงและมีจำนวนที่กำหนดให้พวกเขาบางคนไม่ได้และดังนั้นจึงไม่มีหมายเลข ฉันต้องการเขียนนิพจน์ตามบรรทัดของ:

'Hydrant ป้ายกำกับที่มีหมายเลขถ้ามีอยู่หากก๊อกน้ำมีป้ายกำกับค่า Null ด้วย' WO '

ฉันแค่คิดออกไม่ได้

วิธีที่ง่ายที่สุดสำหรับฉันในการทำเช่นนี้คือการเปลี่ยนค่า NULL เป็น WO แต่ข้อมูลไม่ใช่ของฉันและฉันไม่ต้องการทำการเปลี่ยนแปลง ฉันคิดว่าฉันสามารถทำสำเนาและใส่ค่าลงในสำเนาได้ แต่ฉันก็อยากได้นิพจน์

ขอบคุณ!


ขอบคุณคิดว่าฉันยังขาดสิ่งนี้คือสิ่งที่ฉันกำลังทำอยู่: 1.ทำเครื่องหมายที่ป้ายกำกับในเลเยอร์2.เลือก 'กำหนดคลาสของคุณลักษณะและทำเลเบลแต่ละคลาสแตกต่างกัน3.เพิ่มเลเบลหมายเลขคลาส4.เพิ่มเลเบลคลาส WO 5 . tick 'คุณสมบัติป้ายกำกับในคลาสนี้' สำหรับแต่ละ <br/> 6. ภายใต้ 'หมายเลข' คลิกการใช้คิวรี่ SQL ("SYMBOLCODE" = 3) และ ("FIREAUTHOR" <> "") 7.ฟิลด์ป้ายกำกับถูกตั้งค่าเป็น FIREAUTHOR 8.สำหรับ WO SQL คือ ("SYMBOLCODE" = 3) และ ("FIREAUTHOR" = "") 9.นิพจน์คือ "WO" 10. รับข้อผิดพลาด 'ไม่พบคุณลักษณะ
jorp

คำตอบ:


9

คุณสามารถใช้สคริปต์แบบนี้เพื่อติดป้ายกำกับคุณสมบัติด้วยค่า Null

Function FindLabel ( [yourfield] )
  if isnull( [yourfield]) then
    FindLabel = "WO"
  else
    FindLabel = [yourfield]
  end if
End Function

1
เป็นเรื่องดีที่ได้พบคุณใน gis.se คำตอบของคุณในฟอรัม ESRI ได้ช่วยผู้คนมากมายรวมถึงฉันด้วย
Devdatta Tengshe

ขอบคุณ - สคริปต์นี้เรียบร้อยดี แต่ค่า Null ไม่ถูกระบุว่าเป็น WO
jorp

1
คุณทำงานกับค่าที่แสดงเป็น <Null> หรือเป็นช่องว่างในตารางแอตทริบิวต์หรือไม่
kenbuja

3

นี่คือสิ่งที่คุณสามารถทำได้

  1. ตั้งค่าคลาสการทำฉลากสองคลาสภายใต้แท็บการติดฉลากภายใต้วิธีการ: กำหนดส่วนของคุณสมบัติและทำป้ายแต่ละชั้นให้แตกต่างกัน
  2. สร้างคลาส hydrant ที่มีตัวเลขและที่ไม่มี (เช่น Number, & WO)
  3. สำหรับคลาสตัวเลขให้นิยาม SQL Query เป็น "MyLabelField" <> ""
  4. ชี้คลาสตัวเลขไปยังฟิลด์เลเบลที่ถูกต้อง
  5. สำหรับคลาส WO กำหนด SQL Query เป็น "MyLabelField" = ""
  6. สำหรับคลาส WO ภายใต้ประเภทตัวเลือกนิพจน์ "WO"
  7. เปิดการติดฉลาก

2

เพิ่มเติมจาก @kenbuja sript ซึ่งเป็นคำตอบที่ถูกต้อง; หากคุณมีการรวมกันของโมฆะและ 0 ความยาวสตริงหรือช่องว่างที่ไม่มีตัวอักษรคุณสามารถทำสิ่งนี้:

Function FindLabel ( [LABELFIELD] )
  if  isnull([LABELFIELD]) then
    FindLabel = "WO"
  elseif trim([LABELFIELD]) = "" then
    FindLabel = "WO"
  else
    FindLabel = ucase([LABELFIELD])
  end if
End Function
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.