제가 원하는 것은 DB에 저장된 값을 특정한 날짜것만 추려서 에디트박스로
출력하는 것입니다.
예를들면 2001년 12월 26일의 잔고를 알고싶을때 사용하는 것 입니다.
소스는 아래와 같구요,
우선 에디트 박스에서 날짜를 불러와서 그것을 조건으로 쿼리문을 돌리고
값을 찾아내는 것 입니다.
근데 이 쿼리문이 mysql에서 직접 할 때는,
select ychargesu from shin where today = '2001-12-26';
하면은 나오는데 그 '2001-12-26'을 변수로 처리하려고 하니까 잘 안됩니다.
procedure TFrame3.rbtn11Click(Sender: TObject);
var
present : Tdatetime;
begin
with form1.query1 do
begin
close;
sql.Clear;
present:=EncodeDate(StrToInt(form1.Edtty.Text),StrToIntform1.Edttm.Text),
StrToInt(form1.Edttd.Text));
sql.add('select ychargesu from shin ');
sql.add('where today = :td');
form1.query1.parambyname('td').asdatetime:=present;
form1.edt115.Text := inttostr(form1.query1.FieldByName('ychargesu')
.Asinteger);
open;
form1.label3.caption := datetostr(present);
end;
> 제가 원하는 것은 DB에 저장된 값을 특정한 날짜것만 추려서 에디트박스로
> 출력하는 것입니다.
> 예를들면 2001년 12월 26일의 잔고를 알고싶을때 사용하는 것 입니다.
>
> 소스는 아래와 같구요,
> 우선 에디트 박스에서 날짜를 불러와서 그것을 조건으로 쿼리문을 돌리고
> 값을 찾아내는 것 입니다.
>
> 근데 이 쿼리문이 mysql에서 직접 할 때는,
> select ychargesu from shin where today = '2001-12-26';
> 하면은 나오는데 그 '2001-12-26'을 변수로 처리하려고 하니까 잘 안됩니다.
>
> procedure TFrame3.rbtn11Click(Sender: TObject);
> var
> present : Tdatetime;
> begin
> with form1.query1 do
> begin
> close;
> sql.Clear;
> present:=EncodeDate(StrToInt(form1.Edtty.Text),StrToIntform1.Edttm.Text),
> StrToInt(form1.Edttd.Text));
> sql.add('select ychargesu from shin ');
> sql.add('where today = :td');
> form1.query1.parambyname('td').asdatetime:=present;
> form1.edt115.Text := inttostr(form1.query1.FieldByName('ychargesu')
> .Asinteger);
> open;
> form1.label3.caption := datetostr(present);
> end;
허접한 답변이 될지는 모르겟지만... 저두 그러한 경우를 경험해 봐서 ^^*
델파이를 사용하고 계시는 운영체제가 2000 계열 또는 98계열이냐에 따라 날짜 포맷이 틀립니다. 그래서 전 2000에서는 1999-09-09 이러한 형태이구 98에서는 99-09-09 이러한 형태입니다. 물론 쿼리를 날리면 값을 제데로 가져오는덴 무리가 있겠져?
그리구 날짜를 구분하는 '-' 땜시 잘안되더라구여... 그래서 년월일을 copy명령을 써서 잘랐다가 붙였다가 하면서 쿼리를 날렸었는데... 그렇게 해결해보심이...