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

    > >

    >

    >





    • 최진숙
    • 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
    • /
    • 0 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 컴포넌트 트라이얼을 받아서 한번 해보세요.. 그래도 느리...
    • XapiSoft
    • 1998.11.20 19:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 02:49
      네. 안녕하세요? 나이렉스의 이정욱 입니다. 업그레이드를 받으시려면 입금 후 연락을 주시면 됩니다. 업...
    • Pascal
    • 1998.11.20 10:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 02:46
      음.. DLL을 사용하신 부분의 소스를 보여주시면 더 쉽게 설명이 가능할 텐데요... DLL을 사용하실때는 ...
    • 이용성
    • 1998.11.19 08:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.20 20:25
      음냐 제가 프로그램을 짜서 갈켜 드리려구 했는데.. 델파이 코리아에 BatchMove컴포넌트를 이용한 팁이 있...
    • 신인재
      1998.11.21 05:35
      신인재 wrote: > 음냐 제가 프로그램을 짜서 갈켜 드리려구 했는데.. > 델파이 코리아에 BatchMove컴포넌...
    • 표경나
    • 1998.11.19 05:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.19 07:52
      표경나 wrote: 음냐~~~ 인잽니다.... 파일이 깨져서 하나도 알아 볼 수 가 없다는 뜻이 무었인지요.......
    • 김정배
    • 1998.11.18 06:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 14:58
      델파이란, C++같은 프로그래밍 언어 입니다. 파스칼을 확장한 형태 입니다. 즉, 델파이는 프로그램을 만...
    • 김 완진
      1998.12.13 02:01
      델파이가 언어라고 하셨는데, 개발환경으로 보는 것이 맞지않나 생각합니다. 예를 들면 Visual C++은 C++...
    • 손현민
    • 1998.11.16 21:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.17 06:58
      손현민 wrote: > 시스템 환경은 NT4.0,SQL6.5,ODBC 입니다. > Query를 사용해서 for문을 돌리는 도중 Ins...
    • 표경나
    • 1998.11.14 09:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1998.11.14 21:51
      음냐...인잽니다..... 음 액셀파일로 컨버전 하실려구 하시는 군요.... 음 SpredOCX는 비베에서 쓰는 물...
    • 신인재
      1998.11.14 22:08
      에고 죄송해요...한가지 빠졌네요.... SAveFileDlg다음에 이걸 주가 시켜 줘야 해요.... 음냐..기억을 더...
    • 곽병덕
    • 1998.11.13 23:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 02:56
      어떻게 구현을 하셨는지 말씀을 해주셔야죠.... 곽병덕 wrote: > 안녕하세요. 곽병덕이라고 합니다. >...
    • 손지연
    • 1998.11.11 20:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 종모
      1998.11.15 11:13
      안녕하세요? 초보라 답변이 될지 모르겠네요. > 주폼과 별폼의 연결이라... 1. 간단하게 주폼에서...
    • 신인재
      1998.11.12 08:32
      손지연 wrote: > 주폼과 별폼을 연결하려고 하는데 어떻게 해야 하나요? > 자세히 설명을 해 주시면 고맙...
    • 손지연
    • 1998.11.11 20:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.21 15:00
      프로그램을 만드실때 A 드라이브에 있는 유닛을 포함해서 만드셨나 보네요. 모두 하드드라이브로 복사한 ...
    • 이정욱
      1998.11.16 10:34
      컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. 그것을 사용해 보세요. 이태호 wrote: > 또 질문 ...
    • 이태호
      1998.11.17 12:18
      이정욱 wrote: > 컴포넌트 중에 Packet에 관한 컴포넌트가 있습니다. > 그것을 사용해 보세요. > > 이...
    • 이태호
    • 1998.11.10 11:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1998.11.16 10:33
      음.. 마이크로 소프트웨어라는 잡지에 제가 글을 썼었는데, 몇월호 였는지는 기억이 잘 나지 않는군요... ...