Q&A

  • 이 쿼리가 왜 타입을 변경할수 없다고 하지요??
디비는 파라독스로 만들었구요. lose필드의 타입은 alpha 입니다. lose필드의 값을 읽어서 정수형으로 바꾸어서 다시 스트링으로 바꾸어서 저장하려고 하는데 제가 볼때는 이 프로시져에 에러가 없어야 하는데 좀 바주세요.. 아니면 lose필드를 number형으로 바꾸어서 실행이 되는 쿼리도 좋구요.. 아무리 보아도 작동이 되는 쿼리인데...



procedure Tform1.lose(id:string);

var

lose:integer;

begin

with query1 do begin

close;

sql.clear;

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

sql.add('where id = :f1 ');

parambyname('f1').asstring:=id;

if prepared = false then prepare;

end;

query1.open;

lose:=strtoint(query1.fieldbyname('lose').value);

inc(lose);

with query1 do begin

close;

sql.clear;

sql.add('update connuser ');

sql.add('set lose = :f1 ');

sql.add('where id = :f2');

parambyname('f1').asstring:=inttostr(lose);

parambyname('f2').asstring:=id;

if prepared = false then prepare;

end;

query1.ExecSQL;

query1.Close;

table2.Refresh;

end;

3  COMMENTS
  • Profile
    까마귀 2000.11.24 04:38
    chaple wrote:

    > 디비는 파라독스로 만들었구요. lose필드의 타입은 alpha 입니다. lose필드의 값을 읽어서 정수형으로 바꾸어서 다시 스트링으로 바꾸어서 저장하려고 하는데 제가 볼때는 이 프로시져에 에러가 없어야 하는데 좀 바주세요.. 아니면 lose필드를 number형으로 바꾸어서 실행이 되는 쿼리도 좋구요.. 아무리 보아도 작동이 되는 쿼리인데...

    >

    > procedure Tform1.lose(id:string);

    > var

    > lose:integer;

    > begin

    > with query1 do begin

    > close;

    > sql.clear;

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

    > sql.add('where id = :f1 ');

    > parambyname('f1').asstring:=id;

    > if prepared = false then prepare;

    > end;

    > query1.open;

    > lose:=strtoint(query1.fieldbyname('lose').value);

    > inc(lose);

    > with query1 do begin

    > close;

    > sql.clear;

    > sql.add('update connuser ');

    > sql.add('set lose = :f1 ');

    > sql.add('where id = :f2');

    > parambyname('f1').asstring:=inttostr(lose);

    > parambyname('f2').asstring:=id;

    > if prepared = false then prepare;

    > end;

    > query1.ExecSQL;

    > query1.Close;

    > table2.Refresh;

    > end;



    안녕하세요. 까마귀입니다.



    parameter로 들어가는 id 라는 값은 어디서 온겁니까?

    변수 선언도 않되어 있던데...

    정확히 어디서 에러가 걸렸는지 말씀해 주세요.







    위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    volf 2000.11.24 04:45
    id의 타입은 스트링입니다. 다른 프로시져가 lose프로시져를 호출하면서 id값을 넘겨주는 겁니다. 이렇게 하면 안되나여??

  • Profile
    까마귀 2000.11.24 04:55
    volf wrote:

    > id의 타입은 스트링입니다. 다른 프로시져가 lose프로시져를 호출하면서 id값을 넘겨주는 겁니다. 이렇게 하면 안되나여??



    안녕하세요. 까마귀입니다.



    실수로 인수를 보지를 못했네요.

    당근 그런식으로 호출하면 됩니다.

    죄송해여.. ^^;

    이상하네, 그러면 에러가 날 이유가 없는것 같은데요.

    다시 차근 차근 살펴봐야 겠네요.



    참 인수로 넘어오는 id 라는 변수에 들어가는 값이 혹시 한문자가 아닌가요?

    예를 들어서 'a' 라든가...

    String 형으로 선언을 했는데, 위처럼 한문자('a')가 들어오면

    Invalin variant type Conversion 이라는 에러가 나거든요.







    위대한 단군혼이 살아있는 나라.... 대한민국.