关于线程和一小问题.
unit UnitXZLYDSJ;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, DB, ADODB;
type
TFrmXZLYDSJ = class(TForm)
Panel4: TPanel;
LblMessage: TLabel;
BtnRetry: TButton;
Panel3: TPanel;
ProgressBar1: TProgressBar;
GroupBox9: TGroupBox;
BtnStart: TButton;
BtnClose: TButton;
PanelFCSJ: TPanel;
GroupBox5: TGroupBox;
DBGrid03: TDBGrid;
LabelInfo: TLabel;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery; // FrmMain.ADOConnection1
procedure BtnRetryClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ShowData;
procedure BtnStartClick(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmXZLYDSJ: TFrmXZLYDSJ;
threadid:dword;
hthread:thandle;
do1:boolean;
procedure down1;
implementation
uses UnitMain;
{$R *.dfm}
procedure down1;
begin
ProgressBar1.Max:=ADOQuery1.RecordCount; // 54行
ProgressBar1.Step:=1;
ADOQuery1.First ;
while not ADOQuery1.Eof do
begin
with ADOQuery2 do
begin
close;
sql.Clear ;
sql.add('select TOP 1 * from 运单表 where 运单号 = '''+ADOQuery1.FieldByName('运单号').AsString+'''');
open;
if not eof then
begin
ADOQuery2.Edit ;
ADOQuery2.FieldByName('持票人').AsString:=ADOQuery1.FieldByName('持票人').AsString;
ADOQuery2.FieldByName('领票日期').AsString:=ADOQuery1.FieldByName('领票日期').AsString;
ADOQuery2.FieldByName('出车编号').AsString:=ADOQuery1.FieldByName('出车编号').AsString;
ADOQuery2.Post ;
end;
end;
ADOQuery1.Edit;
ADOQuery1.FieldByName('已下载').AsBoolean:=true;
ADOQuery1.Post;
ADOQuery1.Next;
ProgressBar1.StepIt;
end;
LabelInfo.Visible :=true;
showdata;
do1:=true;
end;
procedure TFrmXZLYDSJ.BtnRetryClick(Sender: TObject);
begin
try
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=88888888;Persist Security Info=True;User ID=jld56;Initial Catalog=jld56;Data Source=255.255.255.255';
ADOConnection1.LoginPrompt:=false;
ADOConnection1.Connected:=true;
LblMessage.Caption:='数据库连接成功!';
BtnReTry.Enabled:=False;
except
LblMessage.Caption:='数据库连接失败,请确认网络连接无误后,按“重新连接”按钮!';
BtnStart.Enabled:=False;
BtnReTry.Enabled:=True;
end;
ShowData;
end;
procedure TFrmXZLYDSJ.FormShow(Sender: TObject);
begin
BtnRetry.Click;
do1:=true;
end;
procedure TFrmXZLYDSJ.ShowData;
begin
LabelInfo.Visible :=false;
with ADOQuery1 do
begin
close;
sql.Clear ;
sql.Add(' select * from 领运单数据表 where 已下载 = 0 ');
open;
if RecordCount<=0 then
BtnStart.Enabled :=false
else
BtnStart.Enabled :=true;
end;
end;
procedure TFrmXZLYDSJ.BtnStartClick(Sender: TObject);
begin
if MessageDlg('您确定要下载 领运单 数据吗?',mtConfirmation,[mbYes,mbNo],0)=mrNo then
exit;
if do1=true then
begin
hthread:=createthread(nil,0,@down1,nil,0,threadid);
do1:=false;
end;
end;
procedure TFrmXZLYDSJ.BtnCloseClick(Sender: TObject);
begin
if hthread>0 then
terminatethread(hthread,2);
close;
end;
end.
[Error] UnitXZLYDSJ.pas(54): Undeclared identifier: 'ProgressBar1'
[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(54): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(55): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(56): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(57): 'DO' expected but identifier 'Eof' found
[Error] UnitXZLYDSJ.pas(59): Undeclared identifier: 'ADOQuery2'
[Error] UnitXZLYDSJ.pas(61): '(' expected but ';' found
[Error] UnitXZLYDSJ.pas(62): Undeclared identifier: 'sql'
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(63): 'END' expected but ')' found
[Error] UnitXZLYDSJ.pas(65): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(67): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(68): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(69): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(70): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(71): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(75): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(76): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(77): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(78): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(79): Missing operator or semicolon
[Error] UnitXZLYDSJ.pas(81): Declaration expected but identifier 'LabelInfo' found
[Error] UnitXZLYDSJ.pas(84): '.' expected but ';' found
[Fatal Error] JLDZB.dpr(114): Could not compile used unit '..\下载领运单数据\UnitXZLYDSJ.pas'
...全文
相关推荐
使用redis分布式锁解决并发线程资源共享问题
主要介绍了使用redis分布式锁解决并发线程资源共享问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
VC++线程同步实例
通过模拟公交车运行时,司机,售票员以及乘客之间的同步状态来实现线程同步
vc++ multithread多线程教程---线程通信--利用事件对象,线程同步--使用信号量,线程同步--使用互斥量,线程同步--使用临界区
vc++ 多线程教程---线程通信--利用事件对象,线程同步--使用信号量,线程同步--使用互斥量,线程同步--使用临界区
Visual C++事件机制线程同步工程
这是一个Visual C++临界区域线程同步的简单实例工程。
一个VC多线程的例子
这是一个VC多线程编程的例子,总共四个程序,内附详细说明。


语言基础/算法/系统设计
