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

    > >

    >

    >





    • 김영
    • 1999.01.19 22:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.20 08:01
      네.. 퀵리포트에 프린터 세팅부분에 버그가 있다고 합니다. 퀵리포트사의 홈페이지로 가셔서 패치를 받으...
    • 문무석
    • 1999.01.16 23:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.19 19:41
      Resize시에 Invalidate를 원하시는것인가요? WinProc를 가로채서 사용하시면 될듯 하네요.. 문무석 wro...
    • Trex98
    • 1999.01.15 03:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.21 00:00
      네.. 그러나 3.0에 포함된 인스톨 쉴드에는 BDE배포시 문제가 있다고 합니다. 4.0것은 확인을 해보지는 못...
    • 한스
    • 1999.01.15 02:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.19 19:43
      그것들은 윈도우NT에서 알아서 처리를 해줍니다. 별로 신경을 안쓰셔도 될듯.... 한스 wrote: > > ...
    • 김경수
    • 1999.01.12 05:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.01.13 03:55
      음냐~ 많은 도움을 받으셨다니 저희도 기쁩니다. 데이블 오픈은 어디에서나 필요한 곳에서 할 수 있습니...
    • 김경수
      1999.01.13 04:20
      일딴 감사합니다. 이초심자가 실수한건데요.. project /options에서 auto create 부분에 데이타모듈...
    • 심명준
    • 1999.01.11 21:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.01.13 03:52
      클라이언트서버하에서는 클라이언트는 서버의 데이타들을 최악의 경우 왕창 다끌어 오는 경향이 있는데 이...
    • 박구남
    • 1999.01.07 11:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.09 10:49
      receivetext 이벤트의 부분을 보여주세요. 어떻게 코딩을 하셨는지 봐야 알겠습니다. 박구남 wrote: >...
    • 박구남
      1999.01.12 22:05
      아구 해결했네요 제가 개념이 좀 않잡혔던 모양입니다 그런데 receivetext는 있으나 마나하군요 보아하...
    • 구민오
    • 1999.01.06 10:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.07 05:30
      구입하실 수 있습니다. 나이렉스로 전화해 보세요. 521-7900 입니다. 구민오 wrote: > RASAPI에 관한...
    • 이정욱
      1999.01.05 23:34
      프로세스를 금지시킨다는것 보다.. 먼저 데스크탑만한 폼을 하나 생성한 후 , 데스크탑의 그림들을 그대로...
    • 조영우
    • 1999.01.03 00:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.01.03 02:11
      델파이의 TServerSocket과 TClientSocket을 이용하시면 됩니다. 그 컴포넌트들로 TCP/IP 를 이용하여 서로...
    • 최진숙
    • 1998.12.28 21:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.12.29 00:26
      가능하면 Async의 질문은 나이렉스 고객지원 게시판에 해주시기 바랍니다. TCom의 예제를 보시면 OnProtoc...
    • 이현주
    • 1998.12.25 02:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박현정
      1998.12.25 05:40
      Async의 Comport컴포넌트를 이용하면 현재 시스템에서 사용가능한 comport들을 가져올 수 있습니다. 컴포트...
    • 이정욱
      1998.12.17 08:52
      You can read/write Korean via using HanMe Hangul 95 or UnionWay. It is the Korean Chractors emulati...
    • 최진숙
    • 1998.12.15 00:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신재민
      1998.12.15 19:52
      어떤 종류의 프로그램을 만드시는지, 그리고 어싱크 컴포넌트를 사용하시는지, 좀 더 구체적으로 써주...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 여재모
    • 1998.12.10 19:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.12.11 00:20
      폼을 프린트 하지 마시고 Bitmap을 생성한후에 그 여러개의 이미지를 그 BItmap에 붙이세요. 그런후 그 것...
    • 박성진
    • 1998.12.05 02:47
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 이정욱
      1998.12.07 21:49
      음.. 정확하게 해보지는 못했습니다. 그런데 이것을 쓰면 어떨까요? FieldValues 예를들면.. Customers...
    • 박성진
      1998.12.09 02:50
      위의 질문을 다시하겠습니다. 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이...
    • 꺄꿍
    • 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 컴포넌트 트라이얼을 받아서 한번 해보세요.. 그래도 느리...