📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, ComCtrls, ToolWin, DB, DBTables, StdCtrls,
Grids, DBGrids, Buttons;
type
TForm2 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
SBRunSQL: TSpeedButton;
Panel2: TPanel;
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
DBMemo1: TDBMemo;
DBGrid2: TDBGrid;
Query1: TQuery;
DataSource2: TDataSource;
SpeedButton1: TSpeedButton;
Label1: TLabel;
procedure Table1AfterInsert(DataSet: TDataSet);
procedure Table1BeforeOpen(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SBRunSQLClick(Sender: TObject);
procedure TabSheet2Enter(Sender: TObject);
procedure TabSheet1Enter(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure MY_StrToStrs(const S:String;var ST:Tstrings);
var
Form2: TForm2;
implementation
uses
UnitExcel,Unit3;
{$R *.dfm}
procedure TForm2.Table1AfterInsert(DataSet: TDataSet);
//在执行插入新纪录的操作后,将这条记录的“类型”字段赋值
begin
DataSet.FieldByName('类型').Value:=Caption;
end;
procedure TForm2.Table1BeforeOpen(DataSet: TDataSet);
//Form2的Caption将
begin
Table1.Filter:='类型='''+Caption+''''; //设置筛选条件
Table1.Filtered:=True; //设置筛选状态
if Caption<>'查询' then
TabSheet2.TabVisible:=False; //如果不是从查询菜单进入的,将TabSheet2置为不可视
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TForm2.SBRunSQLClick(Sender: TObject);
//运行SQL命令
var
SSQL,SSJKM:String;
ST:Tstrings;
I:Integer;
begin
SSJKM:=Table1.FieldByname('数据库名').AsString;
SSQL:=Table1.FieldByname('设置SQL').AsString;
if (Length(SSQL)=0) or (Length(SSJKM)=0) then exit;
Query1.Close; //要先关闭后再重新设置参数
Query1.DatabaseName:=SSJKM; //设置Query1的数据库别名
MY_StrToStrs(SSQL,ST); //将Memo文本字符串转换成Tstrings
Query1.SQL.Clear;//清空原有的SQL命令
for I:=0 to ST.Count-1 do
Query1.SQL.Add(ST.Strings[I]); //添加SQL命令
if Table1.fieldByname('类型').asstring='查询' then begin
Query1.Active:=True ; //得到查询的数据
Label1.Caption:='记录数:'+IntToStr(Query1.RecordCount); //显示Query1所含的记录总数
end else Query1.ExecSQL; //对数据表执行插入、修改或删除的命令
end;
procedure TForm2.TabSheet1Enter(Sender: TObject);
//点击TabSheet1页时DBNavigator1连接DataSource1,即和Table1关联
begin
DBNavigator1.DataSource:=DataSource1;
end;
procedure TForm2.TabSheet2Enter(Sender: TObject);
//点击TabSheet2页时DBNavigator1连接DataSource2,即和Query1关联
begin
DBNavigator1.DataSource:=DataSource2;
end;
procedure MY_StrToStrs(const S:String;var ST:Tstrings);
//将Memo文本字符串转换成Tstrings
var
n:integer;
S1,S2:String;
const
C=CHR(13);
begin
ST:=TStringlist.Create;
S1:=S;
while True do begin
n:=Pos(C,S1);
if n=0 then begin
if Length(S1)>0 then begin
ST.Add(S1);
end;
Break;
end;
S2:=copy(S1,1,n-1);
ST.Add(S2);
S1:=copy(S1,n+2,100000);
end;
end;
procedure TForm2.SpeedButton1Click(Sender: TObject);
//将数据集Query1的数据生成Excel文件
begin
PrintXis(Query1,Table1.FieldByName('说明').AsString);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -