delphi - Delphi - 检查数据库中是否已存在记录
问题描述
我试图将一个 cxGrid 的产品与已经注册到基地的产品进行比较,但我有疑问。
我有以下表格:
产品:id (pk)、描述、参考
items_note:产品(pk)、描述、单位
试图在事件 cxGridProdutoCustomDrawCell 上做,但它不起作用
procedure TFrmCompra.cxGridProdutoCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
if QryItemNota.fieldByName('PRODUTO').asString <> QryProduto.fieldByName('REFERENCIA').asString then
begin
ACanvas.Font.Color := clRed
end
else
ACanvas.Font.Color := clBlack;
end;
使用 Delphi RIO 10.3,带有 Firedac 组件的 Firebird 数据库
解决方案
很遗憾,您实际上并没有说明单元格中的文本是使用设置为红色还是黑色的字体绘制的。它应该可以正常工作,所以如果它只为您使用黑色或红色,那么您的if
测试就会出错。首先,暂时将您的代码更改为
procedure TFrmCompra.cxGridProdutoCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
begin
ACanvas.Font.Color := clRed
end;
并让自己确信文本确实是红色的。然后,暂时将您的代码更改为
procedure TFrmCompra.cxGridProdutoCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
var
S1,
S2 : String;
begin
S1 := QryItemNota.fieldByName('PRODUTO').asString;
S2 := QryProduto.fieldByName('REFERENCIA').asString;
if S1 <> S2 then
begin
ACanvas.Font.Color := clRed
end
else
ACanvas.Font.Color := clBlack;
end;
然后,在行上放置一个断点if S1 <> S2 then
并运行程序,直到断点命中。使用 F7 评估 S1 和 S2,您应该立即明白为什么没有得到您期望的结果。很可能 S1 和 S2总是相等或永远不相等。
您未包含的另一条信息是两个查询中的哪一个提供了网格视图,而您正在检查哪个查询。除非您知道另一个查询与显示的查询正确同步,否则您应该执行类似的操作
if QueryB.Locate({query B field name}, QueryA.FieldByName({query A field name}).AsString, []) then
// take record found action
else
// take record not found action
这将检查 QueryA 中当前行的值(在 CustomDraw 事件中正在处理)是否可以在 QueryB 中找到。
推荐阅读
- list - 更惯用的方式来初始化这个 kotlin 列表?
- android - 奥利奥升级后闹钟响起时出现系统 UI 错误
- c# - Google Drive API v3 不包括 Google 照片
- django - 如何将字符串拆分为 int 和 bytestring 文字
- utf-8 - Webkit 突然开始提供不同编码的脚本?
- sql - SQl file handling class or library in asp.net
- sql - 如何将多行合并为一行
- vuejs2 - Algolia Instantsearch (Vuejs) - Place searchbox outside (in a different component)
- javascript - Can't change the text content with JQuery
- react-native - React-native 打包器配置 - 如何在捆绑包中包含 .zip 文件?