传输到 ClientDataset 时的字符串截断

2024-03-27

我正在使用 Firebird 2.1、DevArt 的 DBExpress 驱动程序和 Delphi 2010。我的一些用于 Delphi 2006 的报告停止工作并生成一条错误消息,指示发生了“算术异常、数字溢出或字符串截断”。我的代码此时发生了错误:

cds.Data := dsProvider.Data;

我发现我的SQL语句中导致错误的地方:

iif(ytd.hPayType <> -1,t.sCode, 'NET') sPayType

T.sCode 是一个 Varchar(10) 字段。我的结论是,查询将数据返回到 dsProvider,并且当 dsProvider.Data 传递到 cds.Data 时,cds 组件根据它收到的第一个值设置字段宽度。如果我将“iif”更改为 CASE 语句,我会收到相同的错误消息。我设法通过这样做解决了这个问题:

 CAST(iif(ytd.hPayType <> -1,t.sCode, 'NET') AS varchar(10)) sPayType

由于这曾经在没有 CAST 的 Delphi 2006 中工作,我假设新行为是由于 TClientDataset 的更新所致。如果能保持过去的、更宽容的行为就好了。有没有办法将 ClientDataset 配置为接受此操作而无需投诉,或者我是否需要告诉我的用户根据 iif 和 CASE 语句对字符串结果进行 CAST?


我在上一份工作中经常使用 firebird,当您已经在数据库中存储了一个大(长度)varchar 字段值并且您试图在 delphi 中“获取”字符串时,会发生此错误,请尝试更新中的值将 db 转换为较小(长度)的 varchar。我不确定是否适合您,但请尝试一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

传输到 ClientDataset 时的字符串截断 的相关文章

随机推荐

  • 如何对 Android 应用程序进行定时炸弹?

    大家好 有没有人有一个代码示例 说明如何对 Android 应用程序进行定时炸弹 使其在给定日期后无法运行 我想发布一个 测试版 应用程序进行测试 但希望确保它仅在该应用程序正式处于测试版时才能工作 我建议使用 Calendar 类并让您的
  • Android:从软键盘中删除 Enter 键

    在我的登录表单中 当用户单击 EditText 并按 Enter 键时 会插入一个新行 从而增加 EditText 的大小 下一刻 它返回到之前的位置 并在密码字段 这是下一个字段 中打印一个点 我想从软键盘上删除这个回车键 是否可以 Us
  • Android java.lang.ClassCastException:android.widget.LinearLayout 无法转换为 android.widget.TextView

    我试图打印在 listView 中单击的值 但随后出现以下异常 07 04 10 40 56 482 E AndroidRuntime 1356 FATAL EXCEPTION main 07 04 10 40 56 482 E Andro
  • Reactjs 状态未更新

    constructor props super props this state active false showSideBar false className componentDidMount if this props overla
  • 创建包含所有可能变体的产品数组

    我正在尝试生成一个包含产品所有变体的数组 可以有无限数量的属性和变化 提供的数组 Shirt Product Color Attribute Green Variation Red Blue Size Small Medium Large
  • 什么时候返回右值引用会导致未定义的行为?

    在 Stack Overflow 的回答中here https stackoverflow com a 9964002 1128289 Kerrek 发布了以下代码 Foo g Foo y return y error cannot bin
  • 如何从 JRuby 获取 Java 接口的类型正确的 ruby​​ 实现?

    我正在尝试从 Java 应用程序使用 JRuby 通过 JRuby 1 5 中包含的 JSR233 接口 来加载 Java 接口的 ruby 实现 我的示例实现如下所示 界面 package some package import java
  • SQL 中的连接顺序重要吗?

    不考虑性能 下面的查询 A 和 B 会得到相同的结果吗 C和D怎么样 Scenario 1 A left join select from a left join b on
  • 在skiasharp中加载字体

    如何在 Xamarin 表单的 skiasharp 中使用自定义字体 I tried paint Typeface SKTypeface FromFamilyName CoText Bd and paint Typeface SKTypef
  • 将嵌套列表转换为嵌套字典

    我有这个清单 list1 X1 2 X2 4 Y1 2 Y2 4 我想创建这个字典 dict1 X 1 2 2 4 Y 1 2 2 4 这样我就可以使用dict1 X 1 这输出 2 有人可以帮我吗 我尝试了多种方法但没有成功 您可以使用c
  • C#读取Arduino

    我正在尝试制作一个从 Arduino 读取传出信号的应用程序 但我无法使其在 C 中工作Windows 窗体 http en wikipedia org wiki Windows Forms 仅在控制台中 我的 C Windows 窗体代码
  • 将 url 重写为 url:端口号

    如何重写下一个 url 请求 http mydomain com virtualDirectory default aspx param1 2 param2 car to http mydomain com 8888 virtualDire
  • GraphQL 缺少名称

    刚刚使用 Node 和 C 学习 GraphQL 我正在尝试将 C 示例移植到 Node 因为这将是一个很好的学习练习 因为我不太了解 Node 或 graphql 我有两种类型 帐户和所有者 即帐户所有者 以下内容一切正常 即拥有帐户的字
  • 深层链接导致应用程序的多个实例打开

    这个问题已经在类似的帖子中解决过 但是 我的情况有点不同 我只有一项活动和多个片段 我没有深入链接到特定的片段 我正在启动我的一项活动 然后重定向到不同的片段 我遇到的问题是 当单击深层链接时 应用程序的多个实例正在打开 并且当阻止应用程序
  • 相交矩形的总面积

    用于确定两个相交且可以旋转离开坐标轴的矩形的总面积的算法是什么 以下是您需要做的大致内容 尽可能笼统地表达 但涵盖了所有可能性 计算出交集的类别 IE 相交区域有多少条边 它可以是 0 到 8 之间的任何值 找到交点的所有顶点 这将是矩形边
  • 在播放来自 UIImagePickerController 的视频之前,AVPlayer 不会播放视频

    我遇到了一个问题 我在这里没有看到类似的帖子 我有一个AVPlayerViewController它播放基于我的路径的视频Firebase 数据库 不是存储 该视频按照我想要的方式完美播放 但只有当我观看了在UIImagePickerCon
  • 有没有一种方便的方法将 std::pair 包装为新类型?

    我经常发现自己使用 std pair 将两个相关量的逻辑分组定义为函数参数 返回值 一些示例 行 列 标签 值等 很多时候我真的应该滚动我自己的类 而不是仅仅使用 std pair 当事情开始崩溃时 很容易看出 当代码中充斥着 make p
  • React-native-multiple-select:无法读取未定义的属性“getSelectedItemsExt”

    我正在构建一个应用程序并引用这个link https github com toystars react native multiple select我为我的应用程序实现了相同的代码 但出现错误 无法读取未定义的属性 getSelected
  • 更改 Windows 窗体中的组合框边框颜色

    在我的应用程序中 我添加了组合框 如下图所示 我已将组合框属性设置为 cmbDatefilter FlatStyle System Windows Forms FlatStyle Flat 现在我的问题是如何设置组合框的边框样式 使其看起来
  • 传输到 ClientDataset 时的字符串截断

    我正在使用 Firebird 2 1 DevArt 的 DBExpress 驱动程序和 Delphi 2010 我的一些用于 Delphi 2006 的报告停止工作并生成一条错误消息 指示发生了 算术异常 数字溢出或字符串截断 我的代码此时