- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在从程序用户在运行时定义的查询中获取字段列表时遇到问题。我让用户在备忘录控件中输入 SQL 查询,然后我想让他们浏览将返回的字段并执行诸如格式化输出、求和列值等操作。因此,我必须获取列名称,以便它们有地方输入附加信息。
如果没有参数,我会做得很好,但我还必须让他们为查询定义过滤器参数。因此,如果我想将参数设置为 null,我必须知道参数的数据类型是什么。
我使用的是 Delphi 2006。我使用 DBExpress 组件 TSQLConnection 和 TSQLQuery 连接到 Firebird 2.1 数据库。以前,我成功地使用了:
for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;
当我尝试使用日期参数时,我发现遇到了问题。直到那时我的所有参数都是整数(记录 ID),这只是一个巧合。事实证明 varNull 只是一个值为 1 的枚举常量,因此我得到了可接受的结果(没有记录),工作正常。
我只需要一个字段列表。也许我应该只解析 SQL 语句的 SELECT 子句。我认为将 Qry.Prepared 设置为 True 会给我一个字段列表,但没有这样的运气。它需要参数值。
如果你有什么想法,我很想听听。感谢您的帮助。
最佳答案
再次回复“因为我感兴趣”。我的方法可以工作(与我的查询一起使用),因为它们已使用预设为正确类型的参数数据类型进行了预定义:)
鉴于您甚至没有选择它所操作的字段,我不确定您期望查询如何知道或派生参数的数据类型。
所以我认为您的查询设置和用户输入方法需要更多关注。我不久前刚刚查了一下我是如何做到这一点的。我不使用参数化查询 - 我只是从用户那里获取“参数值”并将它们直接放入 SQL 中。所以你的 sql 将读取:
选择 s.hEmployee、e.sLastName
来自 PR_Paystub s
INNER JOIN PR_Employee e ON e.hKey = s.hEmployee
WHERE s.dtPaydate > '01/01/2008'
因此不需要参数类型知识。不会阻止您的用户输入垃圾,但这会返回到输入控制:)
关于delphi - 从 DBExpress TSQLQuery 获取字段列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260521/
我有一个名为 Artist 的表,当前包含四个记录和一个包含以下语句的 TSQLQuery: SELECT name FROM Artist 表 Artist 还包含以下记录: id
现在,我正在尝试删除delphi程序中的一些旧搜索代码,并且我想将搜索推送到程序正在使用的sql服务器。为此,我创建了这个查询,它与我在不同的 C# 程序中使用的查询非常相似。 使用 SQL Mana
我收到“SQL Server 错误:算术异常、数字溢出或字符串截断”错误 下面是代码 AQuery:= TSQLQuery.Create(nil); with AQuery do begin SQLC
我一直在评估 Delphi XE4(针对 win32 进行编译,但最终平台将是 iOS),我需要创建 SQLite 数据库(没问题)并进行一些查询。这是我想使用的一个查询: select id a
我正在使用 Delphi XE2 和 TSQLQuery 对象。我第一次使用它时它就有效。如果我立即重用它,那么它不会解析新 SQL 的参数并重建 qry.Params 列表: var qry:
我有一个查询,使用像这样的 TSQLQuery TSQLQuery* tq = new TSQLQuery(NULL); tq->SQLConnection = atdbDM->SQLConnecti
我在从程序用户在运行时定义的查询中获取字段列表时遇到问题。我让用户在备忘录控件中输入 SQL 查询,然后我想让他们浏览将返回的字段并执行诸如格式化输出、求和列值等操作。因此,我必须获取列名称,以便它们
(请参阅文章末尾使用堆栈跟踪编辑 #1 和使用解决方法编辑 #2) 在对 TSQLQuery.FieldByName().AsString -> TStringStream Corrupts Data
TSQLQuery 类是单向的,因此为了将其用作数据绑定(bind) TDBGrid 的源,TClientDataSet 需要在 TSQLQuery 和 TDBGrid 绑定(bind)到的 TDat
我正在使用Delphi XE2。我的代码从 SQL-Server 2008 R2 数据库中提取数据。返回的数据是一个包含 1,055,227 字节数据的 nvarchar(max) 字段。我使用以下代
以下 Delphi 函数可用于将 fkInternalCalc 添加到 TClientDataset。这很有用,因为我可以为每条记录存储一些信息,进行计算或存储临时标志。 相同的代码在 Lazarus
我在 Delphi 2007 中使用 DBExpress 连接到网络上的 MySQL5 数据库服务器。 一切正常,直到我尝试上传大量数据。我正在尝试将 8000 多条记录插入数据库,一次一个循环,在循
Precis:我的代码试图更新 Delphi XE TClientDataset 中的非物理字段,(连接到 TSQLQuery 及其 SQL作为运行时 Open 命令的结果创建的属性集)。 我有一个
我一直在 Lazarus 中使用 ParamByName 来指定用于不同字段的参数。它主要是 AsString 或 AsBoolean... 但现在我需要使用具有 8 位精度和 3 位小数的数值。这当
我是一名优秀的程序员,十分优秀!