Q&A

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



SQL 문

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

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

FROM [신상정보]

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



소스 코드

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

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

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

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



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



4  COMMENTS
  • Profile
    배수영 1999.05.31 23:09
    아래는 제가 작성한 32bit dll file(omin32.dll)의 함수를 선언부분입니다.

    작업환경은 delphi2.0 32bit환경입니다.

    ==============================================================

    function A (SID : PChar; SPwd : PChar) : Integer ; stdcall;

    function B (UE : PSET) : Integer ; stdcall ;



    implementation



    function A; external 'omin32.dll';

    function B; external 'omin32.dll';

    ===========================================================

    win95 나 win98에서는 아무 문제없이 실행이 됩니다만,

    compile할 때는 아무 문제가 없는데,

    실행모듈을 WindowsNt에서 실행하면

    autoexec.bat에 선언된 path 경로상에서 omin32.dll 파일을 찾을 수가 없다는 에러가 발생합니다.

    어떻게 해야 하나요?

    해결책을 아시는 분께서는 죄송합니다만,

    제 e-main id로 회신을 주시면 감사하겠습니다.

    좀 급한 사항이라서요.... 그럼....

  • 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
    안치봉 1999.06.01 00:34
    배수영 께서 말씀하시기를...

    > 아래는 제가 작성한 32bit dll file(omin32.dll)의 함수를 선언부분입니다.

    > 작업환경은 delphi2.0 32bit환경입니다.

    > ==============================================================

    > function A (SID : PChar; SPwd : PChar) : Integer ; stdcall;

    > function B (UE : PSET) : Integer ; stdcall ;

    >

    > implementation

    >

    > function A; external 'omin32.dll';

    > function B; external 'omin32.dll';

    > ===========================================================

    > win95 나 win98에서는 아무 문제없이 실행이 됩니다만,

    > compile할 때는 아무 문제가 없는데,

    > 실행모듈을 WindowsNt에서 실행하면

    > autoexec.bat에 선언된 path 경로상에서 omin32.dll 파일을 찾을 수가 없다는 에러가 발생합니다.

    > 어떻게 해야 하나요?

    > 해결책을 아시는 분께서는 죄송합니다만,

    > 제 e-main id로 회신을 주시면 감사하겠습니다.

    > 좀 급한 사항이라서요.... 그럼....



    안녕하세요. 말그대로 DLL 을 찾지 못해서인거 같군요.



    DLL을 사용하는 프로그램이 실행되면 잘은 모르지만....^^;



    우선 프로그램이 있는 폴더를 조사하고 그 다음 패스로 지정된 경로를 찾아보고



    그 다음 윈도우즈의 시스템폴더를 뒤져봅니다. 그래도 DLL 이 발견이 안되면..



    위와 같이 되는걸로 알고 있습니다.



  • 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.06.02 00:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이현주
      1998.12.25 02:04
      asyncpro를사용하여 모뎀제어하는 프로글렘을하는데 comnumber를 property 나 messagebox에서 받지않고 w...
    • 이정욱
      1999.06.02 02:09
      Access Violation은 생성되지 않은객체나 이미 해제된 객체를 사용하려고 할때 나옵니다. 만약 한번 검색...
    • 박현정
      1998.12.25 05:40
      Async의 Comport컴포넌트를 이용하면 현재 시스템에서 사용가능한 comport들을 가져올 수 있습니다. 컴포트...
    • 김동수
    • 1999.06.01 23:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.02 00:15
      김동수 께서 말씀하시기를... > StringGrid에서 셀의 위치를 알아내서... > 자료를 셀 위치에 있는 레코...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 남윤혁
    • 1999.06.01 23:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.02 00:09
      Richedit에 포커스를 주고 mouse_event를 한번 써보세요.. The mouse_event function synthesizes m...
    • 이정욱
      1998.12.17 08:52
      You can read/write Korean via using HanMe Hangul 95 or UnionWay. It is the Korean Chractors emulati...
    • 이희우
    • 1999.06.01 22:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.06.02 02:06
      음.. 질문을 하신거 맞나요...? 질문을 이해할수가 없는데요...쩝.. 아니면 광고를 하신것인지... 이...
    • 도성현
    • 1999.06.01 20:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김경수
      1999.06.02 04:19
      안녕하세요. 저도 회사 거래명세서(양식존재)를 출력하는 프로그램을 작성했었는데요. 퀵리포트로 하다가...
    • 김경수
    • 1999.06.01 13:51
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김 완진
      1998.12.13 01:57
      델파이가 언어라고 하셨는데, 개발환경으로 보는 것이 맞지않나 생각합니다. 예를 들면 Visual C++은 C++...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 1999.06.01 09:50
      김형철 께서 말씀하시기를... > > 델파이 4를 쓰고 있고 sql문장에서 아래와 같이 > > ...
    • 이정욱
      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
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최재형
      1999.06.01 08:04
      안녕하세요. 혼자서 고민하다가 여기에 글을 올립니다. 제가 하려고 하는게 이미지박스에 마우스클릭하면...
    • 신재민
      1998.12.15 19:52
      어떤 종류의 프로그램을 만드시는지, 그리고 어싱크 컴포넌트를 사용하시는지, 좀 더 구체적으로 써주...
    • 전철호
      1999.06.02 02:39
      조민경 께서 말씀하시기를... > > 최재형 께서 말씀하시기를... > > 안녕하세요. > > 혼자서 고민하다...
    • 최진숙
    • 1998.12.15 00:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박형진
      1999.06.01 06:34
      프로그램과 일치하지 않는 해상도에서 실행시켰을때 해상도를 프로그램에 맞도록 변환시켜주는 함수를 알고...
    • 신재민
      1998.12.15 19:52
      어떤 종류의 프로그램을 만드시는지, 그리고 어싱크 컴포넌트를 사용하시는지, 좀 더 구체적으로 써주...
    • 글쎄요.
      1999.06.01 19:34
      박형진 께서 말씀하시기를... > 프로그램과 일치하지 않는 해상도에서 실행시켰을때 해상도를 프로그램에 ...
    • 구창민
      1999.06.01 06:26
      이승윤 께서 말씀하시기를... > Button1 := TButton.Create(Self); > Button1.Caption := 'Button1'; > ...
    • 이승윤
      1999.06.01 22:20
      질문에 답해 주셔서 정말로 감사합니다. 덕분에 막히 속히 훤하게 뚤린것 같습니다. 질문했던 문제가 해...
    • 조제현
    • 1999.06.01 04:49
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김 완진
      1998.12.13 01:57
      델파이가 언어라고 하셨는데, 개발환경으로 보는 것이 맞지않나 생각합니다. 예를 들면 Visual C++은 C++...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 이상석
    • 1999.06.01 04:22
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 김정배
      1998.11.18 06:47
      델파이가 무언지 알고 십네요.... 델파이에 강력함을 가르쳐 주세요 -- 답장 부탁합니다.
    • redhead
      1999.06.01 04:56
      if DMtwt.QueryZumin.FieldByName('Juminno').asstring = Jumin.Text Then begin ...
    • 이정욱
      1998.11.21 14:58
      델파이란, C++같은 프로그래밍 언어 입니다. 파스칼을 확장한 형태 입니다. 즉, 델파이는 프로그램을 만...
    • 이상석
      1999.06.01 08:40
      redhead 께서 말씀하시기를... > if DMtwt.QueryZumin.FieldByName('Juminno').asstring = Jumin...
    • 김 완진
      1998.12.13 02:01
      델파이가 언어라고 하셨는데, 개발환경으로 보는 것이 맞지않나 생각합니다. 예를 들면 Visual C++은 C++...
    • redhead
      1999.06.01 18:40
      이상석 께서 말씀하시기를... > redhead 께서 말씀하시기를... > > if DMtwt.QueryZumin.FieldBy...
    • Heaven
    • 1999.06.01 04:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.06.01 05:04
      Heaven 께서 말씀하시기를... > 안녕하세요... > > 이렇게 자주 질문을 드리는군요. > 제가 FieldEdit...
    • Heaven
      1999.06.01 20:58
      고맙습니다. redhead님... 답변 잘 보았습니다. 해주신대로 Post를 하니 변경이 됩니다. 그런데, 에디...
    • 이정욱
      1998.12.13 05:29
      네.. 다 맞는 말씀입니다. 한가지만 빼구요.. 델파이는 파스칼에 기반된 언어입니다. 파스칼이 아닙니다...
    • 이상국
      1998.12.17 03:49
      이정욱 wrote: > 네.. 다 맞는 말씀입니다. > 한가지만 빼구요.. > 델파이는 파스칼에 기반된 언어입니...
    • 이정욱
      1998.12.17 08:58
      ^^ 네.. 맞는말씀입니다.. 하지만 인프라이즈사 측에서는 오브젝트 파스칼과는 다른 언어로 생각을 하는것 ...
    • 개장수
      1999.01.05 17:10
      고럼 C++ 은 어찌되는건지요 ? 고것도 C 에서 개발된거 아닌가 ? 으음. 잘 모르겄군요. 하지만 Delphi는 확...
    • 류성호
    • 1999.06.01 00:53
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 여재모
      1998.12.10 19:14
      폼 print시 제대로 출력이 안됩니다. 전 폼에 image화일을 여러개 불러내서 print할려는데 form...
    • 이정욱
      1998.12.11 00:20
      폼을 프린트 하지 마시고 Bitmap을 생성한후에 그 여러개의 이미지를 그 BItmap에 붙이세요. 그런후 그 것...
    • 김성관
    • 1999.05.31 23:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 여재모
      1998.12.10 19:14
      폼 print시 제대로 출력이 안됩니다. 전 폼에 image화일을 여러개 불러내서 print할려는데 form...
    • 이정욱
      1999.06.01 02:32
      각각의 유닛에서 서로 참조하려고 해서 그런것입니다. 소스의 맨위 Uses 절을 보셔서 두개의 유닛이 서로 ...
    • 이정욱
      1998.12.11 00:20
      폼을 프린트 하지 마시고 Bitmap을 생성한후에 그 여러개의 이미지를 그 BItmap에 붙이세요. 그런후 그 것...
    • 박성진
    • 1998.12.05 02:47
    • 4 COMMENTS
    • /
    • 1 LIKES
    • 배수영
      1999.05.31 23:09
      아래는 제가 작성한 32bit dll file(omin32.dll)의 함수를 선언부분입니다. 작업환경은 delphi2.0 32bit환...
    • 이정욱
      1998.12.07 21:49
      음.. 정확하게 해보지는 못했습니다. 그런데 이것을 쓰면 어떨까요? FieldValues 예를들면.. Customers...
    • 안치봉
      1999.06.01 00:34
      배수영 께서 말씀하시기를... > 아래는 제가 작성한 32bit dll file(omin32.dll)의 함수를 선언부분입니다...
    • 박성진
      1998.12.09 02:50
      위의 질문을 다시하겠습니다. 마이크로소프트 Access97을 이용해서 데이터베이스를 구축하였습니다. 마이...