Q&A

  • SQL문에 변수를 넣었더니 이상해져요...


select aaa, bbb, ccc from table



을 넣는다고 가정하고....



SQL.Add('select aaa, bbb, ccc from table);



하면 이상이 없거던요....



그리드에



aaa bbb ccc 이렇게 나오지요

111 111 111 <- 제대로 된 데이타

그런데



field_aaa := 'aaa, bbb, ccc ';

SQL.add('select '''+field_aaa+''' ');

라고 넣으면



필드는

'aaa,bb

aaa, bbb, ccc <- 데이타가 들어감



왜 그렇습니까.



원인을 알고 싶습니다.



SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??

5  COMMENTS
  • Profile
    이재식 2000.01.22 00:03
    허진 wrote:

    >

    > select aaa, bbb, ccc from table

    >

    > 을 넣는다고 가정하고....

    >

    > SQL.Add('select aaa, bbb, ccc from table);

    >

    > 하면 이상이 없거던요....

    >

    > 그리드에

    >

    > aaa bbb ccc 이렇게 나오지요

    > 111 111 111 <- 제대로 된 데이타

    > 그런데

    >

    > field_aaa := 'aaa, bbb, ccc ';

    > SQL.add('select '''+field_aaa+''' ');

    > 라고 넣으면

    >

    > 필드는

    > 'aaa,bb

    > aaa, bbb, ccc <- 데이타가 들어감

    >

    > 왜 그렇습니까.

    >

    > 원인을 알고 싶습니다.

    >

    > SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??





    이재식 Wrote :

    안녕하세요?



    일전에 제 경험으론 안되는 것으로 알고 있습니다.

    가령, sql.add('update 테이블명');

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

    parambyname ('f1').asString = '실제필드명' ;



    이렇게 하니까 인식을 못하더라구요.



    위 경우도 비슷한 것이라고 생각되는데...



  • Profile
    유효종 2000.01.22 01:22
    이재식 wrote:

    > 허진 wrote:

    > >

    > > select aaa, bbb, ccc from table

    > >

    > > 을 넣는다고 가정하고....

    > >

    > > SQL.Add('select aaa, bbb, ccc from table);

    > >

    > > 하면 이상이 없거던요....

    > >

    > > 그리드에

    > >

    > > aaa bbb ccc 이렇게 나오지요

    > > 111 111 111 <- 제대로 된 데이타

    > > 그런데

    > >

    > > field_aaa := 'aaa, bbb, ccc ';

    > > SQL.add('select '''+field_aaa+''' ');

    > > 라고 넣으면

    > >

    > > 필드는

    > > 'aaa,bb

    > > aaa, bbb, ccc <- 데이타가 들어감

    > >

    > > 왜 그렇습니까.

    > >

    > > 원인을 알고 싶습니다.

    > >

    > > SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??

    >

    >

    > 이재식 Wrote :

    > 안녕하세요?

    >

    > 일전에 제 경험으론 안되는 것으로 알고 있습니다.

    > 가령, sql.add('update 테이블명');

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

    > parambyname ('f1').asString = '실제필드명' ;

    >

    > 이렇게 하니까 인식을 못하더라구요.

    >

    > 위 경우도 비슷한 것이라고 생각되는데...

    >



    당연하죠 안되는게



    SQL.Add('select aaa, bbb, ccc from table);

    하고

    field_aaa := 'aaa, bbb, ccc ';

    SQL.add('select '''+field_aaa+''' ');

    는 확실히 다르죠



    위에건

    select aaa,bbb,ccc from table

    이니까 제데로 되어있다면 (Field Name) 제데로 나올테고

    뒤에건

    select "aaa,bbb,ccc" from table



    이런거니깐

    당연히 aaa,bbb,ccc 만 나오죠



    select "문자열"

    은 "문자열" 만 나올뿐입니다.



    따라서 이렇게 고치면 됩니다.



    field_aaa := 'aaa, bbb, ccc ';

    SQL.add('select '+field_aaa+' ');

    ^^ ^^







  • Profile
    허진 2000.01.22 18:08
    유효종 wrote:

    > 이재식 wrote:

    > > 허진 wrote:

    > > >

    > > > select aaa, bbb, ccc from table

    > > >

    > > > 을 넣는다고 가정하고....

    > > >

    > > > SQL.Add('select aaa, bbb, ccc from table);

    > > >

    > > > 하면 이상이 없거던요....

    > > >

    > > > 그리드에

    > > >

    > > > aaa bbb ccc 이렇게 나오지요

    > > > 111 111 111 <- 제대로 된 데이타

    > > > 그런데

    > > >

    > > > field_aaa := 'aaa, bbb, ccc ';

    > > > SQL.add('select '''+field_aaa+''' ');

    > > > 라고 넣으면

    > > >

    > > > 필드는

    > > > 'aaa,bb

    > > > aaa, bbb, ccc <- 데이타가 들어감

    > > >

    > > > 왜 그렇습니까.

    > > >

    > > > 원인을 알고 싶습니다.

    > > >

    > > > SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??

    > >

    > >

    > > 이재식 Wrote :

    > > 안녕하세요?

    > >

    > > 일전에 제 경험으론 안되는 것으로 알고 있습니다.

    > > 가령, sql.add('update 테이블명');

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

    > > parambyname ('f1').asString = '실제필드명' ;

    > >

    > > 이렇게 하니까 인식을 못하더라구요.

    > >

    > > 위 경우도 비슷한 것이라고 생각되는데...

    > >

    >

    > 당연하죠 안되는게

    >

    > SQL.Add('select aaa, bbb, ccc from table);

    > 하고

    > field_aaa := 'aaa, bbb, ccc ';

    > SQL.add('select '''+field_aaa+''' ');

    > 는 확실히 다르죠

    >

    > 위에건

    > select aaa,bbb,ccc from table

    > 이니까 제데로 되어있다면 (Field Name) 제데로 나올테고

    > 뒤에건

    > select "aaa,bbb,ccc" from table

    >

    > 이런거니깐

    > 당연히 aaa,bbb,ccc 만 나오죠

    >

    > select "문자열"

    > 은 "문자열" 만 나올뿐입니다.

    >

    > 따라서 이렇게 고치면 됩니다.

    >

    > field_aaa := 'aaa, bbb, ccc ';

    > SQL.add('select '+field_aaa+' ');

    > ^^ ^^

    >



    from table 명은



    제 소스에는 들어가 있는데요...



    SQL.add(' from tablename');



    뭐 이런식으로



    또 들어가 있어요...



    '+변수명+'



    이 되는 건가요



    전 에러나는데...

  • Profile
    허진 2000.01.22 01:47
    유효종 wrote:

    > 이재식 wrote:

    > > 허진 wrote:

    > > >

    > > > select aaa, bbb, ccc from table

    > > >

    > > > 을 넣는다고 가정하고....

    > > >

    > > > SQL.Add('select aaa, bbb, ccc from table);

    > > >

    > > > 하면 이상이 없거던요....

    > > >

    > > > 그리드에

    > > >

    > > > aaa bbb ccc 이렇게 나오지요

    > > > 111 111 111 <- 제대로 된 데이타

    > > > 그런데

    > > >

    > > > field_aaa := 'aaa, bbb, ccc ';

    > > > SQL.add('select '''+field_aaa+''' ');

    > > > 라고 넣으면

    > > >

    > > > 필드는

    > > > 'aaa,bb

    > > > aaa, bbb, ccc <- 데이타가 들어감

    > > >

    > > > 왜 그렇습니까.

    > > >

    > > > 원인을 알고 싶습니다.

    > > >

    > > > SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??

    > >

    > >

    > > 이재식 Wrote :

    > > 안녕하세요?

    > >

    > > 일전에 제 경험으론 안되는 것으로 알고 있습니다.

    > > 가령, sql.add('update 테이블명');

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

    > > parambyname ('f1').asString = '실제필드명' ;

    > >

    > > 이렇게 하니까 인식을 못하더라구요.

    > >

    > > 위 경우도 비슷한 것이라고 생각되는데...

    > >

    >

    > 당연하죠 안되는게

    >

    > SQL.Add('select aaa, bbb, ccc from table);

    > 하고

    > field_aaa := 'aaa, bbb, ccc ';

    > SQL.add('select '''+field_aaa+''' ');

    > 는 확실히 다르죠

    >

    > 위에건

    > select aaa,bbb,ccc from table

    > 이니까 제데로 되어있다면 (Field Name) 제데로 나올테고

    > 뒤에건

    > select "aaa,bbb,ccc" from table

    >

    > 이런거니깐

    > 당연히 aaa,bbb,ccc 만 나오죠

    >

    > select "문자열"

    > 은 "문자열" 만 나올뿐입니다.

    >

    > 따라서 이렇게 고치면 됩니다.

    >

    > field_aaa := 'aaa, bbb, ccc ';

    > SQL.add('select '+field_aaa+' ');

    > ^^ ^^

    >

    >

    >

    제가 위에 문법처럼 해 보았는데요...



    그거 에러나거던요...



    SQL 문법이 부적당하다라던가 부적합하다라고 하던가...



    하면서... 에러가 뜨던데...



    변수를 필드로 주는 방법을 좀 알려주세요..... 부탁이에용



    SQL.add('select '+field_aaa+' ');요



    ''+ ... +'' -> '+ ... +' 로 고친거 맞지요~





  • Profile
    조복기 2000.01.22 04:03


    이렇게 해보세요..필드명과 테이블명을 동시에 주는 방법입니다..

    참고로.. 만드는 쿼리의 경우

    showmessage(sql.gettext)등으로 확인해보세요.



    Tmp_FieldName := 'aaa, bbb, ccc';

    Tmp_TableName := 'TestDB';

    SQL.Text := 'SELECT ' + Tmp_FieldName + ' FROM ' + Tmp_TableName;

    Open;





    허진 wrote:

    > 유효종 wrote:

    > > 이재식 wrote:

    > > > 허진 wrote:

    > > > >

    > > > > select aaa, bbb, ccc from table

    > > > >

    > > > > 을 넣는다고 가정하고....

    > > > >

    > > > > SQL.Add('select aaa, bbb, ccc from table);

    > > > >

    > > > > 하면 이상이 없거던요....

    > > > >

    > > > > 그리드에

    > > > >

    > > > > aaa bbb ccc 이렇게 나오지요

    > > > > 111 111 111 <- 제대로 된 데이타

    > > > > 그런데

    > > > >

    > > > > field_aaa := 'aaa, bbb, ccc ';

    > > > > SQL.add('select '''+field_aaa+''' ');

    > > > > 라고 넣으면

    > > > >

    > > > > 필드는

    > > > > 'aaa,bb

    > > > > aaa, bbb, ccc <- 데이타가 들어감

    > > > >

    > > > > 왜 그렇습니까.

    > > > >

    > > > > 원인을 알고 싶습니다.

    > > > >

    > > > > SQL문장에 변수 넣을 수 있잖아요... 필드명으로 넣는 건 안되나요??

    > > >

    > > >

    > > > 이재식 Wrote :

    > > > 안녕하세요?

    > > >

    > > > 일전에 제 경험으론 안되는 것으로 알고 있습니다.

    > > > 가령, sql.add('update 테이블명');

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

    > > > parambyname ('f1').asString = '실제필드명' ;

    > > >

    > > > 이렇게 하니까 인식을 못하더라구요.

    > > >

    > > > 위 경우도 비슷한 것이라고 생각되는데...

    > > >

    > >

    > > 당연하죠 안되는게

    > >

    > > SQL.Add('select aaa, bbb, ccc from table);

    > > 하고

    > > field_aaa := 'aaa, bbb, ccc ';

    > > SQL.add('select '''+field_aaa+''' ');

    > > 는 확실히 다르죠

    > >

    > > 위에건

    > > select aaa,bbb,ccc from table

    > > 이니까 제데로 되어있다면 (Field Name) 제데로 나올테고

    > > 뒤에건

    > > select "aaa,bbb,ccc" from table

    > >

    > > 이런거니깐

    > > 당연히 aaa,bbb,ccc 만 나오죠

    > >

    > > select "문자열"

    > > 은 "문자열" 만 나올뿐입니다.

    > >

    > > 따라서 이렇게 고치면 됩니다.

    > >

    > > field_aaa := 'aaa, bbb, ccc ';

    > > SQL.add('select '+field_aaa+' ');

    > > ^^ ^^

    > >

    > >

    > >

    > 제가 위에 문법처럼 해 보았는데요...

    >

    > 그거 에러나거던요...

    >

    > SQL 문법이 부적당하다라던가 부적합하다라고 하던가...

    >

    > 하면서... 에러가 뜨던데...

    >

    > 변수를 필드로 주는 방법을 좀 알려주세요..... 부탁이에용

    >

    > SQL.add('select '+field_aaa+' ');요

    >

    > ''+ ... +'' -> '+ ... +' 로 고친거 맞지요~

    >

    >