• 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。

     

  • 相关阅读:
    SQL SERVER2005 的三种复制类型概述
    Autofac IoC容器基本实战【2】
    Autofac IoC容器基本使用步骤【1】
    在执行一行代码之前CLR做的68件事[The 68 things the CLR does before executing a single line of your code]
    .NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程
    使用 Entity Framework 7 进行 SQLite 的 CURD 操作
    NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
    Your Progress As A Programmer Is All Up To You
    为了效率而外包,不要因为懒惰外包
    10分钟看懂社群营销(上集)[转]
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4506987.html
Copyright © 2020-2023  润新知