Q&A

  • [급질문]Query에서 Accessviolation , DBengineerror가 뜨는데.
날짜찾아가기 부분입니다...Query에서 걸리는군요...



도와주세요....



MinputDate := inttostr(inputdate);

Myear := copy(MinputDate, 1,4);

Mmonth := copy(MinputDate, 5,2);

if (Mmonth = '01') or (Mmonth = '02') or (Mmonth = '03') then

begin

Myear := Inttostr(StrtoInt(Myear)-1);

Pmonth := '12';

end

else if (Mmonth = '04') or (Mmonth = '05') or (Mmonth = '06') then

Pmonth := '03'

else if (Mmonth = '07') or (Mmonth = '08') or (Mmonth = '09') then

Pmonth := '06'

else if (Mmonth = '10') or (Mmonth = '11') or (Mmonth = '12') then

Pmonth := '09';



MYmon := (copy(Myear,1,4) + copy(Pmonth,1,2));



//문제의 부분은 여기서 부터!!!

with Query1 do begin

close;

sql.clear;

sql.add('select * from SAOCAPM');

//여기서는 Date라는 것에 문제가 있는 거 같은데...

sql.add('where RYYMM =: Date');

parambyname('Date').asinteger := strtoint(MYmon);

open;

3  COMMENTS
  • Profile
    하눌 2001.02.21 19:23
    아이리스 wrote:

    > 날짜찾아가기 부분입니다...Query에서 걸리는군요...

    >

    > 도와주세요....

    >

    > MinputDate := inttostr(inputdate);

    > Myear := copy(MinputDate, 1,4);

    > Mmonth := copy(MinputDate, 5,2);

    > if (Mmonth = '01') or (Mmonth = '02') or (Mmonth = '03') then

    > begin

    > Myear := Inttostr(StrtoInt(Myear)-1);

    > Pmonth := '12';

    > end

    > else if (Mmonth = '04') or (Mmonth = '05') or (Mmonth = '06') then

    > Pmonth := '03'

    > else if (Mmonth = '07') or (Mmonth = '08') or (Mmonth = '09') then

    > Pmonth := '06'

    > else if (Mmonth = '10') or (Mmonth = '11') or (Mmonth = '12') then

    > Pmonth := '09';

    >

    > MYmon := (copy(Myear,1,4) + copy(Pmonth,1,2));

    >

    > //문제의 부분은 여기서 부터!!!

    > with Query1 do begin

    > close;

    > sql.clear;

    > sql.add('select * from SAOCAPM');

    > //여기서는 Date라는 것에 문제가 있는 거 같은데...

    > sql.add('where RYYMM =: Date');

    > parambyname('Date').asinteger := strtoint(MYmon);

    > open;



    sql.add('where RYYMM = .. 이부분에서 ":"콜론 하고 Date사이에 공백이 없어야 하구요

    가능하면 Date같은 예약어 종류는 피하시는것이 좋을듯 싶네요



    sql.add('where RYYMM = :pDate ');

    parambyname('pDate').AsInteger = strtoint(MYmon);



    도움이 되시면 조켄는데...

  • Profile
    아이리스 2001.02.21 20:56
    parambyname('pDate').AsInteger = strtoint(MYmon);

    여기서 걸리네요...



    ':=' expected but '=' found 이렇게 걸리네요...



    QRLabel9.caption := copy(fieldbyname('RYYMM').asstring, 1, 6);



    이렇게 하면 capton에 그 레코드만 찾아서 올려줄까요...해당하는 한 레코드만...



    어떻게 해야 되나요..

  • Profile
    아폴론 2001.02.21 23:15
    아이리스 wrote:

    > parambyname('pDate').AsInteger = strtoint(MYmon);

    > 여기서 걸리네요...

    >

    > ':=' expected but '=' found 이렇게 걸리네요...

    >

    > QRLabel9.caption := copy(fieldbyname('RYYMM').asstring, 1, 6);

    >

    > 이렇게 하면 capton에 그 레코드만 찾아서 올려줄까요...해당하는 한 레코드만...

    >

    > 어떻게 해야 되나요..



    바로 재문의가 없어서 잘되는줄 알았어요 그래서 7시반쯤 저녘노을을 거두었지요 밤의 신과 터치..

    잘 되어야 할텐데..



    MYmon := (copy(Myear,1,4) + copy(Pmonth,1,2));



    myear, pmonth 가 각각 4자리 2자리니까

    MYmon := Myear+ Pmonth; 이렇게 해도 무방합니다.



    //에러나는 부분



    with Query1 do begin

    close;

    sql.clear;

    sql.add('select * from SAOCAPM');

    sql.add('where RYYMM = :Date');

    parambyname('Date').asinteger := strtoint(MYmon);

    open;

    // QRLabel9.caption := copy(fieldbyname('RYYMM').asstring, 1, 6);

    end;



    에러부분을 다음과 같이 수정해보세요

    위의 =: date 를 = :date 요렇게... 같다는 부등호 = 와 파라미터를 뜻하는 : 는 별개..

    QRLabel9.caption := copy(fieldbyname('RYYMM').asinteger, 1, 6); 이렇게 해도 안되면



    mryymm := inttostr(fieldbyname('RYYMM').asinteger);

    QRLabel9.caption := mryymm;

    이렇게 해보세요.