⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit3.pas

📁 本人原创(delphi程序设计提高与应用)源码。《简单的数据库工作平台》其目的是教学生如何用delphi连接数据库、打开数据表
💻 PAS
字号:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, DB, DBTables,
  Buttons;

type
  TForm3 = class(TForm)
    DataSource1: TDataSource;
    Table1: TTable;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    DBselect: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    DBtabselect: TComboBox;
    DBNavigator1: TDBNavigator;
    SpeedButton1: TSpeedButton;
    Label3: TLabel;
    procedure DBselectChange(Sender: TObject);
    procedure DBtabselectChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
   procedure PrintXis(DataSet: TDataset;SName:String);
var
  Form3: TForm3;

implementation

uses UnitExcel;

{$R *.dfm}

procedure TForm3.DBselectChange(Sender: TObject);
var
I:Integer;
S:String;
begin

  I:=DBselect.ItemIndex;       //获取选中的数据库在DBselect中的索引号
  S:=DBselect.Items.Strings[I];   //通过索引号获取选中的数据库的名字
  Table1.Active:=False;
  DBtabselect.Items.Clear;
  Session.GetTableNames(s,'*.*',True, False, DBtabselect.Items);
  //获取选中的数据库中的所有表名,并存储在DBtabselect中
end;

procedure TForm3.DBtabselectChange(Sender: TObject);
begin
 with Table1 do begin
   if Table1.Active then //根据DBselect中的数据库名及DBtabselect中的数据表名设置Table1的属性
         Active:=False;
    DatabaseName:=DBselect.text;
    TableName:=DBtabselect.text;
       end;
   Table1.Active:=True;    //激活Table1
   Label3.Caption:='记录数:'+IntToStr(Table1.RecordCount); //显示Table1所含的记录总数
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Session.GetDatabaseNames(DBselect.Items); //获取BDE中所有数据库的名字,并存储在DBselect中
end;

procedure PrintXis(DataSet: TDataset;SName:String);
var
nField,I,n:integer;
BookmarkRec:TBookmark;  //定义书签类型变量BookmarkRec
begin
Screen.Cursor:=crhourglass;   //置光标为工作状态
   DataSet.DisableControls;   //屏蔽控制信息
   nField :=Dataset.FieldCount; //取数据集的字段总数
   BookmarkRec:=DataSet.GetBookmark;  //设置书签
with Formexcel do begin  //启用Formexcel的方法
  Excelopen;          //连接excel应用程序,置为可视状态
  NewXls;             //创建一个新的工作簿
  NewSheet(SName); // 添加一个的工作表
  Application.MessageBox('即将开始打印,您现在还可以对工作表作一些设置!','提示',mb_ok);
  for I:=0 to nField-1 do begin
    Wtext(Dataset.FieldDefs[I].Name,1,I+1);     //填写表头
  end;
  Dataset.First;      //将数据集的指针指向第一条记录
  n:=1;                 //初始行设为1
while not Dataset.Eof do begin   //将数据库中的数据填入报表
  n:=n+1;               //行数加1
  for I:=0 to nField-1 do begin
    Wtext(Dataset.Fields[I].AsString,n,I+1); //填写ID字段中的数据写入第n行第1列单元格
  end;
  Dataset.Next;      //将数据集的指针下移一条记录
end;
    Dataset.GotoBookmark(BookmarkRec);//数据集的指针移到书签的位置
    Dataset.FreeBookmark(BookmarkRec);//释放书签所占的缓存
  AutoCol;           //自动设置列宽
  XLSSaveAs('c:\'+SName);  //将excel文档用指定的文件名保存在C盘的根目录下
  ExcelClose;          // 关闭excel,切断连接
  DataSet.EnableControls;  //打开控制信息
end;
Screen.Cursor:=crdefault;   //光标恢复正常状态
end;

procedure TForm3.SpeedButton1Click(Sender: TObject);
//将数据集Table1的数据生成Excel文件
begin
PrintXis(Table1,Table1.TableName);
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=Cafree;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -