使用dbExpress方式连接Oracle数据库

    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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值