Q&A

  • Access97의 한글 필드명을 ParamByName으로 접근하는 방법은?
마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 테이블 명과 필드명을 모두 한글로 주었는데, SQL 문으로 테이블 명이나 필드명을 줄때 다음과 같이 '[]'로 필드명을 감싸면 됩니다.



SQL 문

--------------------------------------------

SELECT [이름], [전화번호]

FROM [신상정보]

--------------------------------------------



소스 코드

-------------------------------------------------------

aName := aQuery.FieldByName('이름').AsString;

aPhone := aQuery.FieldByName('전화번호').AsString;

-------------------------------------------------------



그런데 SQL 파라미터를 같은 방법으로 하고자 할때 필드명의 타입을 알 수 없다고 에러가 나는데 어떻게 하면 제대로 그 값을 가져 올 수 있을까요?



2  COMMENTS
  • Profile
    이정욱 1998.12.07 21:49
    음.. 정확하게 해보지는 못했습니다.

    그런데 이것을 쓰면 어떨까요?

    FieldValues

    예를들면..

    Customers.FieldValues['CustNo'] := Edit1.Text;

    Customers['CustNo'] := Edit1.Text;



    The next statements reads a string value from a field into an edit box:



    Customers.Edit;



    Edit1.Text := Customers['Company'];

    Customers.Post;

    이렇게 되는건데...

    해보시고 안되면 다시 물어주세요~



    박성진 wrote:

    > 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 테이블 명과 필드명을 모두 한글로 주었는데, SQL 문으로 테이블 명이나 필드명을 줄때 다음과 같이 '[]'로 필드명을 감싸면 됩니다.

    >

    > SQL 문

    > --------------------------------------------

    > SELECT [이름], [전화번호]

    > FROM [신상정보]

    > --------------------------------------------

    >

    > 소스 코드

    > -------------------------------------------------------

    > aName := aQuery.FieldByName('이름').AsString;

    > aPhone := aQuery.FieldByName('전화번호').AsString;

    > -------------------------------------------------------

    >

    > 그런데 SQL 파라미터를 같은 방법으로 하고자 할때 필드명의 타입을 알 수 없다고 에러가 나는데 어떻게 하면 제대로 그 값을 가져 올 수 있을까요?

    >





  • Profile
    박성진 1998.12.09 02:50
    위의 질문을 다시하겠습니다.

    마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이크로소프트의 Access는 테이블 명과 필드명을 한글로 줄 수 있으며, 게다가 이름 사이에 공백을 줄 수도 있습니다. 저는 테이블 명과 필드명을 모두 한글로 주었는데, 델파이에서 SQL 문을 작성할때 테이블 명이나 필드명을 줄때 다음과 같이 '[]'로 필드명을 감싸면 됩니다. 그리고 FieldByName 함수(또는 Property)를 이용해서 필드의 값을 가져올때는 ‘[]’를 빼고 필드명만 주면 됩니다.

    예를 들어 테이블 이름이 ‘신상정보’이고, 이 테이블에 포함된 필드명이 ‘이름’과 ‘전화번호’라고 가정하지요. 이때 이 테이블에서 자료를 읽어오는 방법은 다음과 같습니다.



    function TForm1.FieldAccess:integer;

    var

    aQuery : TQuery ;

    aName, aPhone : string ;



    begin

    aQuery := TQuery.Create;

    aQuery.DatabaseName := ‘ACC_DB’;

    with aQuery do

    begin

    Close;

    SQL.Clear;

    SQL.Add(‘SELECT [이름], [전화번호]’);

    SQL.Add(‘FROM [신상정보]’);

    Open;

    end; { with }

    aName := aQuery.FieldByName('이름').AsString;

    aPhone := aQuery.FieldByName('전화번호').AsString;

    ....

    end; { TForm1.FieldAccess }



    한편 SQL 문에 파라미터를 사용할 수 있는데, 이때 파라미터 명칭이 영문인 경우 특별히 문제가 없습니다. 다음의 예를 보십시오.



    SQL.Add(‘SELECT [이름], [전화번호]’);

    SQL.Add(‘FROM [신상정보]’);

    SQL.Add(‘WHERE [이름] LIKE :inputname’);



    위의 SQL은 아무런 하자가 없습니다. 그런데 파라미터 명칭(위의 예에서 inputname)을 한글로 주어야 하는 경우 정확히 어떤 형태로 파라미터 명칭을 주어야 하는지 알 수가 없습니다. 다음과 같이 한글로 파라미터 명칭을 주면 ‘필드명의 타입을 알 수 없다’고 에러가 납니다.



    SQL.Add(‘SELECT [이름], [전화번호]’);

    SQL.Add(‘FROM [신상정보]’);

    SQL.Add(‘WHERE [이름] LIKE :입력이름’);



    파라미터 명칭은 알파벳을 이용해서 만들 수도 있습니다. 그러나 굳이 한글 이름을 주어야 하는 이유는 Linked Query를 구성해야 하기 때문입니다. 두개의 테이블을 Linked Query로 마스터-디테일 구조를 구성하고자 할때 디테일 쪽 Query에서 마스터 데이터 소스의 필드명으로 파라미터로 이용하게 되어 있기 때문입니다.



    위의 질문과 더불어 한가지 더 질문을 하고자 합니다. 혹시 Cached Update나 UpdateSQL에 대해서 아시는 분이 있으시면 자세한 설명 좀 부탁드립니다. 그리고 DBDEMOS를 이용해서 샘플 코드를 작성해 주시면 더욱 감사하겠습니다.



    이정욱 wrote:

    > 음.. 정확하게 해보지는 못했습니다.

    > 그런데 이것을 쓰면 어떨까요?

    > FieldValues

    > 예를들면..

    > Customers.FieldValues['CustNo'] := Edit1.Text;

    > Customers['CustNo'] := Edit1.Text;

    >

    > The next statements reads a string value from a field into an edit box:

    >

    > Customers.Edit;

    >

    > Edit1.Text := Customers['Company'];

    > Customers.Post;

    > 이렇게 되는건데...

    > 해보시고 안되면 다시 물어주세요~

    >

    > 박성진 wrote:

    > > 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 테이블 명과 필드명을 모두 한글로 주었는데, SQL 문으로 테이블 명이나 필드명을 줄때 다음과 같이 '[]'로 필드명을 감싸면 됩니다.

    > >

    > > SQL 문

    > > --------------------------------------------

    > > SELECT [이름], [전화번호]

    > > FROM [신상정보]

    > > --------------------------------------------

    > >

    > > 소스 코드

    > > -------------------------------------------------------

    > > aName := aQuery.FieldByName('이름').AsString;

    > > aPhone := aQuery.FieldByName('전화번호').AsString;

    > > -------------------------------------------------------

    > >

    > > 그런데 SQL 파라미터를 같은 방법으로 하고자 할때 필드명의 타입을 알 수 없다고 에러가 나는데 어떻게 하면 제대로 그 값을 가져 올 수 있을까요?

    > >

    >

    >





    • Heaven
    • 1999.05.31 21:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • rambo
      1999.06.01 01:19
      Heaven 께서 말씀하시기를... > 안녕하세요... > 항상 도움을 받는군요.. > > 다름이 아니라..Date형...
    • Heaven
      1999.06.01 04:07
      안녕하세요. 답변해 주셔서 고맙습니다.. 문제를 해결했네요.. 그럼..
    • 이정욱
      1998.12.07 21:49
      음.. 정확하게 해보지는 못했습니다. 그런데 이것을 쓰면 어떨까요? FieldValues 예를들면.. Customers...
    • 박성진
      1998.12.09 02:50
      위의 질문을 다시하겠습니다. 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이...
    • july
    • 1999.05.31 19:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박성진
    • 1998.12.05 02:47
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 이정욱
      1998.12.07 21:49
      음.. 정확하게 해보지는 못했습니다. 그런데 이것을 쓰면 어떨까요? FieldValues 예를들면.. Customers...
    • 박성진
      1998.12.09 02:50
      위의 질문을 다시하겠습니다. 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이...
    • 꺄꿍
    • 1998.11.25 02:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이현신
      1999.05.31 19:20
      어떤 시스템의 고유의 시리얼이나 스트링을 구할수는 없나요?.. 하드의 시리얼넘버는 포멧하면 변하고.. ...
    • 글쎄요.
      1999.06.01 01:30
      이현신 께서 말씀하시기를... > 어떤 시스템의 고유의 시리얼이나 스트링을 구할수는 없나요?.. > 하드의...
    • 김영대
      1999.05.31 21:05
      이현신 께서 말씀하시기를... > 어떤 시스템의 고유의 시리얼이나 스트링을 구할수는 없나요?.. > 하드의...
    • 1999.05.31 20:41
      정성호 께서 말씀하시기를... > 안녕하세요.. 꾸벅 ^^ > > 하나 여쭤볼게 있어서 이리 글을 올립니다....
    • 1999.05.31 20:43
      정성호 께서 말씀하시기를... > 안녕하세요...^^ 꾸벅... > > 여러가지로 부족한 점이 많아서 이리 글...
    • 북해
    • 1999.05.31 18:09
    • 9 COMMENTS
    • /
    • 0 LIKES
    • 꺄꿍
      1998.11.21 03:03
      디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연...
    • 김영대
      1999.05.31 20:17
      북해 께서 말씀하시기를... > 안녕하세요. Calendar의 특정날짜에 제가 원하는 그래픽을 표시해 넣고 싶은...
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • • • •
    • 하명훈
    • 1999.05.31 15:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 1999.05.31 20:48
      하명훈 께서 말씀하시기를... > delphi3.0으로 db를 엑세스하는 프린트폼을 Quick Report로 만들었습니다...
    • 한 재
    • 1999.05.31 14:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김태균
      1999.05.31 18:02
      내용을 보니 체인지 이벤트가 일어날 때 combo의 내용에 들어 있는 파일의 이름을 불러서 메모에 내용을...
    • 1999.05.31 17:56
      한 재 께서 말씀하시기를... > 가르쳐주신 것을 바탕으로 맹글어봤는데 컴파일이 안되는군요. > 문제...
    • 꺄꿍
    • 1998.11.21 03:03
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • 꺄꿍
      1998.11.22 07:30
      이정욱 wrote: > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. > 리치에디트 데이터...
    • 이정욱
      1998.11.22 20:40
      현재 사용하시는 DB포맷은 무엇입니까? XPower 컴포넌트 트라이얼을 받아서 한번 해보세요.. 그래도 느리...
    • 변대섭
      1999.06.02 19:13
      장헌영 께서 말씀하시기를... > Ttable,Tdatasource,TDBgrid 이렇게 세 가지를 사용해서 oracle7.3 의 한 ...
    • 1999.05.31 18:54
      장헌영 께서 말씀하시기를... > Ttable,Tdatasource,TDBgrid 이렇게 세 가지를 사용해서 oracle7.3 의 한 ...
    • 김태균
      1999.05.31 18:11
      장헌영 께서 말씀하시기를... > Ttable,Tdatasource,TDBgrid 이렇게 세 가지를 사용해서 oracle7.3 의 한 ...
    • 박성훈
    • 1999.05.31 04:37
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 꺄꿍
      1998.11.21 03:03
      디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연...
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • 꺄꿍
      1998.11.22 07:30
      이정욱 wrote: > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. > 리치에디트 데이터...
    • • • •
    • 박성훈
    • 1999.05.31 04:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.31 05:38
      아래 말씀하신것은 전혀 컴포트와 상관이 없습니다. 달려있는 프린터의 제어코드들마다 틀립니다. 또, 프...
    • eojin
    • 1999.05.31 02:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.31 05:42
      쩝.. 대단한 대답은 아니구요... ASyncProfessional 이라는 컴포넌트가 있는데 이것안에 VT100, ANSI 처리...
    • 신호철
    • 1999.05.31 01:18
    • 8 COMMENTS
    • /
    • 0 LIKES
    • 꺄꿍
      1998.11.21 03:03
      디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연...
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • 꺄꿍
      1998.11.22 07:30
      이정욱 wrote: > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. > 리치에디트 데이터...
    • • • •
    • 이정욱
      1999.05.31 05:40
      말씀하신 부분은 오토마타 입니다. 오토마타를 구현하셔야 하는데 워낙 양이 방대합니다. 여러군데에서 ...
    • 문창완
      1999.06.02 01:30
      이정욱 께서 말씀하시기를... > 말씀하신 부분은 오토마타 입니다. > 오토마타를 구현하셔야 하는데 워낙...
    • 영인
    • 1999.05.30 22:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.31 05:51
      Chart가 무슨 Chart를 사용하시는지... Series에 Clear라는 메소드나 Count라는 프로퍼티가 있다면 그것을...
    • 꺄꿍
      1998.11.21 03:03
      디비 그리드를 아래로 계속 내리거나 올리면 BLOB필드에 데이타가 제법 많이 들어있는 경우 데이타 셋에 연...
    • 이 재원
      1999.01.05 16:56
      거시기 TMemo에는 32K Limit이 있는걸로 알고 있는데 혹시 더 큰거 아닌가요? 글코 크기 Value를 100에서 ...
    • 신인재
      1998.11.24 02:16
      냥냥.... 쩝...이상하군요...... 디비 익스플로러에서 잘된다면 델파이 어플에서도 잘되야 정상이거든요...
    • 꺄꿍
      1998.11.24 10:22
      신인재 wrote: > 냥냥.... > 쩝...이상하군요...... > 디비 익스플로러에서 잘된다면 > 델파이 어플에...
    • 신인재
      1998.11.24 22:40
      음냐.... 저두 방법이 없군요.... 이거 받아서 테스트 해보세요.. 실행파일과 소스를 함께 넣었습니다.....
    • 이정욱
      1998.11.21 14:56
      제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. 리치에디트 데이터를 메모로 읽으려고 ...
    • 꺄꿍
      1998.11.22 07:30
      이정욱 wrote: > 제 생각에는 Richedit데이터를 Memo에서 읽으려고 하는것 같네요. > 리치에디트 데이터...
    • • • •