Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何从数据库更新持久的TStringField.Size?_Database_Delphi_Firebird - Fatal编程技术网

Database 如何从数据库更新持久的TStringField.Size?

Database 如何从数据库更新持久的TStringField.Size?,database,delphi,firebird,Database,Delphi,Firebird,delphi项目包含许多带有持久字段的TIBDataSet子表。基础数据库表发生了更改,字符串字段大小也增加了 有没有办法自动更新字段大小,或者我必须手动检查和更新 对不起,我不清楚。我想在设计时改变尺寸。如果我再次删除并添加字段,它将被更新,但以前的修改将丢失 I通过一个允许调整特定字段长度的分布式应用程序成功地调整了持久字段。我将对不返回任何数据的可调整表执行大小检查查询,并捕获当前大小并存储它们。在打开实现查询(在您的例子中是TIBDataSet)之前,我将设置持久字段大小。一旦查询打开,

delphi项目包含许多带有持久字段的TIBDataSet子表。基础数据库表发生了更改,字符串字段大小也增加了

有没有办法自动更新字段大小,或者我必须手动检查和更新


对不起,我不清楚。我想在设计时改变尺寸。如果我再次删除并添加字段,它将被更新,但以前的修改将丢失

I通过一个允许调整特定字段长度的分布式应用程序成功地调整了持久字段。我将对不返回任何数据的可调整表执行大小检查查询,并捕获当前大小并存储它们。在打开实现查询(在您的例子中是TIBDataSet)之前,我将设置持久字段大小。一旦查询打开,您知道的大小就无法调整。

如果在数据库中添加或删除了这些列,您会怎么做?或者如果某个
varchar
列更改为
integer
列?这就是持久性字段的概念——在Delphi代码中一次性永久冻结它们的声明。有好的一面和坏的一面。是的,您可以从数据库中读取字段大小-但是IBX是否允许在打开事件之前在
中更改字段大小?我不知道。。。您最好完全删除持久性字段,并将它们作为
public
变量保留,您可以使用
FieldByName
打开后的
事件填充到真实对象。无论如何,DFM文件通常只是文本文件。因此,您可以制作一个程序来解析DFM文件,并将这些文件中的fieldsize属性与数据库中的实际字段匹配EHM。。。您为每个FB表制作了两个IBX表,只是不检查字段大小?好吧,可能也可以……实际上,我在数据库连接之后使用了一个查询组件来执行所有大小检查。每次应用程序启动只需一次,即可设置软长度变量。