데이타타임피크를 두개 사용해서
예를들면 6월 1일부터 7월1일 한달 사이에 자료들을
디비 그리드에 보여주게 하는 방법
이게 메인 질문인데여
DBlookupcombobox를 사용해서 거기에 들어있는 항목을 선택하면
날짜는 데이타타임피크에나오게하고 자료들은 디비그리드에 나오게
방법아시면 좀 부탁합니당..
즐코..하십시요..
제가 짠 소스거던여...보시고 좀 부낙합니다 즐코
unit gur_maeip_date1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, Db, DBTables, DBCtrls, Mask,
Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
dtp1: TDateTimePicker;
Panel2: TPanel;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Query1: TQuery;
DataSource1: TDataSource;
PrintDialog1: TPrintDialog;
Label3: TLabel;
Table1: TTable;
DataSource2: TDataSource;
Panel4: TPanel;
Panel3: TPanel;
Print: TBitBtn;
Exit: TBitBtn;
Cash: TBitBtn;
Edt_1: TEdit;
dbc_1: TDBLookupComboBox;
Sum_Acount: TBitBtn;
DateTimePicker1: TDateTimePicker;
Database1: TDatabase;
procedure dtp1CloseUp(Sender: TObject);
procedure ExitClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure PrintClick(Sender: TObject);
procedure CashClick(Sender: TObject);
procedure Sum_AcountClick(Sender: TObject);
procedure dtp2CloseUp(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.dtp1CloseUp(Sender: TObject);
begin
with query1 do
begin
close;
sql.clear;
sql.add('select * from gur_maeip');
sql.add('where mdate =:insert_mdate');
parambyname('insert_mdate').asstring:=formatdatetime('yyyy-mm-dd',dtp1.date);
Query1.open;
end;
end;
procedure TForm1.ExitClick(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
{with updatequery1 do begin
sql.clear;
sql.add('update set gur_maeip values(');
showmessage(sql.text);
execsql;
selectquery1.refresh;
end; }
end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
with dbgrid1 do begin
if selectedfield.fieldname = 'suryng' then begin
datasource1.dataset.Edit;
query1.FieldByName('gumaek').value:=
query1.FieldByName('danga').value *
query1.FieldByName('suryng').value;
datasource1.dataset.post;
datasource.dataset.next;
end else begin
if fieldcount -1>=selectedfield.index + 1 then
selectedfield := fields[selectedfield.index+1];
end;
end;
end;
procedure TForm1.PrintClick(Sender: TObject);
begin
printdialog1.Execute;
end;
procedure TForm1.CashClick(Sender: TObject);
var
danga,suryng,gumaek : integer;
begin
with query1 do begin
sql.Clear;
close;
Sql.Add(' '''+inttostr(danga)+''' , ');
Sql.Add(' '''+inttostr(suryng)+''' , ');
sql.add('(gumaek.text := IntToStr(StrToInt(danga.Text).asstring + (StrToInt(suryng.text).asstring)');//굳이 그리드에서 계산을 안해도 되죠^^
Sql.Add(' '''+inttostr(gumaek)+''', ');//계산된 값이 들어가는 필드가있다고 할때죠^^
Sql.Add(')');
showmessage(sql.text); //이부분은 Sql문에 어떻게 들어가는지 알려주죠? 나중에 빼세요^^
execsql;// 이부분이 중요합니다. 위의 S
end;
end;
procedure TForm1.Sum_AcountClick(Sender: TObject);
var
sum_Acount: integer;
begin
with query1 do
begin
close;
sql.Clear;
sql.add('select* from gur_maeip');
open;
first;
sum_Acount := 0;
while not EOF do
begin
sum_Acount := sum_Acount + fieldbyname('gumaek').asinteger;
edt_1.text := intTostr(sum_Acount);
next;
end;
end;
end;
procedure TForm1.dtp2CloseUp(Sender: TObject);
begin
with query1 do
begin
close;
sql.clear;
sql.add('select * from gur_maeip');
sql.add('where mdate =:insert_mdate');
parambyname('insert_mdate').asstring:=asdatetime('yyyy-mm-dd',dtp2.date);
Query1.open;
end;
end;
end.