问题标签 [tadotable]

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 投票
1 回答
14130 浏览

delphi - 如何对包含空格的字段名上的 ADO 表进行排序?

我正在使用 Delphi,但这是一个简单而普遍的问题:

我正在执行以下操作:

这非常有效,并且允许我在记录进入时按 CITY 字段升序排列有效地处理记录。

但是,现在我想按其中包含嵌入空间的“姓氏”字段进行排序。但是当我使用该语句时:

我收到错误消息:

我已经看到了关于 SORT 字符串语法的帮助。它表示以逗号分隔多个字段,并在字段后添加ASC或DESC以进行升序或降序排序。但它没有说明如果字段名中有空格该怎么办。

我尝试将字段名称放在单引号和双引号中,甚至使用 #20 作为空格字符,但这些都不起作用。

我无法更改 Microsoft Access 数据库上的字段名称,因为我不使用的其他程序依赖于它。

我敢肯定,一定有一种我不知道的简单方法可以做到这一点。

0 投票
1 回答
1105 浏览

delphi - Delphi:TAdoTable.Insert 不是真正的插入?

我有两个 ADO 表链接为主/详细信息表,tblCategory(主)和 tblItems(详细信息)。两个表格都有自己的网格,并以相同的形式显示。我也有数据感知控件(dbedits)。

说,目前我在:类别=书籍,项目编号=10 条记录,并指向网格中的第 5 条记录。我想为项目添加一条新记录,所以我使用:

tblItems.插入;

问题是,网格和数据库感知控件不是添加新行,而是显示当前记录(rec No 5)。不仅如此,该记录似乎也处于编辑模式。在我取消它并重复插入命令后,才出现新行。

如何解决这个问题,所以每次我使用 tblItems.Insert 它总是添加一个新的空行:)

0 投票
2 回答
1159 浏览

delphi - 插入到不同的表 onNewRecord

得到一个具有 OnNewRecord 事件的 ADOQuery。

在该过程中,我尝试将数据自动添加到另一个表中。在取消的情况下,数据是需要在 clientDataSet 中处理的几行。

在当地

其他AdoQuery.insert;

我收到 ADOQuery 未能将 null 插入非 null 字段的错误。我处于插入模式,但我从未要求 DELPHI 发布!我不明白它为什么发帖。

编辑:你能帮我找到这个问题的提示吗?

更多说明:

ADOQuery.onNewRecord();

开始

客户数据集.插入;//这里是为 ADOQueryPost 发布的。ClientDataSet 处于浏览状态的位置

结尾;

编辑:

这个错误没有意义!查看堆栈跟踪:

  • 事前事后
  • 新纪录
  • 我的函数

其中 myFunc 确实会导致带有插入的 NewRecord。

0 投票
1 回答
935 浏览

delphi - 如何将 Access 表中的列名加载到变量中(我不确定要使用哪一个)?我在 Delphi7 中使用 ADOTable

我正在尝试将列名从 MS Access 表(名为 Learners)导入到某个变量(不确定要使用哪个变量)。列的名称是日期。单击 btnSave (TButton) 时,代码应确定是否已创建具有当前日期的列。如果没有,那么它应该创建它。这是我到目前为止得到的代码:

请帮忙!任何建议将不胜感激。

0 投票
1 回答
986 浏览

delphi - TADOTable、Seek和clUseServer如何结合?

Delphi的ADOTable中光标位置设置为clUseServer时是否可以使用seek功能?我知道可以使用 locate 函数,但它比 seek 函数慢很多。

0 投票
3 回答
1302 浏览

database - 在 Delphi 中反转 Master-Detail 连接

我有 2 个使用主从连接连接的表。我需要在创建 Form2 时反转连接 - 因此主表成为详细表,详细表成为主表。

我尝试这样做,程序编译,但没有按照我想要的方式工作(之前的连接中断,但它没有反转,所以程序有点像表根本没有连接):

关于我如何实现这一目标的任何想法?

0 投票
1 回答
1329 浏览

database - 检查 ADOTable 字段值的问题

我对Delphi还有另一个问题。我写了一段代码,它应该检查数据库表中的字段是否等于 0,如果是,则更改某个按钮的字体颜色和标题。它在创建主窗体时运行。但是,当我运行程序时,什么也没有发生 - 程序没有出现,我也没有收到任何错误。我真的不知道出了什么问题,似乎是某种无限循环。

这是代码:

注意:ADOTableStorage 表是主从连接中的明细表上的一个。

谢谢!

0 投票
1 回答
480 浏览

sql - TADOTable -- 可以用于插入吗?

我在一个旧的 Delphi 7 项目中工作,并试图了解它。我听说TADOTables 很糟糕,因为它们会拉下整个表格。但是我正在查看一段代码,我想知道它是否做同样的事情。它所做的只是设置一些字段的值,然后如果适用的话tbl.Post,可能会执行它之前的命令。tbl.Insert(对不起,我不是Delphi最有经验的)

无论如何,TADOTables 应该被完全淘汰,还是应该只在select *实际使用它们的语句时才被替换,并且它们可以用于插入和更新?

0 投票
1 回答
4709 浏览

delphi - 主从关系中的 ADOTable.Locate

我在两个表之间有一个主从关系,我在主表中选择一个记录,它的详细信息显示在详细信息表中,接下来我想在详细信息表中找到关于主表的选定记录的详细信息,但是当我使用 ADOTable 时。 Locate(...) ,它位于所有详细记录表中!
例如我有这个表:

掌握 :

身份证 | 姓名

11 | 马哈茂德
22 | 马苏德

……

细节 :

识别码 | 宠物(!)
11 | 22
类 | 狗
22 | 猫

我选择了用户“Mahmood”(ID = 11),并且在详细信息表中只有 1 条记录显示为 UID = 11 和宠物 = Cat
现在我想在详细信息表上定位:
DetailTable.Locate('Pet', 'Dog', [ ])

上面的“Locate”返回“TRUE”,而在 Selected User 的详细信息中没有“Dog”值的记录

我怎么解决这个问题 ?
我想在主表中搜索所选记录的详细信息

之前谢谢...

0 投票
4 回答
3812 浏览

delphi - 类 TADOConnection / TADOTable 未找到

好的,所以我的应用程序工作得很好,直到我决定通过创建一个 DataModule 表单并将所有数据库组件移动到它来稍微清理设计时表单。我正在使用 Delphi XE2 Update 1 和这些组件,TADOConnection、TADOTable、TADOQuery、TADOCommand。当我第一次尝试使用 DataModule 表单上的上述命名组件而不是主表单运行应用程序时,它现在在执行 DPR 的此行时返回错误:

Application.CreateForm(TDataModule1, DataModule1);

引发的错误是找不到类 TADOConnection。. 现在我删除并重新添加了 TADOConnection 到 DataModule 表单,它现在引发了一个不同的错误:找不到类 TADOTable。,但我认为这只是因为 DataModule 上的创建顺序发生了变化,TADOTable现在 a 是在表单上创建的第一个对象。

uses在 DataModule 中的条款是:

uses System.SysUtils, System.Classes, Data.Win.ADODB, Data.DB;

我阅读了其他帖子,说在 uses 子句中包含 ADODB 和 DB 以克服此错误,但这似乎没有帮助。

我的完整 DPR 文件是:

我什至尝试从创建 DataModule 的 DPR 文件中删除该行并在主窗体中手动执行此操作,但是当我收到相同的错误消息时,它只会改变。

除了将所有组件移回主窗体之外,我不确定接下来要尝试什么。DataModule 表单在 XE2 中的工作方式与 Delphi 的先前版本不同,为什么当组件位于主表单上时,没有出现相同的 TADOConnection 和 TADOTable 类未找到消息?

非常感谢任何想法或见解。

詹姆士