procedure TForm1.Button1Click(Sender: TObject);
begin
With Dm.query1 do // 데이타 모듈에 쿼리가 있으면.. 물론 form2의 DBgrid
//가 이 dm.guery1과 연결되어 있어야 겠지요..
begin
close;
sql.clear;
sql.add('Select * from where Dondate >= :dondate1 and Dondate <= :dondate');
//날짜 필드가 dondate라고 가정
paramByname('dondate1').asdatetime := StrToDate(edit1.text);
paramByname('dondate2').asdatetime := StrToDate(edit2.text);
open;
end;
form2.show;
뭐 간단하게 이렇게 하면 form2.dbgrid에 조회한 자료를 출력될것입니다..
합계는
With Dm.query1 do // 데이타 모듈에 쿼리가 있으면.. 물론 form2의 DBgrid
//가 이 dm.guery1과 연결되어 있어야 겠지요..
begin
close;
sql.clear;
sql.add('Select sum(don) sdon from where
sql.add('Dondate >= :dondate1 and Dondate <= :dondate');
//날짜 필드가 dondate라고 가정
paramByname('dondate1').asdatetime := StrToDate(edit1.text);
paramByname('dondate2').asdatetime := StrToDate(edit2.text);
open;
form2.edit3.text := inttostr(fieldbyname(sdon).asinteger);
end;
form2.show;
end;
`````````````````````````````
저는 날짜 필드이름을 (day) 나머진 사실 금액이 아니라 용량(예:100.000g이어서그냥 100.000만 사용했음, 소수자리사용)이라서 그대로(yongyang)이란 필드이름을 사용했습니다. 그리고 디비를 만들때 날짜와 용량을 전부 그냥 A데이타형을 사용해서 만들었습니다.
그런에 콰리을 사용해서 해보니 자꾸에러가 납니다.
저는 모두 자동폼으로 만들었거든요, 이것때문일까요?
그리고 이런
invaild use of keyword
token: day>=? 에러가 나타납니다.
하늘맥님, 근데 SQL에서
select *from 필드이름
where day:=dondate1
where day:=dondate2
이렇게 적어야 하나요?
하늘맥님이 주신 것을 그대로 사용하니 잘안되어서 저 나름대로 적어서 사용했는데 저도 초보라서인지 잘안되네요.흑흑.
그리고 하늘맥님
sql.add('select sum(don) sdon from where
sql.add(dondate>=:dondate1 and dondate<=:dondate2');
과
form2.edit3.text:=inttostr(fieldbyname(sdon).asinteger);
이 부분을 잘모르겠어요. 다시한번 부탁드립니다. 설명 좀 해주세요.
빠른시일에 다시 연락 좀 주세요. 저 사실 이글 띄우고 계속 컴퓨터앞에만 있을 거예요.
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> With Dm.query1 do // 데이타 모듈에 쿼리가 있으면.. 물론 form2의 DBgrid
> //가 이 dm.guery1과 연결되어 있어야 겠지요..
> begin
> close;
> sql.clear;
> sql.add('Select * from where Dondate >= :dondate1 and Dondate <= :dondate');
> //날짜 필드가 dondate라고 가정
> paramByname('dondate1').asdatetime := StrToDate(edit1.text);
> paramByname('dondate2').asdatetime := StrToDate(edit2.text);
> open;
> end;
> form2.show;
> 뭐 간단하게 이렇게 하면 form2.dbgrid에 조회한 자료를 출력될것입니다..
> 합계는
> With Dm.query1 do // 데이타 모듈에 쿼리가 있으면.. 물론 form2의 DBgrid
> //가 이 dm.guery1과 연결되어 있어야 겠지요..
> begin
> close;
> sql.clear;
> sql.add('Select sum(don) sdon from where
> sql.add('Dondate >= :dondate1 and Dondate <= :dondate');
> //날짜 필드가 dondate라고 가정
> paramByname('dondate1').asdatetime := StrToDate(edit1.text);
> paramByname('dondate2').asdatetime := StrToDate(edit2.text);
> open;
>
> form2.edit3.text := inttostr(fieldbyname(sdon).asinteger);
> end;
> form2.show;
>
> end;
> `````````````````````````````
> 저는 날짜 필드이름을 (day) 나머진 사실 금액이 아니라 용량(예:100.000g이어서그냥 100.000만 사용했음, 소수자리사용)이라서 그대로(yongyang)이란 필드이름을 사용했습니다. 그리고 디비를 만들때 날짜와 용량을 전부 그냥 A데이타형을 사용해서 만들었습니다.
> 그런에 콰리을 사용해서 해보니 자꾸에러가 납니다.
> 저는 모두 자동폼으로 만들었거든요, 이것때문일까요?
> 그리고 이런
> invaild use of keyword
> token: day>=? 에러가 나타납니다.
> 하늘맥님, 근데 SQL에서
> select *from 필드이름
> where day:=dondate1
> where day:=dondate2
> 이렇게 적어야 하나요?
> 하늘맥님이 주신 것을 그대로 사용하니 잘안되어서 저 나름대로 적어서 사용했는데 저도 초보라서인지 잘안되네요.흑흑.
> 그리고 하늘맥님
> sql.add('select sum(don) sdon from where
> sql.add(dondate>=:dondate1 and dondate<=:dondate2');
> 과
> form2.edit3.text:=inttostr(fieldbyname(sdon).asinteger);
> 이 부분을 잘모르겠어요. 다시한번 부탁드립니다. 설명 좀 해주세요.
> 빠른시일에 다시 연락 좀 주세요. 저 사실 이글 띄우고 계속 컴퓨터앞에만 있을 거예요.
*^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^**^.^*
> invaild use of keyword
> token: day>=? 에러가 나타납니다.
이에러는 day sql의 예약어 입니다. 필드이름을 바꾸세요. dbday로 바꾸어 설명하지요.
> select *from 필드이름
> where dbday = dondate1
> where dbday = dondate2
요렇게 바꾸세요. 그리고 A := 0 는 아시다시피 A 라는 변수에 0 이라는 값을 옮겨 입력하는 것이고요. 위는 문장는 Sql 문장의 where 다음에 오는 것는 옮겨 입력하라는 의미가 올수가 없고요, 비교문장입니다. 그러니까 '=' 으로 사용하는게 맞지요.
> sql.add('select sum(don) sdon from where
> sql.add(dondate>=:dondate1 and dondate<=:dondate2');
위문장은 sum(don) 은 don 필드의 합계(sum: sql의 합계를 구하는 함수)를 구한것을 sdon 이라는 필드이름으로 사용하는 것이지요.
그리고 두번째 문장은 dondate 가 dondate1 보다 크거난 같고 dondate 가 dondate2 보다작거나 같으면.....
from 뒤에는 db table 이름이 없네요.
sql.add('select sum(don) sdon from aaa);//aaa: table naem
그리고
sql.add(where dondate>=:dondate1 and dondate<=:dondate2'); 또는
sql.add(where dondate between :dondate1 and :dondate2'); 로 사용하시면 되지요.
> form2.edit3.text:=inttostr(fieldbyname(sdon).asinteger);
위의 문장은 form2의 edit3.txt에 위에서 don의 합계의 필드명을 sdon 으로정해주었으니까 edit3.txt에는 don의 합계가 옮겨 지겠지요.