unit pymain;{DLL的单元文件}interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, ExtCtrls, CheckLst,
OleServer,DBClient,ComObj, ComCtrls;type
TForm3 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
GroupBox1: TGroupBox;
CheckListBox1: TCheckListBox;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
ADOStoredProc1: TADOStoredProc;
ADOStoredProc1wfullid: TStringField;
ADOStoredProc1wfullname: TStringField;
ADOStoredProc1mfullname: TStringField;
ADOStoredProc1child: TStringField;
ADOStoredProc1cond_stop: TDateTimeField;
ADOQuery2: TADOQuery;
ADOQuery2SysCode: TWideStringField;
ADOQuery2ChnCode: TWideStringField;
ADOStoredProc1constopcau: TStringField;
ADOStoredProc1LConstopcau: TStringField;
StatusBar1: TStatusBar;
BitBtn3: TBitBtn;
ADOConnection1: TADOConnection;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
StrAdress:TStringList;
{ Private declarations }
public
StrAdress:TStringList;
{ Public declarations }
end;var
Form3: TForm3;
procedure ybyzs(H:THandle;AConn:TADOConnection);cdecl; //声明DLL函数
{ 指定调用协议 }
implementation
uses QRept,uExcelTools;
{$R *.DFM}procedure ybyzs(H:THandle;AConn:TADOConnection);
var
i:integer;
begin
Application.Handle:=H;
with TForm3.Create(Application) do try//创建密码验证窗口
ADOConnection1:=AConn;
ADOConnection1.Connected:=true;
StrAdress:=TStringList.Create;
form3.checklistbox1.Items.Clear;
ADOQuery1.Connection :=ADOConnection1;
ADOQuery1.Open;
ADOQuery1.First ;
with form3.ADOQuery1 do //以下不能执行
for i:=0 to RecordCount-1 do
begin
form3.checklistbox1.Items.Add(Fields[1].AsString);
form3.StrAdress.Add(Fields[0].AsString);
Next;
end;
Memo1.Lines.Append('成功调用');
Memo1.Lines.Append(ADOConnection1.ConnectionString );
ShowModal;
finally
free;//释放资源
end;
ADOQuery2.close;
ADOQuery2.Open;//不能执
end;
procedure TForm3.BitBtn4Click(Sender: TObject);
var
i:integer;
begin
if ADOQuery1.Active then
for i:=0 to ADOQuery1.RecordCount-1 do
begin
CheckListBox1.Checked[i]:=false;
end;
end;procedure TForm3.BitBtn1Click(Sender: TObject);
var
i:integer;
SAddresscode:string;
begin
BitBtn1.Enabled :=false;
StatusBar1.SimplePanel:=true;
StatusBar1.SimpleText:='现在正查询,大约10秒左右请等待';
for i:=0 to ADOQuery1.RecordCount-1 do
begin
if CheckListBox1.Checked[i] then
begin
if SAddresscode='null' then SAddresscode:='430124'+''+StrAdress[i]+''
else SAddresscode:=SAddresscode+''+StrAdress[i] +''; //+','
end
else SAddresscode:='430124'
end;with ADOStoredProc1 do
begin
try
ADOStoredproc1.active:=false;
ADOStoredproc1.connection:=ADOConnection1;
Parameters.ParamByName('@Wid').value:=SAddresscode;
ADOStoredproc1.Prepared;
ADOStoredproc1.ExecProc;
ADOStoredproc1.active:=true;
StatusBar1.SimplePanel:=false;
StatusBar1.Panels.Items[0].Text:='查询完毕';
StatusBar1.Panels.Items[2].Text:=inttostr(ADOStoredProc1.RecordCount)+''+'条记录没有实施措';
BitBtn1.Enabled :=true;
BitBtn2.Enabled :=true;
except
StatusBar1.Panels.Items[0].Text:='查询失败';
ADOConnection1.Connected:=false;
BitBtn1.Enabled :=true;
end;
end ;end;procedure TForm3.BitBtn5Click(Sender: TObject);
begin
form3.Free;
form3.Close ;
end;procedure TForm3.BitBtn2Click(Sender: TObject);
begin
DataSetToExcel(ADOStoredProc1,5,true,'')
end;procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Form2.QuickRep1.PreviewModal;
end;procedure TForm3.FormDestroy(Sender: TObject);
begin
free;
end;end.
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Buttons, DBCtrls, Grids, DBGrids, ExtCtrls, CheckLst,
OleServer,DBClient,ComObj, ComCtrls;type
TForm3 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
GroupBox1: TGroupBox;
CheckListBox1: TCheckListBox;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
ADOStoredProc1: TADOStoredProc;
ADOStoredProc1wfullid: TStringField;
ADOStoredProc1wfullname: TStringField;
ADOStoredProc1mfullname: TStringField;
ADOStoredProc1child: TStringField;
ADOStoredProc1cond_stop: TDateTimeField;
ADOQuery2: TADOQuery;
ADOQuery2SysCode: TWideStringField;
ADOQuery2ChnCode: TWideStringField;
ADOStoredProc1constopcau: TStringField;
ADOStoredProc1LConstopcau: TStringField;
StatusBar1: TStatusBar;
BitBtn3: TBitBtn;
ADOConnection1: TADOConnection;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
StrAdress:TStringList;
{ Private declarations }
public
StrAdress:TStringList;
{ Public declarations }
end;var
Form3: TForm3;
procedure ybyzs(H:THandle;AConn:TADOConnection);cdecl; //声明DLL函数
{ 指定调用协议 }
implementation
uses QRept,uExcelTools;
{$R *.DFM}procedure ybyzs(H:THandle;AConn:TADOConnection);
var
i:integer;
begin
Application.Handle:=H;
with TForm3.Create(Application) do try//创建密码验证窗口
ADOConnection1:=AConn;
ADOConnection1.Connected:=true;
StrAdress:=TStringList.Create;
form3.checklistbox1.Items.Clear;
ADOQuery1.Connection :=ADOConnection1;
ADOQuery1.Open;
ADOQuery1.First ;
with form3.ADOQuery1 do //以下不能执行
for i:=0 to RecordCount-1 do
begin
form3.checklistbox1.Items.Add(Fields[1].AsString);
form3.StrAdress.Add(Fields[0].AsString);
Next;
end;
Memo1.Lines.Append('成功调用');
Memo1.Lines.Append(ADOConnection1.ConnectionString );
ShowModal;
finally
free;//释放资源
end;
ADOQuery2.close;
ADOQuery2.Open;//不能执
end;
procedure TForm3.BitBtn4Click(Sender: TObject);
var
i:integer;
begin
if ADOQuery1.Active then
for i:=0 to ADOQuery1.RecordCount-1 do
begin
CheckListBox1.Checked[i]:=false;
end;
end;procedure TForm3.BitBtn1Click(Sender: TObject);
var
i:integer;
SAddresscode:string;
begin
BitBtn1.Enabled :=false;
StatusBar1.SimplePanel:=true;
StatusBar1.SimpleText:='现在正查询,大约10秒左右请等待';
for i:=0 to ADOQuery1.RecordCount-1 do
begin
if CheckListBox1.Checked[i] then
begin
if SAddresscode='null' then SAddresscode:='430124'+''+StrAdress[i]+''
else SAddresscode:=SAddresscode+''+StrAdress[i] +''; //+','
end
else SAddresscode:='430124'
end;with ADOStoredProc1 do
begin
try
ADOStoredproc1.active:=false;
ADOStoredproc1.connection:=ADOConnection1;
Parameters.ParamByName('@Wid').value:=SAddresscode;
ADOStoredproc1.Prepared;
ADOStoredproc1.ExecProc;
ADOStoredproc1.active:=true;
StatusBar1.SimplePanel:=false;
StatusBar1.Panels.Items[0].Text:='查询完毕';
StatusBar1.Panels.Items[2].Text:=inttostr(ADOStoredProc1.RecordCount)+''+'条记录没有实施措';
BitBtn1.Enabled :=true;
BitBtn2.Enabled :=true;
except
StatusBar1.Panels.Items[0].Text:='查询失败';
ADOConnection1.Connected:=false;
BitBtn1.Enabled :=true;
end;
end ;end;procedure TForm3.BitBtn5Click(Sender: TObject);
begin
form3.Free;
form3.Close ;
end;procedure TForm3.BitBtn2Click(Sender: TObject);
begin
DataSetToExcel(ADOStoredProc1,5,true,'')
end;procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Form2.QuickRep1.PreviewModal;
end;procedure TForm3.FormDestroy(Sender: TObject);
begin
free;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货