【问题标题】:How can I update the Quantity field in DBGrid using SQL query in in Delphi (adotable)?如何在 Delphi (adotable) 中使用 SQL 查询更新 DBGrid 中的 Quantity 字段?
【发布时间】:2019-05-02 18:18:09
【问题描述】:

我在 table1(产品)中有字段(数量) 我在 table2 (销售)中有一个字段(quantity_delivered)。 每次我卖一个产品,table1中的数量都必须更新 (quantity-quantity_delivered)。

如何在 Delphi 中做到这一点? 内德的想法 帮助

【问题讨论】:

  • 欢迎您!这听起来像是一个使用 ADO 组件的基本问题,但不幸的是,您的问题缺少关于您已经拥有什么、您到底坚持什么等等的所有细节。
  • google 自己一个关于 Delphi 的数据感知(又名 db-aware)组件的教程;它们非常适合此类任务参见例如etutorials.org/Programming/mastering+delphi+7/…

标签: sql database delphi


【解决方案1】:

使用带有如下 SQL 语句的 TAdoQuery 组件:

ADOQuery.SQL.Text :=
'UPDATE product'
+ ' SET quantity = quantity - :quantity_delivered'
+ ' WHERE product_key = :product_key';

ADOQuery.Parameters.ParamByName('quantity_delivered').DataType := ftInteger;
ADOQuery.Parameters.ParamByName('quantity_delivered').Value := 42;

ADOQuery.Parameters.ParamByName('product_key').DataType := ftInteger;
ADOQuery.Parameters.ParamByName('product_key').Value := 123;

ADOQuery.ExecSQL;

此代码使用 SQL 参数。这有助于防止 SQL 注入黑客攻击,因为参数值已正确转换和转义。

由于您没有提供太多关于表格布局的详细信息,因此我不得不编造更多示例!
请检查表product的主键的数据类型,或者您正在识别单个产品并调整参数属性DataTypeValue,以及SQL命令中的标识符"product_key"
您还必须为 quantity_delivered 参数值插入一个变量,因为您肯定不想每次都将数量减少 42。

【讨论】:

  • 对我来说似乎是一条红鲱鱼。为什么 OP 不只使用 db-aware 组件来输入/更改数据?
  • 我是 Delphi 的初学者 我很难理解你对我说的话 它会给你你想要的细节并尝试指导我的步骤非常感谢你
  • 作为初学者,您无需了解此答案中的内容即可高效地使用 Delphi 处理您的数据。看看我在对你的 q 的评论中提到的教程。
  • 是的,db-aware 控件不需要与创建自己的 UPDATE sql 语句一样多的代码。但是请阅读我提到的教程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
相关资源
最近更新 更多