盘点机的数据读取 ( 积分: 100 )

  • 主题发起人 主题发起人 sunyat
  • 开始时间 开始时间
S

sunyat

Unregistered / Unconfirmed
GUEST, unregistred user!
盘点机保存了数据(条码和数量),我需要在自己的程序界面里面按记录读出数据,有那位高手写过吗?望给予帮助!谢谢!
 
可以先读到memo或listbox里面,再逐行读取添加到表里面。
 
怎样先 读到memo或listbox ?
 
我写的有可能比较烦锁一点,但比较清楚:
procedure Tpd_data_input.F2Click(Sender: TObject); // 导入盘点数据
var
I,j,k:Integer;
ssql,pd_dj,pd_pc,pd_rang,pd_cls,s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10:string;
opendlg:TopenDialog;
begin
pd_dj:=trim(RzEdit2.Text);
pd_pc:=trim(RzComboBox5.Text);
pd_rang:=trim(RzComboBox4.Text);
pd_cls:=trim(RzComboBox3.Text);
if pd_dj='' then
begin
application.messagebox(pchar('【盘点录入单】不允许为空,请先选择盘点录入单号!'),
pchar(syscaption),MB_OK+mb_iconinformation);
exit;
end;
if pd_pc='' then
begin
application.messagebox(pchar('请先选择【盘点录入单】的【盘点批次号】!'),
pchar(syscaption),MB_OK+mb_iconinformation);
exit;
end;
opendlg:=Topendialog.Create(nil);
opendlg.Filter:='文本文件 (*.Txt)|*.Txt';
opendlg.InitialDir:=file_bin+'../document';
opendlg.FileName:='ydjxc_pddata.txt';
opendlg.DefaultExt:='txt';
opendlg.Title:='请选择盘点数据文件名称';
if opendlg.Execute then
begin
s1:=opendlg.FileName;
if not FileExists(s1) then
begin
application.messagebox(pchar('盘点数据文件【'+s1+'】不存在,本次导入失败!'),
pchar(syscaption),MB_ok+mb_iconerror);
Exit;
end;
// 判断此单据原来是否有记录(盘点数据)
with dm4.dm04.pd_data_input_l do
begin
close;
sql.clear;
ssql:='select * from ic_check_detail'+#13+
' where (sheet_no='+quotedstr(pd_dj)+')';
sql.add(ssql);
try
open;
except
on e: Exception do
begin
oper_err_info(self.Caption,'F2C',sql.text,'1',e.Message); // 容错处理
abort;
end;
end;
if recordcount>0 then
begin
k:=application.messagebox(pchar(
' 当前单据已有盘点数据存在,是否覆盖?'+#13+#13+
'【 是 】:覆盖当前已存在的商品;'+#13+
'【 否 】:继续在当前数据后面追加;'+#13+
'【取消】:放弃本次导入操作;'),
pchar(syscaption),mb_yesnocancel+mb_defbutton3+mb_iconquestion);
if k=2 then // 取消
exit
else
if k=6 then // 删除
begin
close;
sql.clear;
sql.add('delete from ic_check_detail');
sql.add('where sheet_no='+quotedstr(pd_dj));
try
ExecSQL;
except
on e: Exception do
begin
oper_err_info(self.Caption,'F2C',sql.text,'2',e.Message);
abort;
end;
end;
end;
end;
close;
end; // with
// 盘点机类型
s2:=sini.readString('Pdj_Set','pdj_type','');
s0:=sini.readstring('Pdj_Set','divide_type','');
if s0='' then s0:='0';
if s0='0' then s0:=chr(9); // tab
if s0='1' then s0:=';';
if s0='2' then s0:=',';
if s0='3' then s0:=' ';
if s0='4' then s0:=sini.readstring('Pdj_Set','divide_other_char','');
if s0='' then s0:=',';
if s2='' then s1:='0';
// 顶尖手持式终端HT1(掌上式)
if s2='1' then
begin
RzMemo1.Lines.Clear;
RzMemo1.Lines.LoadFromFile(s1);
j:=RzMemo1.Lines.Count;
if j<=0 then
begin
application.messagebox(pchar('盘点数据文件【'+s1+'】没有内容,本次导入失败!'),
pchar(syscaption),MB_ok+mb_iconerror);
Exit;
end;
// 进度条显示
it:=Tinfo_ts.create(application);
it.RzLabel1.Caption:=sys_wait;
it.RzLabel2.Caption:='0 %';
it.RzLabel2.Left:=125;
it.RzLabel2.Visible:=true;
it.pb1.Min:=0;
it.pb1.Max:=j;
try
it.Show;
except
on e: Exception do
begin
oper_err_info(self.caption,'F2C','show','3',e.Message);
abort;
end;
end;
for I:=0 to j-1 do // Iterate
begin
it.pb1.Position:=it.pb1.Position+1;
it.RzLabel2.Caption:=floattostr(int(it.pb1.position/it.pb1.max*100))+' %'+
' ('+inttostr(i+1)+'/'+inttostr(j)+')';
it.Update;
DBGridEh1.Refresh;
s3:=Trim(rzmemo1.Lines.Strings);
s4:=get_sub_str(s3,s0); // 截取字符串中的子串
s3:=copy(s3,pos(s0,s3)+1,Length(s3));
s5:=get_sub_str(s3,s0);
s3:=copy(s3,pos(s0,s3)+1,Length(s3));
s6:=get_sub_str(s3,s0);
s3:=copy(s3,pos(s0,s3)+1,Length(s3));
s7:=get_sub_str(s3,s0);
append_pd_table(pd_dj,pd_pc,pd_cls,pd_rang,s4,s5,s6,s7,'1'); // 添加盘点表记录
Next;
end; // for
it.free;
end;
// 其它终端(盘点机)


end;
// 导入成功后,刷新显示
with dm4.dm04.pd_data_input_l do
begin
close;
sql.clear;
ssql:='select * from ic_check_detail'+#13+
' where (sheet_no='+quotedstr(pd_dj)+')';
sql.add(ssql);
try
open;
except
on e: Exception do
begin
oper_err_info(self.Caption,'F2C',sql.text,'4',e.Message);
abort;
end;
end;
end; // with
application.messagebox(pchar('恭喜,盘点数据文件【'+s1+'】本次导入成功!'),
pchar(syscaption),MB_ok+mb_iconinformation);
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
753
SUNSTONE的Delphi笔记
S
S
回复
0
查看
744
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部