Powerbuilder 在DW ImportClipboard和验证之间操作数据

Powerbuilder 在DW ImportClipboard和验证之间操作数据,powerbuilder,datawindow,Powerbuilder,Datawindow,我有一个数据窗口,我希望能够使用从excel文档复制/粘贴来填充该窗口。 它当前导入除日期字段之外的所有我想要的内容。 当前,用户手动输入excel文件中的所有内容,包括MM/YYYY日期,当用户单击“保存”时,系统会添加“日期”组件,以便将其作为日期字段传递到oracle数据库 执行复制/粘贴后,日期字段来自excel文件,格式为MM/YYYY(例如11/2013),执行粘贴后,PowerBuilder会立即弹出数据验证错误消息(项目“11/2013”未通过验证测试) 如果我继续导入,所有其他

我有一个数据窗口,我希望能够使用从excel文档复制/粘贴来填充该窗口。 它当前导入除日期字段之外的所有我想要的内容。 当前,用户手动输入excel文件中的所有内容,包括MM/YYYY日期,当用户单击“保存”时,系统会添加“日期”组件,以便将其作为日期字段传递到oracle数据库

执行复制/粘贴后,日期字段来自excel文件,格式为MM/YYYY(例如11/2013),执行粘贴后,PowerBuilder会立即弹出数据验证错误消息(项目“11/2013”未通过验证测试)

如果我继续导入,所有其他数据都正确粘贴,如果我手动将Excel中的日期更改为2013年11月1日,则所有内容都正确粘贴,包括日期。 excel文档受第三方保护,日期格式不能更改为包含日期组件

我正在使用
dw.ImportClipboard()
方法从剪贴板获取数据,并将其分配给正确的dw列。 代码段:

    If Clipboard() <> "" Then
            If tab_detail.tabpage_adjustment.dw_adjustment.ImportClipboard(1, li_rows, 1, 7, 3) <= 0 Then
                MessageBox("Invalid Data", "Unable to paste!", StopSign!)
                Return -1
            End If 
... process data further
两个消息框都不显示,但当我删除导入剪贴板时,消息框会正常显示。我无法确定他们为什么不工作

当我换行时:

ids_Adjustment.DataObject = "tab_detail.tabpage_adjustment.dw_adjustment"

(这是DW对象的名称)

MessageBox返回错误代码-4,根据文档,这意味着输入无效。我正在复制/粘贴我一直拥有的相同的行和数据,因此不确定它为什么要这样做

EDIT2/解决方案:

正如建议的那样,我创建了一个新的DataWindow对象(richtext),选择一个外部数据源并在中添加列,这次将所需的日期字段设置为字符串。 然后,我创建了一个如上所述的数据存储,引用新的dataobject并在其上执行importClipboard。 然后,我继续向日期字符串添加一个day组件:

ids_Adjustment.SetItem(li_idx, 'adjustment_period', String("01/"+ids_Adjustment.GetItemString(li_idx, 'adjustment_period')))
然后使DataWindow对象等于数据存储的值

tab_detail.tabpage_adjustment.dw_adjustment.Object.adjustment_period [li_idx] = date(ids_Adjustment.GetItemString(li_idx, 'adjustment_period'))

感谢您的输入和想法。

您可以将数据粘贴到数据存储中,并将日期字段作为字符串,固定日期格式,然后将行移动到数据窗口。

嗨,卡尔文,数据存储听起来像是我想要的。。然而,我有困难让它工作。我已经更新了原始帖子以反映结果Calvin建议的一个关键点是确保您使用的数据对象不是相同的数据对象,而是具有字符串列的数据对象,其中的日期列应该是。然后,您可以使用字符串操作将字符串调整为兼容的日期格式,从数据存储中提取数据并将其导入数据窗口。您得到的结果表明您仍在尝试导入到日期字段中。好的,不用担心。。我将创建一个新的
数据对象
,引用该对象并返回结果,谢谢。
ids_Adjustment.SetItem(li_idx, 'adjustment_period', String("01/"+ids_Adjustment.GetItemString(li_idx, 'adjustment_period')))
tab_detail.tabpage_adjustment.dw_adjustment.Object.adjustment_period [li_idx] = date(ids_Adjustment.GetItemString(li_idx, 'adjustment_period'))