• ADO SQL delete 日期条件参数


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ADOQuery1: TADOQuery;
        Memo1: TMemo;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    var
      tfdate: string; //全局变量和 sql语句里的变量相同,没有冲突的
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    const
      FROMWhereStr = ' from tbtest WHERE tfDate=:tfDate';
      ParamBuyDateTime = 'tfDate';
    begin
      ADOQuery1.SQL.Text := 'select * ' + FROMWhereStr ;
      ADOQuery1.Parameters.ParamByName(ParamBuyDateTime).Value := '2015-05-15 20:34:00'; //用参数对象,字符串或者日期时间类型都可以
      ADOQuery1.Open;
      Memo1.Lines.Add( ADOQuery1.Parameters.ParamByName(ParamBuyDateTime).Value +  '' +  IntToStr(ADOQuery1.RecordCount));
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    const
      FROMWhereStr = ' from tbtest WHERE tfDate < #2015-05-15 20:34:00#'; 
    //字符串拼接的SQL里 必须 加# 好像不行,因为时间部分 有 : Delphi 会认为是 变量
    //只有 是日期字符
    2015-05-15,就是没有时间部分 ,才能使用 #
    ParamBuyDateTime = 'tfDate';

    begin

    ADOQuery1.SQL.Text := 'select * ' + FROMWhereStr ;
    ADOQuery1.Open;
    Memo1.Lines.Add( ADOQuery1.SQL.Text + '' + IntToStr(ADOQuery1.RecordCount));

    end;
    //http://www.delphitop.com/html/shujuku/2180.html
    請參考: http://www.delphi32.com/info_facts/faq/faq_932.asp

    由於動態給定 sql command, 其中的參數並未建立, 請加入
        Query1.Params.ParseSQL(Query1.SQL.Text , True);
    試試看!!
    end.



     ADOQuery1.Parameters.Clear; //这2句 最好成对出现,有这个,必须要有下面的或者    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text := 
     ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.Text, True); //这2句 最好成对出现 ,有这个不一定要有上面的


    ADOQuery1.Parameters.Clear;
    ADOQuery1.SQL.Clear;//为何经常先有这句?

    //给Text属性直接赋值,不是也可以更新内容吗?
    ADOQuery1.SQL.Text := 'SELECT * ' + FROMWhereStr ;//FROM tbTOPMTrade WHERE BuyDateTime<:BuyDateTime';

        ShowMessage( IntToStr( ADOQuery1.Parameters.Count ));

    如果没有ADOQuery1.SQL.Clear; 

    运行,第一次点击 按钮,正常,参数个数是1,第二次点击按钮 ,参数个数是0。

     

  • 相关阅读:
    信号、事件与状态
    信号处理机制的范式分析
    三寒两倒七分饱
    血热的人吃什么好
    消息、信息与信号的区别
    Busy waiting
    事件的处理机制:单播、广播、链式路由、职责链。
    事件处理:pull与push
    响应式编程
    类、组件、人机交互
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4506987.html
Copyright © 2020-2023  润新知