我有一个问题,在IDE中关闭和重新打开文件会将我的数据集的参数(tparam)从整数更改为shortint.如果我将它们更改为整数它似乎保存,但一旦lcosed并重新打开它返回shortint. 有没有办法绕过Delphi将参数从Integer更改为Shortint?
我在http://www.delphigroups.info/2/1/284088.html找到了类似的问题
它似乎是一个错误,但有一些时尚的解决方法?升级的Delphi版本不是我现在可以做的事情.(第二次编辑中概述的复制步骤)
编辑:
如果将值类型更改为整数,只需在表单上放置一个带有参数的sql语句的TQUERY就会发生这种情况.保存并重新打开值类型然后是shortint.
再次编辑:
在Delphi 7中,创建新的应用程序.在表单上删除TQUery.将SQL脚本编辑为'select*from table where id =:idnumber.然后编辑参数.选择idnumber并将VALUE.TYPE更改为Integer.此时,您可以保存文件并关闭.当您重新打开该文件.并再次选择params选择idnumber它将保持类型ftInteger,但value.type将是Shortint.这是我希望保持整数的部分,但遗憾的是它被转换为shortint.
我可以解释你所看到的行为,这不是一个错误.(你的问题是误导性的,顺便说一下.你的实际问题,基于编辑和评论,是"Delphi 7将Parameter.Value.Type从整数改为shortint",这根本不是一回事.)
你检查Value.Type的Param.Value,这是不存储在.dfm文件中.Value.Type当表单从dfm和Value读取时,或者Value在运行时设置时,可以设置.
我可以通过完全按照您的步骤来证明这一点:
在新的空白表单上删除TQuery.添加一些SQL到TQuery.SQL.我用过SELECT Id FROM SomeTable WHERE Id = :id.
点击...的TQuery.Params,然后id在当参数Parameter Editor对话框出现.单击ValueObject Inspector中的,然后将其更改Value.Type为Integer.
保存项目和表单,然后关闭它们.重新打开项目,右键单击表单,然后View as Text从上下文菜单中选择.您将看到该Query1组件的以下内容:
object Query1: TQuery
SQL.Strings = (
'select id from sometable where id = :id')
Left = 152
Top = 80
ParamData = <
item
DataType = ftInteger
Name = 'id'
ParamType = ptInput
Value = 0
end>
end
Run Code Online (Sandbox Code Playgroud)
注意,在ParamData,没有Value.Type; 这是因为它在Value读取时设置,而不是在保存表单时存储.
现在再次右键单击,然后选择View as Form.返回Query1.Parameters,编辑Value,并将其设置为高数字(我使用过123456789).
保存表单,然后View as Text再次.注意Query1信息:
object Query1: TQuery
SQL.Strings = (
'select id from sometable where id = :id')
Left = 152
Top = 80
ParamData = <
item
DataType = ftInteger
Name = 'id'
ParamType = ptInput
Value = '123456789'
end>
end
Run Code Online (Sandbox Code Playgroud)
请注意,仍然没有存储Value.Type.检查对象检查器ValueType,它现在说String,即使Parameter.DataType仍然是ftInteger.这是由IDE的流媒体机制查看引号并相应设置引起的Value.Type.
同样,它对您正在运行的应用程序没有影响.将Value.Type在IDE不要紧.
有意思的是:看到后Value.Type如String上述,如果您再次查看形式为文本,删除'字符周围的Value财产,并且View as Form,再检查Value.Type再参数,就成了Integer.这进一步表明它是在流式传输过程中设置的,并且在设计时没有任何意义.
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |