unit USQLConnect;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Dialogs, DBXpress, FMTBcd, StdCtrls, Mask, DBCtrls,
DB, SqlExpr,ExtCtrls,Buttons;
type
TTouSForm = class(TForm)
//窗体使用组件说明
SQLConnection1: TSQLConnection;
//连接组件
DataSource1: TDataSource;
SQLQuery1: TSQLQuery;
SQLMonitor1: TSQLMonitor;
//监视连接组件与远程数据库服务器之间通信的组件
DBNavigator1: TDBNavigator;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
DBMemo1: TDBMemo;
Label5: TLabel;
DBEdit4: TDBEdit;
Label6: TLabel;
DBEdit5: TDBEdit;
Label7: TLabel;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Label8: TLabel;
Label9: TLabel;
DBEdit8: TDBEdit;
Label10: TLabel;
ExitBtn: TBitBtn;
DBMemo2: TDBMemo;
BitBtn3: TBitBtn;
YearComboBox: TComboBox;
BitBtn2: TBitBtn;
MonthComboBox: TComboBox;
procedure FormCreate(Sender: TObject);
//定义事件处理过程
procedure ExitBtnClick(Sender: TObject);
procedure YearComboBoxChange(Sender: TObject);
procedure MonthComboBoxChange(Sender: TObject);
private
{ Private declarations }
year1,date1:string;
month1,month2:string;
//定义全局变量
public
{ Public declarations }
procedure Comm_Query;
//定义非事件处理过程
end;
var
TouSForm: TTouSForm;
implementation
{$R *.dfm}
procedure TTouSForm.FormCreate(Sender: TObject);
var i:integer;
Year, Month, Day:Word;
//定义获取年月日的变量
Present:TDateTime;
begin
SQLQuery1.Close;
SQLConnection1.Connected:=false;
//确保与数据库的连接状态
SQLConnection1.Connected:=true;
//打开与远程数据库服务器的连接
SQLQuery1.sql.clear; {清除原查询语句}
{在程序执行时,生成SQL语句,它从产品投诉表CPTU中获取有关信息}
Present:= Now;
//获取系统时间
DecodeDate(Present, Year, Month, Day);
//拆分系统年月日
YearComboBox.items.clear;
YearComboBox.itemindex:=0;
YearComboBox.text:=inttostr(Year);
//获取当前年份
year1:=YearComboBox.text;
for i:=1 to 5 do
begin
YearComboBox.items.add(inttostr(year));
year:=year-1;
end;
month1:='01-01';
//设置初始的日期时间段
month2:='12-31';
Comm_Query;
//调用动态生成SQL语句,查询数据过程
end;
procedure TTouSForm.Comm_Query;
//动态生成查询条件,完成从远程数据库服务器中获取数据
begin
SQLQuery1.Close;
SQLQuery1.sql.clear;
date1:=''''+year1+'-'+month1+''' and '''+year1+'-'+month2+'''';
SQLQuery1.sql.add('select * from cpts where tsrq between '+date1);
//根据用户的选择动态生成SELECT语句
SQLQuery1.open;
//打开查询,从服务器获取数据
end;
procedure TTouSForm.ExitBtnClick(Sender: TObject);
begin
SQLQuery1.Close;
//关闭查询
SQLConnection1.Connected:=false;
//关闭与远程数据库服务器的连接
TouSForm.Close;
//关闭运行的窗体
end;
procedure TTouSForm.YearComboBoxChange(Sender: TObject);
//选择顾客投诉年份的处理过程
begin
year1:=YearComboBox.text;
//获取选择的年份
Comm_Query;
end;
procedure TTouSForm.MonthComboBoxChange(Sender: TObject);
//选择顾客投诉月份的处理过程,根据选择的月份设置查询的开始和结束日期
begin
if MonthComboBox.text='一月' then
begin
month1:='01-01';
month2:='01-31';
end;
if MonthComboBox.text='二月' then
begin
month1:='02-01';
month2:='02-28';
end;
if MonthComboBox.text='三月' then
begin
month1:='03-01';
month2:='03-31';
end;
if MonthComboBox.text='四月' then
begin
month1:='04-01';
month2:='04-30';
end;
if MonthComboBox.text='五月' then
begin
month1:='05-01';
month2:='05-31';
end;
if MonthComboBox.text='六月' then
begin
month1:='06-01';
month2:='06-30';
end;
//为减少代码,从7月到12月略去,
if MonthComboBox.text='上半年' then
begin
month1:='01-01';
month2:='06-30';
end;
if MonthComboBox.text='下半年' then
begin
month1:='07-01';
month2:='12-31';
end;
if MonthComboBox.text='全年' then
begin
month1:='01-01';
month2:='12-31';
end;
Comm_Query;
end;
end.
使用dbExpress方式连接Oracle数据库
最新推荐文章于 2023-10-06 10:08:49 发布
本文介绍了一个基于Delphi的数据库查询应用程序实例,通过动态生成SQL语句实现按年份和月份筛选远程数据库中的产品投诉记录。
1284

被折叠的 条评论
为什么被折叠?



