【发布时间】:2012-09-13 17:25:14
【问题描述】:
我遇到了一个问题,即在 IDE 中关闭并重新打开文件会将我的数据集的参数 (tparam) 从整数更改为短整数。如果我将它们更改为整数,它似乎可以保存,但是一旦 lcosed 并重新打开它就会返回为 shortint。 有没有办法绕过 Delphi 将参数从 Integer 更改为 Shortint?
我在这里发现了一个类似的问题 http://www.delphigroups.info/2/1/284088.html
这似乎是一个错误,但是有一些时尚的解决方法吗? 升级的 Delphi 版本不是我现在可以做的。 (第二次编辑中概述的复制步骤)
编辑:
如果将值类型更改为整数,只需在表单上放置一个带有参数的 sql 语句,就会发生这种情况。保存并重新打开值类型然后是shortint。
再次编辑:
在 Delphi 7 中,创建新应用程序。在表单上放置一个 TQuery。将 SQL 脚本编辑为类似于 'select * from table where id = :idnumber.接下来编辑参数。选择 idnumber 并将 VALUE.TYPE 更改为 Integer。此时您可以保存文件并关闭。当您重新打开文件时。然后再次转到参数选择 idnumber 它将保持类型 ftInteger 但 value.type 将是 Shortint。这是我希望保留为整数的部分,但不幸的是正在转换为 shortint。
【问题讨论】:
-
底层数据库类型(Paradox、ADO等)和字段类型是什么?
-
TQuery必须连接到某处的数据库。如果它是一个实际的TQuery,它附加到某种 BDE 数据库(正如我所说,Paradox 或其他通过 BDELinks 的东西)。它可能与数据库驱动程序或底层数据库列数据类型有关,这就是为什么我问(并且会再次):底层数据库类型和字段类型是什么? (如果 DB 列是shortint,则无需将指向它的参数保存为integer,因为该列不能容纳超过shortint的值。) -
我还要再说一遍。没有与 TQuery 组件关联的数据库。您所要做的就是在表单上删除一个 tquery,添加一个带参数的 sql 语句,将参数 value.type 分配给整数并点击保存。当您重新打开表单时,它会改为显示“shortint”。没有与 tquery 关联的数据库,只是表单上的一个组件。
-
我刚刚尝试过:我创建了一个新的 D7 应用程序,在其上放置了一个
TQuery,单击对象检查器中的SQL按钮,输入SELECT ID FROM sometable WHERE ID = :id,然后关闭 SQL编辑窗口。将表单作为文本检查,我得到一个声明的参数 (ID),带有DataType = ftUnknown和ParamType = ptUnknown,两者都不是integer,因此不保存为integer。 -
如果您首先将参数更改为 value.type of Integer(它会自动将数据类型更改为 ftInteger)并保存它,然后关闭 form/pas 文件,然后重新打开,它现在将是 ftInteger value.type 的shortint。 (至少在我的环境中)。数据库最终会很重要,但无论哪种方式,问题都会发生,因为似乎是 Tquery 组件或 tdataset 或其他东西中的错误。这最终将在 Firebird 数据库上,但同样不需要该部分来创建问题。它似乎只发生在 tquery 组件本身。
标签: delphi