我正在使用Universe U2.net工具包来更新Universe数据库中的记录。到目前为止,我们还没有使用以下代码更新到非多值字段的问题
Open_Again:
Try
db_connectionU2 = openConnU2()
db_connectionU2.Open()
Catch ex As Exception
GoTo Open_Again
End Try
Dim cmdWIP As New U2Command
'cmdWIP = New U2Command("DELETE FROM MPS", db_connectionU2)
cmdWIP = New U2Command("UPDATE POH SET EPOS=@FLAG where PONO='C11447'", db_connectionU2)
cmdWIP = New U2Command("UPDATE CURCVRD F8=@F8 where F0='51747*1'", db_connectionU2)
cmdWIP.Parameters.Add(New U2Parameter("@F8", U2Type.VarChar)).Value = "t"
cmdWIP.Connection = db_connectionU2
cmdWIP.ExecuteNonQuery()
cmdWIP.Dispose()
cmdWIP = Nothing
db_connectionU2.Close()
db_connectionU2.Dispose()
db_connectionU2 = Nothing
但是当我们尝试添加到多值字段时它有问题。它会返回错误"从单个更改为多个列是非法的。请参阅红色框以获取消息以及我们正在编写的值。
请点击下方查看截图
谢谢
答案 0 :(得分:1)
您需要查看该文件的DICT,并确保您的条目已标记为MultiValued且具有多值关联。
以下是HS.SALES模拟账户的示例。
>LIST DICT CUSTOMER
DICT CUSTOMER 03:56:47pm 01 Dec 2016 Page 1
Type &
Field......... Field. Field........ Conversion.. Column......... Output Depth &
Name.......... Number Definition... Code........ Heading........ Format Assoc..
CUSTID D 0 P(0N) Customer ID 10R S
@ID D 0 CUSTOMER 10L S
SAL D 1 Salutation 5T S
FNAME D 2 First Name 12T S
LNAME D 3 Last Name 16T S
COMPANY D 4 Company Name 20T S
ADDR1 D 5 Address line 1 30T S
ADDR2 D 6 Address line 2 30T S
CITY D 7 City 12T S
STATE D 8 P(2A) State 2L S
MCU
ZIP D 9 P(5N) Zip 5L S
PHONE D 10 P("("3N")"3N Telephone 13R S
-4N)
PRODID D 11 P(1A4N) Product 5L M ORDER
S
SER_NUM D 12 P(6N) Serial# 6L M ORDER
S
注意PRODID之后是否有“M ORDERS”(由于我的终端的80个字符大小,它会下降到下一行。这告诉Universe它是一个带有名为ORDERS的Association的多值字段。这允许SQL翻译知道如何更新事物。
它变得有点复杂,我建议查找HS.ADMIN,特别是HS.SCRIB,以获取有关非挑选样式消费的格式化提示。有关详细信息,请查看UVodbc指南。