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.