【发布时间】:2021-04-30 19:35:49
【问题描述】:
我有一个表,其中包含需要更新的值。由于过去不同的人添加了很多错别字,所以我不得不使用'like'。
我创建了一个包含所有需要更新的必要字段的表单。我使用了简单的TEdit 和TLabel。计划是从编辑框中选择一种类型的项目,并使用TListBox。
然后将要更新的信息添加到每个TEdit中。
我创建一个更新过程如下:
MyQuery1.SQL.Text := ' UPDATE TheTable SET iName = edtName.text WHERE iType like "%edtType.text%" ';
MyQuery1.SQL.Text := ' UPDATE TheTable SET iPart = edtPart.text WHERE iType like "%edtType.text%" ';
...
MyQuery.ExecSQL;
我的问题是以正确的格式传递edtVariables。如何在edtVariable 之前添加"% 和%" 之后?
我尝试过'"%'+edtPart.text+'%"' 之类的,但我以前从未在运行时这样做过。
【问题讨论】:
-
我强烈建议您阅读 Delphi 的 db-aware 控件(参见 f.i. 本教程 etutorials.org/Programming/mastering+delphi+7/…)。关于 db-aware 控件(如 TDBEdit)的要点在于,在数据库中的记录和屏幕上的编辑控件之间来回传输数据是完全自动的,并且像您这样的 qs 完全是多余的。
-
除了@MartynA 的评论,我不知道您为什么认为数据库服务器会知道
edtName.text是什么,因为这仅在您的Delphi 代码中可用。在此站点中搜索[delphi] parambyname以获取一些使用参数化查询的示例。 -
etutorials.org/Programming/mastering+delphi+7/...) 从我住的地方无法到达。你真的认为我应该检查 120,000 行数据库中的每条记录来编辑每个不正确的条目吗?我没有那么多时间活下去了!查询的想法是更新每个项目组的每条不正确的记录,这仍然会花费我一天中最好的时间。恐怕这不是很有帮助。 15 年前退休时,我丢失了所有关于德尔福的书籍。我正在为朋友的生意做点好事(少数几个尚未破产的公司之一)