目前,我们正在使用 InventoryItem.InventoryCD 字段的完整 30 个字符,但我们需要更多。我们怎样才能将此字段长度增加到 45 个字符?
2 回答
这可以通过创建包含数据库脚本的定制项目轻松完成。本指南将专门针对 InventoryItem.InventoryCD,但该想法可以应用于任何领域。有关详细信息,请参阅末尾的注释部分。
对于 InventoryCD,您需要遵循以下 3 个步骤。
1.定制项目中的数据库脚本
导航到自定义项目屏幕 (SM204505) 并创建一个新的自定义项目。转到 DB Scripts 部分,单击Add并选择Script。
复制与您的数据库匹配的脚本,然后单击 OK :
SQL服务器
DROP INDEX [Inventory_InventoryCD] ON [InventoryItem]
ALTER TABLE InventoryItem ALTER COLUMN InventoryCD nvarchar(45) NOT NULL
CREATE UNIQUE NONCLUSTERED INDEX [Inventory_InventoryCD] ON [dbo].[InventoryItem]
(
[CompanyID] ASC,
[InventoryCD] ASC
)
MySQL
ALTER TABLE InventoryItem
DROP INDEX Inventory_InventoryCD;
ALTER TABLE InventoryItem CHANGE InventoryCD InventoryCD NVARCHAR(45) NOT NULL;
CREATE UNIQUE INDEX Inventory_InventoryCD
ON InventoryItem (CompanyID, InventoryCD);
这些脚本仅更改我们需要的列,但为此,我们删除现有索引并在最后重新创建它。您可以手动运行这些命令以在将它们添加到您的自定义之前对其进行测试。
2.发布项目并重启应用
我们拥有这个定制项目所需的一切。通过转到Publish菜单并单击Publish with Cleanup来发布它。成功发布后,导航到系统 > 管理 > 流程 > 应用更新屏幕 (SM203510)。我们将重新启动应用程序,它将重新启动整个网站。确保在执行之前通知所有用户保存他们的工作!准备好后,单击重新启动应用程序。
此步骤将确保框架丢弃以前的数据库模式并将最新的模式加载到内存中。
3.改变段长
最后一步是修改INVENTORY段以允许我们的 InventoryCD 上更长的长度。导航到配置> 通用设置 > 分段键 > 分段键屏幕 (CS202000)并选择库存作为分段键 ID。将新长度应用于网格中的段并保存。您现在可以进行测试了!
笔记
如果要修改 Acumatica 中的任何现成字段,则必须根据该字段调整第 3 步。
3a。备用 DAC 修改
在此步骤中,您需要确保 DAC 字段类型属性与新列长度匹配。例如,DAC 字符串字段可能已从
[PXDBString(30, IsUnicode = true)]
到
[PXDBString(45, IsUnicode = true)]
您可以在此链接中找到有关 DAC 字段属性修改的更多信息:
https://help.acumatica.com/(W(11))/Wiki/ShowWiki.aspx?pageid=1911428f-d4ca-4207-9396-a744db21cdfb
请注意,在升级过程中增加字段长度可能会损坏数据,因为用于升级过程的数据库模式是在 %AcumaticaPath%/Database/database_schema.xml 中定义的,为了顺利升级,不要忘记修改 database_schema.xml:
<col name="InventoryCD" type="NVarChar(30)" />
到
<col name="InventoryCD" type="NVarChar(45)" />
否则,您可能会收到“字符串将被截断”错误,然后是数据损坏。