我有一个DataWindow,我希望能够使用excel文档中的复制/粘贴来填充。 它目前导入我想要的所有内容,除了日期字段。 目前,用户手动输入包含MM / YYYY日期的excel文件中的所有内容,当他们单击“保存”时,系统会添加日期组件,以便将其作为日期字段传递给oracle数据库。
执行复制/粘贴日期字段来自于MM / YYYY格式(例如二千零十三分之十一)和PowerBuilder与数据验证错误消息(项目弹出的Excel文件后'11 / 2013' 未通过验证测试)一旦粘贴完成。
如果我继续导入所有其他数据都已正确粘贴,如果我手动将Excel中的日期更改为01/11/2013,则所有内容都会正确粘贴,包括日期。 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
有没有办法可以截取ImportClipboard()
函数和自动验证之间的数据,以便在日期字段的前面添加DD/
,以便通过验证?也许在上面代码的过程数据的进一步部分。
或者有更好的方法吗?
感谢。
我正在使用最初在PB8中开发的PowerBuilder Classic 12.5。
编辑: <击> 建议使用数据存储,并对其进行调查。这似乎是我所追求的。但是我无法让它为我工作。
这就是我所做的:
datastore ids_Adjustment
ids_Adjustment = CREATE DATASTORE
ids_Adjustment.DataObject = "tab_detail.tabpage_adjustment.dw_adjustment"
ids_Adjustment.SetTransObject( SQLCA )
li_test = ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3)
messagebox("test", "Here: "+String(li_test))
If ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3) <= 0 Then
MessageBox("Invalid Data", "Unable to paste the return Adjustment! "+String(ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3)), StopSign!)
Return -1
End If
不会出现任何消息框,但是当我删除导入剪贴板时,消息框会正常显示。我无法确定他们为什么不工作..
当我换行时:
ids_Adjustment.DataObject = "tab_detail.tabpage_adjustment.dw_adjustment"
到
ids_Adjustment.DataObject = "d_agentreturn_detail_adjustment"
(这是DW对象的名称)
消息框返回错误代码-4,根据文档表示无效输入。我复制/粘贴我一直拥有的相同行和数据,因此不确定为什么会这样做。
EDIT2 /解决方案:
根据建议,我创建了一个新的DataWindow对象(richtext),选择外部数据源并添加列,这次使所需的日期字段成为字符串。 然后我创建了一个DataStore,如上所述引用新数据对象并在其上执行importClipboard。 然后我继续在日期字符串中添加日期组件:
ids_Adjustment.SetItem(li_idx, 'adjustment_period', String("01/"+ids_Adjustment.GetItemString(li_idx, 'adjustment_period')))
然后使DataWindow对象等于DataStore值。
tab_detail.tabpage_adjustment.dw_adjustment.Object.adjustment_period [li_idx] = date(ids_Adjustment.GetItemString(li_idx, 'adjustment_period'))
感谢您的意见和建议。
答案 0 :(得分:1)
您可以将数据粘贴到数据存储中,并将日期字段作为字符串,修复日期格式,然后将行移动到数据窗口中。