Q&A

  • mysql에서 에디트박스로 출력이 안됩니다....
제가 원하는 것은 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;

2  COMMENTS
  • Profile
    앙리앙리 2001.12.27 19:14
    최은규 wrote:

    > 제가 원하는 것은 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명령을 써서 잘랐다가 붙였다가 하면서 쿼리를 날렸었는데... 그렇게 해결해보심이...

  • Profile
    ^-_-^ 2001.12.27 07:05
    yo`



    음냥...코딩이 좀 이상하군요...



    > form1.edt115.Text := inttostr(form1.query1.FieldByName('ychargesu')

    > .Asinteger);



    아직 form1.query1 가 open이 되지 않은 상태라서 값이 안나옵니다. 에러 안나요??

    그거 빼고는 별다른거 없는거 같은데 present 변수에 날짜가 제대로 들어오겟죠??



    그람..휘릭~



    bLue bLood.



    최은규 wrote:

    > 제가 원하는 것은 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;