【问题标题】:Delphi TADOQuery: Format data before SavetoFileDelphi TADOQuery:在SavetoFile之前格式化数据
【发布时间】:2015-06-04 03:59:24
【问题描述】:

我有一个应用程序,它允许用户使用 TADOQuery 组件在远程数据库上运行查询。然后使用 TADOQuery 的 SaveToFile 方法将查询结果保存到 XML 文件中。

我最近遇到了一个问题,如果其中一个字段中存在换行符(十六进制“0A”),则该字段中的数据将被截断(即它仅部分保存到文件中)。字段中的空字符会导致类似的问题。

我需要做的是在调用 SaveToFile 方法之前扫描有问题的字段,并将任何“问题”字符替换为其他字符(例如空格)。虽然我不允许更新数据库中的数据,所以我不能将任何更改推送回数据库(这意味着 TADOQuery 不能处于编辑模式)。

有什么方法可以实现这一点(即在运行 SELECT 之后但在调用 SaveToFile 之前编辑字段而不更改数据库中的数据)?我有一个解决方法,但它相当冗长且效率低下,但它允许我在不接触服务器上的数据的情况下编辑 XML 文档(基本上,读取问题字段,进行更改并存储更新版本的临时文件中的字段,调用 SaveToFile,然后用更新的版本替换 XML 文档中的字段)。这是我最好的选择,还是有更好的方法?

【问题讨论】:

    标签: delphi tadoquery


    【解决方案1】:

    TCustomADODataSet.SaveToFile 方法在内部调用RecordSet.Save 方法,该方法不允许对数据存储方式进行任何自定义。无论如何,您可以将您的 TAdoQuery 连接到提供 SaveToFile 方法的TClientDataset,另一种选择是编写您自己的方法将数据保存到 XML 文件。

    【讨论】:

    • 我认为可能是这种情况 - 感谢您的确认。我在编写自己的方法时犯了错误,所以我想我会这样做。
    • 您还可以:1) 修改您的查询,以便在数据集中获得正确的结果,2) 在调用 savetofile 方法之前修改数据集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多