大家帮我看看我这段代码有什么问题,关于删除门禁机白名单的。

Liyp92 2014-09-26 10:27:01

begin
clk.Port:=cbComPort.ItemIndex+1;
clk.baudrate:=StrToInt(cbComRate.Text);
clk.clock_id:=StrToInt('$'+edClock_id.Text);

ClosePort(@clk, clk.CommStyle);
if OpenPort(@clk, clk.CommStyle) then
begin
Panel5.Visible := True;
//刪除離職
WhiteList.Close;
WhiteList.SQL.Clear;
WhiteList.SQL.Add('SELECT * FROM WhiteList WHERE CardNo NOT IN(SELECT PNL FROM P_PERSON_P20140922 WHERE [Status]<>''R'')');
WhiteList.Open;

if WhiteList.RecordCount >0 then
begin
WhiteList.First;
//while not WhiteList.Eof do
for L:=0 to WhiteList.RecordCount-1 do
begin
Showmessage(WhiteList.FieldByName('CardNo').AsString);
if DeleteAllowedCard(clk.hPort,pChar(WhiteList.FieldByName('CardNo').AsString)) then //这里经常出错,有时可以有时又不行
begin
//刪除數據庫
WhiteList.Delete;
Panel5.Caption := Format('正在刪除卡機第:%d笔记录, 剩余记录数:%d(总共记录数:%d)', [WhiteList.RecNO, WhiteList.RecordCount-WhiteList.RecNO, WhiteList.RecordCount]);
Panel5.Refresh;
inc(K);
end else
begin
Showmessage('刪除失敗,無法連接!');
//break;
end;
WhiteList.Next;
end;
end;

Showmessage(Format('本次共刪除:%d笔!!',[k]));
PageControl1.Enabled := True;
Panel5.Visible :=False;
//
if ReadClockTime(clk.hPort, CurTime) then
Label5.Caption:=formatDateTime(LongDateFormat+' '+LongTimeFormat, CurTime);
end else
begin
//連接失敗
PageControl1.Enabled := True;
Panel5.Visible :=False;
//ClosePort(@clk, clk.CommStyle);
//exit;
break;
end;
ClosePort(@clk, clk.CommStyle);
end;
...全文
203 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2014-09-28
  • 打赏
  • 举报
回复
这种删除,包括列表,倒着来保险一点。。。。
quickboy19821982 2014-09-28
  • 打赏
  • 举报
回复
你应该跟踪下DeleteAllowedCard这个函数是否有问题
山东蓝鸟贵薪 2014-09-28
  • 打赏
  • 举报
回复
学习中
Liyp92 2014-09-26
  • 打赏
  • 举报
回复
没人弄过么/ 基本上是在删除第一个的时候出错 Showmessage('刪除失敗,無法連接!');
Liyp92 2014-09-26
  • 打赏
  • 举报
回复
主要是在DeleteAllowedCard(clk.hPort,pChar(WhiteList.FieldByName('CardNo').AsString)) 有时会删除失败 求各位大神!!
CCC的 2014-09-26
  • 打赏
  • 举报
回复
if WhiteList.RecordCount >0 then
         begin
           WhiteList.First;
           //while not WhiteList.Eof do
           for L:=0 to WhiteList.RecordCount-1 do
           begin
             Showmessage(WhiteList.FieldByName('CardNo').AsString);
             if DeleteAllowedCard(clk.hPort,pChar(WhiteList.FieldByName('CardNo').AsString)) then //这里经常出错,有时可以有时又不行
             begin
               //刪除數據庫
               WhiteList.Delete;
               Panel5.Caption := Format('正在刪除卡機第:%d笔记录, 剩余记录数:%d(总共记录数:%d)', [WhiteList.RecNO, WhiteList.RecordCount-WhiteList.RecNO, WhiteList.RecordCount]);
               Panel5.Refresh;
               inc(K);
             end else
             begin
               Showmessage('刪除失敗,無法連接!');
               //break;
             end;
             WhiteList.Next;
           end;
         end;
改为
if WhiteList.RecordCount >0 then
         begin
           WhiteList.Last;
           while not WhiteList.Bof do           
           begin
             Showmessage(WhiteList.FieldByName('CardNo').AsString);
             if DeleteAllowedCard(clk.hPort,pChar(WhiteList.FieldByName('CardNo').AsString)) then //这里经常出错,有时可以有时又不行
             begin
               //刪除數據庫
               WhiteList.Delete;
               Panel5.Caption := Format('正在刪除卡機第:%d笔记录, 剩余记录数:%d(总共记录数:%d)', [WhiteList.RecNO, WhiteList.RecordCount-WhiteList.RecNO, WhiteList.RecordCount]);
               Panel5.Refresh;
               inc(K);
             end else
             begin
               Showmessage('刪除失敗,無法連接!');
               //break;
             end;
             WhiteList.Prior;
           end;
         end;
试试

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧