这是交易,我有一个带有Time(7)字段的SQL数据库,当我在VS项目中与CR连接时,CR将我的Time数据库列检测为String ...或者它让我相信。我可以从数据库导入我的所有数据但是当我尝试使用CR公式格式化报告中的字段时,我得到 “已经给这个函数提供了很多参数”
我已经阅读了很多并且绑定了许多公式,仍然无法纠正这个问题,我目前的公式代码(看起来很简单)是:
totext({Checkin_CheckoutT.Checkin_time},“hh:mm”)
我尝试了另一个似乎正确的代码:
Totext(CTime({Checkin_CheckoutT.Checkin_time}),“hh:mm”)
但是当我刷新我的报告时,我得到了 “糟糕的时间格式字符串” 。 我一整天都在看这个但仍然没有解决方案......请帮忙!
当前软件: SQL管理器2012, VS 2012, Sap CR 13.0.5
答案 0 :(得分:1)
如果Crystal正在将其作为字符串字段读取,并且您不想使用SQL代码来转换它,这应该可行。我很确定我记得SQL time(7)字段是hh:mm:ss.ms
time(tonumber(split({yourtime7string},":")[1]),tonumber(split({yourtime7string},":")[2]),0)
从右边点击,格式化字段并告诉Crystal你想要它的外观。
如果你必须在公式
中格式化它totext(time(tonumber(split({yourtime7string},":")[1]),tonumber(split({yourtime7string},":")[2]),0),"HH:mm")
答案 1 :(得分:1)
时间(7)只是一个非常精确的时间字段,但Crystal(或至少使用的版本)是在Time(7)存在之前构建的,所以它不知道如何处理它。结果是hh:mm:ss.nnnnnnn
格式的时间字符串。如果你需要的只是字符串中的小时和分钟,那么使用Left({Checkin_CheckoutT.Checkin_time}, 5)
拉出前5个字符(这将是hh:mm
部分)。
如果需要,您也可以将其翻回Crystal时间:CTime(Left({Checkin_CheckoutT.Checkin_time}, 5))