BMS-HOSxP Community

HOSxP => Delphi / Pascal => ข้อความที่เริ่มโดย: apisak ที่ มกราคม 03, 2013, 16:03:12 PM

หัวข้อ: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: apisak ที่ มกราคม 03, 2013, 16:03:12 PM
unit Udate;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
  cxLookAndFeelPainters, cxContainer, cxEdit, dxSkinsCore, dxSkinBlack,
  dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom,
  dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
  dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinPumpkin, dxSkinSeven,
  dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
  dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld,
  dxSkinsDefaultPainters, dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint,
  dxSkinXmas2008Blue, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar,
  cxDBEdit, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Data.DB, DBAccess, MyAccess,
  MemDS;

type
  TForm1 = class(TForm)
    MyConnection1: TMyConnection;
    MyQuery1: TMyQuery;
    MyDataSource1: TMyDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    cxDBDateEdit1: TcxDBDateEdit;
    cxDBDateEdit2: TcxDBDateEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MyQuery1.sql.text:=' select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat where vstdate between "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" and "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" ';
MyQuery1.open;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: nongnine ที่ มกราคม 06, 2013, 12:46:14 PM
ถามสั้นไปนิด ไม่สื่อเท่าไรว่าต้องการให้แสดงข้อมูลก็
ตรง หน้าออกแบบ
MyDataSource1 กำหนด dataset = MyQuery1
DBGrid1 กำหนด datasource = MyDataSource1

แค่นี้ก็จะแสดงผลตามคิวรี่แล้ว

หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: apisak ที่ มกราคม 07, 2013, 10:56:12 AM
ถามสั้นไปนิด ไม่สื่อเท่าไรว่าต้องการให้แสดงข้อมูลก็
ตรง หน้าออกแบบ
MyDataSource1 กำหนด dataset = MyQuery1
DBGrid1 กำหนด datasource = MyDataSource1

แค่นี้ก็จะแสดงผลตามคิวรี่แล้ว




คือ ต้องการ ให้ DBGrid  แสดงข้อมูลตามช่วงวัน  cxDBDateEdit1 / cxDBDateEdit2 (ตอนนี้กด Run ก็แสดงข้อมูลเลยครับ)
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: usa0823 ที่ มกราคม 07, 2013, 11:56:46 AM
procedure TForm1.FormCreate(Sender: TObject);
begin
MyQuery1.sql.text:=' select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat limit 0 ';
MyQuery1.open;
end;
 ;D
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: apisak ที่ มกราคม 07, 2013, 13:36:08 PM
procedure TForm1.FormCreate(Sender: TObject);
begin
MyQuery1.sql.text:=' select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat limit 0 ';
MyQuery1.open;
end;
 ;D

ขอบคุณครับ
แก้ที่ MyQuery1 ก่อน select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat limit 0

MyQuery1.sql.text:=' select  * from vn_stat where vstdate between "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" and "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" ';
MyQuery1.open;

cxDBDateEdit // กำหนด DataBinding  // datasurce  , dataset

//มีตัวอย่างการ ดัก error เปล่า กรณีไม่มีการเลือกวันที่
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: Bond_007 ที่ มกราคม 07, 2013, 14:02:37 PM
แก้แบบให้เวลาเปิด form แล้วให้แสดงวันที่ปัจจุบันได้ป่าวครับ
เช่น
cxDBDateEdit1.date := now();
procedure TForm1.FormCreate(Sender: TObject);
begin
MyQuery1.sql.text:=' select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat limit 0 ';
MyQuery1.open;
end;
 ;D

ขอบคุณครับ
แก้ที่ MyQuery1 ก่อน select vn_stat.vn,vn_stat.hn,vn_stat.pdx,vn_stat.vstdate from vn_stat limit 0

MyQuery1.sql.text:=' select  * from vn_stat where vstdate between "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" and "'+formatdatetime('yyyy-mm-dd',cxDBDateEdit1.date)+'" ';
MyQuery1.open;

cxDBDateEdit // กำหนด DataBinding  // datasurce  , dataset

//มีตัวอย่างการ ดัก error เปล่า กรณีไม่มีการเลือกวันที่

หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: usa0823 ที่ มกราคม 07, 2013, 15:48:33 PM
if cxDBDateEdit1.date=null then
begin

xxxxxxxx;

end else
begin

xxxxxxxxx;

end;
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: apisak ที่ มกราคม 07, 2013, 16:01:59 PM
if cxDBDateEdit1.date=null then
begin

xxxxxxxx;

end else
begin

xxxxxxxxx;

end;

ขอบคุณครับ แบบนี้แหละที่ต้องการ
แบบนี้ หลัง else ผมก็สั่ง show message ได้เลยที่เปล่าครับ
หัวข้อ: Re: สอบถามวิธีการกำหนด TDBGRID แสดงข้อมูลตามวันที่ ที่เลือก
เริ่มหัวข้อโดย: usa0823 ที่ มกราคม 07, 2013, 16:35:14 PM
if (cxDBDateEdit1.date=null) or (cxDBDateEdit2.date=null) then
begin

ถ้าไม่ใส่ค่าวันที่ show message เตือน;

end else
begin

ถ้าใส่วันที่  สั่งรัน sql;

end;