diff --git a/A00标签打印/U_QrCodeFun.pas b/A00标签打印/U_QrCodeFun.pas index 17d5abc..223d920 100644 --- a/A00标签打印/U_QrCodeFun.pas +++ b/A00标签打印/U_QrCodeFun.pas @@ -24,19 +24,20 @@ procedure SetQrCodePath(Cds: TclientDataSet; FQrCodeField: string); implementation -procedure SetQrCodePath(Cds: TclientDataSet; FQrCodeField: string); +procedure SetQrCodePath(Cds: TClientDataSet; FQrCodeField: string); var QrCodeIdField: TField; + CurrentQrCodeId, LastQrCodeId, LastQrCodePath: string; begin - // ǷڶάIDֶ - if Trim(FQrCodeField) = '' then - Exit; - + // άIDֶǷ QrCodeIdField := Cds.FindField(FQrCodeField); if QrCodeIdField = nil then Exit; - // ɶά벢󶨵ClientDataSet + // ʼ + LastQrCodeId := ''; + LastQrCodePath := ''; + with Cds do begin DisableControls; @@ -44,9 +45,25 @@ begin First; while not Eof do begin - Edit; - FieldByName('QRBARCODE').AsString := GetQrCode(QrCodeIdField.AsString); - Post; + CurrentQrCodeId := QrCodeIdField.AsString; + + // ǰһͬöά· + if (CurrentQrCodeId = LastQrCodeId) and (LastQrCodePath <> '') then + begin + Edit; + FieldByName('QRBARCODE').AsString := LastQrCodePath; + Post; + end + else + begin + // µĶά벢¼· + Edit; + LastQrCodePath := GetQrCode(CurrentQrCodeId); + FieldByName('QRBARCODE').AsString := LastQrCodePath; + Post; + LastQrCodeId := CurrentQrCodeId; + end; + Next; end; finally