嘿所有,我能够通过SELECT CASE语句来做到这一点,但是我总是试图改进我的代码编写,并且想知道是否有更好的方法。这是场景:
每个文档上都有x个自定义字段。 有多少文件 然而,只有21个不同的自定义字段,但根据表单,它们显然可以有不同的组合。
所以这就是我所做的,我创建了一个名为CustomFields的对象,如下所示:
Private Class CustomFields
Public agentaddress As String
Public agentattorney As String
Public agentcity As String
Public agentname As String
Public agentnumber As String
Public agentstate As String
Public agentzip As String
... more fields here ....
End Class`
然后我继续将我从用户获得的值分配给每个字段,如下所示:
Set All of Our Custom Fields Accordingly
Dim pcc As New CustomFields()
pcc.agentaddress = agent.address1
pcc.agentattorney = cplinfo.attorneyname
pcc.agentcity = agent.city
pcc.agentname = agent.agencyName
pcc.agentnumber = agent.agentNumber
pcc.agentstate = agent.state
pcc.agentzip = agent.zip ....other values set to fields etc.
现在这个想法是基于文档的组合字段,我们需要分配与该自定义字段的值匹配的值。因此,如果表单只需要agentaddress和agentcity:
'Now Let's Loop Through the Custom Fields for This Document
For Each cf As vCustomField In cc
Dim customs As New tblCustomValue()
Select Case cf.fieldname
Case "agentaddress"
customs.customfieldid = cf.customfieldid
customs.icsid = cpl.icsID
customs.value = pcc.additionalinfo
Case "agentcity"
customs.customfieldid = cf.customfieldid
customs.icsid = cpl.icsID
customs.value = pcc.additionalinfo
End Select
_db.tblCustomValues.InsertOnSubmit(customs)
_db.SubmitChanges()
这样可行,但是我们将来最终可能会有100个字段,所以有一种方法以某种方式“EVAL”(是的,我知道在vb.net中不存在)cf.fieldname并找到它的相应值在CustomFields对象中?
尝试编写更高效的代码并在此处寻找一些头脑风暴。希望我的代码和描述有意义。如果它不让我知道,我会碰到我的头撞墙,再试一次。
答案 0 :(得分:1)
如果我正确地阅读了您的问题,那么当您不使用该字段时,您将尝试避免设置字段的值。如果是这样,我会建议你继续在这种情况下将字段设置为空。