问题标签 [uib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
20122 浏览

delphi - Firebird 错误消息“由于系统错误导致无法成功执行后续语句”

我的应用程序在访问 Firebird 数据库时有时会产生这种错误:

由于系统错误导致无法成功执行后续语句 GDS 代码:335544726 - SQL 代码:-902 - 错误代码:406'

可能是什么问题呢?有没有办法调试这个?

我在 Windows 7 上运行 Firebird 2.5.1。至少有带有 Python 的 kinterbasdb 和使用 Delphi 的 UIB 组件。

0 投票
0 回答
699 浏览

character-encoding - 停止 Firebird 修改基于 Windows 字符集的字符串

我有一个使用 1.5.5 Firebird 嵌入式引擎的应用程序(用 Delphi 编写)。我正在使用这个引擎,因为该应用程序适用于当前部署的 Firebird 数据库,并且较新的嵌入式引擎无法正确打开数据库文件(ODS 10.1)。数据库中的所有字符串都定义为 VARCHAR(N),其中 N 不同。该应用程序曾经是一个 ANSI 应用程序,因此数据包含 ISO-latin-1 字符。现在应用程序已升级为 unicode 应用程序。为了将 Unicode 字符存储在现有数据库中(大约 10k 个实例),我编写了一个 UTF8-BOM(如果你可以这样称呼它),然后字符串的其余部分被认为是 UTF8 并由数据库层解码。这样我们就可以使用所有现有的数据库,并且仍然使用所有 Unicode 字符。

这适用于西欧的所有机器。但是当应用程序在罗马尼亚(具有罗马尼亚语设置的 Windows PC)中运行时:数据库引擎会更改字符。例如:UTF8 字符串以字符 octet EF (ï) 开头。数据库引擎将其返回为八位字节 69 (i)。

现有数据库如何解决这个问题?

注意:我在打开数据库(使用 UIB 库)时尝试指定字符集 OCTETS,但由于字符集未知,因此失败。

发现问题出在 UIB(本例中使用的数据库层)。UIB 处理 csNONE 的方式是,如果你给它一个字节字符串(数据类型 AnsiString),它会通过简单地将字节扩展为单词并使用当前线程代码页进一步减少它来转换为 UnicodeString。由于罗马尼亚没有使用 iso-latin-1 作为它的代码页......数据在那里被破坏了。

现在我在 UIBLib 中更改了以下例程(例如,当给出 ansistring 并且 charset 为 none 并且请求 ansistring 参数时 -> 根本不进行转换):

现在我需要检查这个行为对于库是否正确,并给维护者一个补丁。

0 投票
1 回答
2141 浏览

delphi - 如何在 UIB 中使用 Firebird 事务隔离级别?

根据文档,Firebird 中有四个事务隔离级别。但是,据我所知, uib库(TUIBTransaction)中没有明确的隔离级别选择,而是一堆事务选项。我应该如何使用这些?某处有文档吗?

0 投票
1 回答
365 浏览

delphi - Delphi 2010,UIB,Firebird:重复的参数名称

我正在使用 Delphi 2010 和 UIB 来访问 Firebird 数据库。

我正在尝试运行查询

请注意,我在语句中使用了每个命名参数两次。

当我在 TUIBQuery 中准备它时,我得到 ParamCount=2 和两个名为 DX 的参数。当我跟踪代码时,我看到 TSQLParams.Parse 传递了我的 SQL 并四次调用 AddFieldA。我可以看到重复项被识别并添加到 FXSQLDA 的末尾,但 FParamCount 没有增加。

作为一个临时的愚蠢修复,我添加了这样一个增量,现在我得到 (DX, DX, POSTCODE, POSTCODE) 作为参数列表。那种作品。

问题:

  • Firebird 是否支持我尝试的那种参数重用?
  • 通过 UIB?
  • 我的修复可行吗?
  • 有更好的修复吗?
0 投票
1 回答
105 浏览

delphi - Access violation in UIB EventCallback

With EurekaLog, I found this Access Violation in my application:

Callstack:

And the code from uib.pas:

Any idea what could be wrong and how to fix it?

0 投票
0 回答
150 浏览

delphi - 重新运行结果为空的查询时返回过时数据

我在 Delphi 2010 应用程序中使用 uib。我在具有不同参数的多个执行中重用了一个 TUIBQuery 组件。当参数值返回空数据集时,对字段的访问返回陈旧数据。

这是我所做的伪代码表示/摘录:

我在最后一个之后得到的Open()

所以它确实知道结果集是空的,但仍然返回当按名称访问字段时旧参数值的结果集不为空时查询的 aFieldName 的值。

我宁愿让它NULL (or 0 as I access AsInteger())为该领域提供一个。

我的解决方法是测试Eof=Bof=true,但有更优雅的方法吗?

在我的真实代码中,这两个Open()调用是在单独的网络请求中。有没有办法在我调用时显式重置字段值Close()

感谢您阅读本文并为此付出一些思考。

0 投票
1 回答
1018 浏览

javascript - 如何在uib-popover中显示动态HTML注入uib-grid

我想在uib-popover中显示一个动态生成的HTML,当<i>在uib-grid的每个列标题中单击a时会显示它。ng 指令和变量也需要处于活动状态,例如 ng-click、$scope 等。

我尝试使用headerCellTemplateuib-grid 的每个列定义中的 来显示<i>标签,并将动态生成的 HtML 传递给每个列定义,以便我可以在headerCellTemplatewith中获取它col.displayName.popoverTemplate,它工作正常。但是我不能将任何变量传递给 popover use $scope,并且ng-click根本不起作用。有人说我需要编译 HTML 或使用uib-popover-template,如何将参数传递给uib-popover-html或有另一种方式。

谢谢!

列定义

列标题模板:

弹出框模板

0 投票
0 回答
132 浏览

delphi - 回读 Database.Charset=csUTF8 时,来自 TUIBQuery 的参数值被截断

我正在开发一个在 Delphi 2010 中构建的应用程序,该应用程序使用 UIB 连接到 Firebird 2.5 数据库。该应用程序已经使用默认字符集运行了很长时间,即没有人对字符集有任何特别的考虑,它一直在工作。目前我正在尝试使其与 UTF-8 数据一起正常工作。

在这样做时,我遇到了 TUIBQuery 和参数化查询的问题。当使用Database.Charset=csUTF8和设置 CHAR(n) 字段的参数值并在执行查询之前检索它时,该值将被截断。

不幸的是,我的一些代码在许多地方都像这样写入和读取参数,因此死得很丑。

为了隔离和演示问题,我创建了一个简单的新数据库,其中DEFAULT CHARACTER SET UTF-8包含如下表:

我将应用程序设置为使用 TUIBDatabase 和 TUIBTransaction 连接到数据库。然后我创建了一个 TUIBQuery 实例,将 SQL 设置为该表的参数化 INSERT 语句,并设置参数:

当我现在像这样读取参数值时:

结果对Database.Charset=csNone. 但是,当我改为指定DataBase.Charset=csUTF8CHARFIELD 的值时,将截断为'A'而不是'ABC'. VARCHARFIELD 的值很好。该行为与实际数据无关,我不必实际使用非 ASCII 字符来激发它,如示例所示。

在查询上调用 ExecSQL() 可以正常工作,并且在两种情况下都按预期插入数据。

我已将源代码作为UIB_UTF8_Test.zip上传到我的简单测试程序中。

这里有人知道我可能做错了什么以及如何做对吗?

0 投票
1 回答
205 浏览

angularjs - uib datepicker弹出问题,仅显示顶部

我从模板中复制了代码,但 uib-datepicker 弹出窗口仅部分显示。在此处输入图像描述

0 投票
1 回答
50 浏览

angularjs - 使用 if 函数 ANGULARJS 显示不同的 uib 警报

如何通过使用从 nodejs 后端获取其变量的 if 函数来显示不同的警报?在我的 html 中:

在我的 AngularJS 文件中:

但这不起作用。任何人都可以帮忙吗?