Q&A

  • UNION문을 사용하면서 UpdateSQL을....
MS-SQL Server에 테이블이 3개가 있는데

하나는 나머지 두 개의 테이블과 JOIN되고 나머지 둘은 UNION문으로

JOIN됩니다.



대충 이렇습니다! 하여튼 데이터는 원하는데로 나옵니다!



SELECT D.DMSKEY AS MAKEY, A.WORKER, A.SIZE, A.NUM, D.DHEIGHT AS HEIGHT,

D.DWEIGHT AS WEIGHT, D.OWNNUM

From GHOST D

Left Outer Join ADD A On SubString(D.MSKEY, 1, 10) = A.WORKER

UNOIN

SELECT U.UMSKEY AS MSKEY, A.WORKER, A.SIZE, A.NUM, U.UHEIGHT AS HEIGHT,

U.UWEIGHT AS WEIGHT, NULL

From MONSTER U

Left Outer Join ADD A On SubString(U.MSKEY, 1, 10) = A.WORKER

Where A.SIZE Between 3 And 489





Query1 컴퍼넌트의 SQL String을 위와 같이 하고 Request Live를 True 그리고

Cached Updat도 True로 두었습니다!

여기에 UpdateSQL1을 연결하여 GHOST의 DMSKEY를 KEY로 지정하고, 나머지는

위의 GHOST에 해당하는 필드를 지정하였습니다!



Query1.Edit를 한 후 GHOST의 자료만 수정하여 Query1.ApplyUpdates와

Query1,CommitUpdates를 하였습니다!

그런데 자꾸만 이런 에러 메시지가 나타납니다!

"Field MSKEY is an UnKnown Type!" 이라고 말이죠!

그럼 나머지 GHOST에 해당하는 필드들도 그
5  COMMENTS
  • Profile
    이슬 1999.04.15 03:34
    1. ParamByName과 FieldByName의 차이점이 무엇인지요?



    2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.



  • Profile
    김영해 1999.04.17 08:00
    이슬 wrote:

    > 1. ParamByName과 FieldByName의 차이점이 무엇인지요?

    >

    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    이런 방법도 있어요.

    Table 콤포넌트를 더블 클릭하여 필드 에디트를 열고

    원하는 필드의 이벤트 핸들러중에 GetText 라는게 있습니다.

    여기는 필드의 내용은 바꾸지 않고 디스플레이만 바꾸어 줍니다.



    procedure TForm1.Table1AGetText(Sender: TField; var Text: String;

    DisplayText: Boolean);

    begin

    IF SENDER.AsString = '1' THEN

    TEXT := '1이다'

    ELSE

    TEXT := '1아님';

    end;

    위와 같이 작성후 실행시켜보면 그리드에는 '1이다'라고 표시됩니다..

  • Profile
    신호성 1999.04.16 01:36
    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    2번 질문에 대하여 ...

    Table에 Alpha2자리로 잡았다면 '남','여'로 기록했을테고

    이를 Select하여 Dbgrid로 보여줄때 '남자','여자'로 보고싶다는 질문이지요?



    해당Field(Column)를 'sex'라 가정하고



    방법1.

    Table을 Alpha 2자리로 하셨는데 가장좋은 방법은 Logical(Boolean형)으로

    잡는것 입니다.

    Table에 기록할때 True 또는 False로 기록하고 이경우 FieldsEditor에서

    Sex Field의 DisplayValues 프로퍼티에서 '남자;여자'(여;남)라고

    설정하면 True인경우 '남자'로 false인경우 '여자'로 표시됩니다.





    방법2.(Alpha 2자리로 유지할경우)

    Query1(Table도 같은방법) 컴포넌트를 사용한다고 가정하면



    먼저 FieldsEditor에서 New FIeld메뉴를 선택하여 새로운 Calculated Field를

    생성합니다.(Calculated Field명 :'c_sex', Type: String Size: 4)



    다음 Query1의 OnCalcFields 이벤트에서 다음과 같이 코딩합니다.



    procedure TForm1.Query1CalcFields(DataSet:TDataSet);

    begin

    with DataSet do

    begin

    if FieldByName('sex').AsString = '남' then

    FieldByName('c_sex').AsString := '남자'

    else

    FieldByName('c_sex').AsString := '여자';

    end;

    end;

























  • Profile
    박종모 1999.04.15 04:44
    이슬 wrote:

    > 1. ParamByName과 FieldByName의 차이점이 무엇인지요?

    >

    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    델파이를 연구중인 초보 종모입니다.

    조금의 도움이 되었으면 좋겠습니다.



    ParamByName은 사용자가 임의로 설정한 Parameter를 지정한다.



    다음 예는 Test.DB의 D_Date필드에 Parameter를 사용하여

    날자값을 넣는 예이다.



    Query1.SQL.Clear;

    Query1.SQL.Add('Insert Into Test(D_Date) Values ( :P_Date )');

    Query1.ParamByName('P_Date').ASDateTime := StrToDate(Edit1.Text);

    Query1.ExecSQL;



    FieldByName은 실제로 존재하는 필드를 지정한다.

    한글은 한글자에 2Byte를 사용한다.

    (남자,여자)는 4Byte를 필요로 하므로 Alhpa 4Byte의 크기가 필요할까?



    라디오버튼 이름 : RA_MAN, RA_GIRL;



    // 버튼 클릭 이벤트

    procedure TForm1.Button1Click(Sender : TObject)

    begin

    if RA_MAN.Checked then

    Table1.FieldByName('Sex').AsString := '남자'

    else

    Table1.FieldByName('Sex').AsString := '여자'

    end;

  • Profile
    글쎄요 1999.04.15 05:41
    추가로 답변합니다.

    2번째 건데 답변이 잘 못된 것 같아요.

    가장 좋은 방법은 DBGRID 대신에 STRINGGRID를 쓰는 거죠.

    DBGRID의 DBGrid1DrawColumnCell 이벤트에 다음과 같이

    쓰시면 됩니다.

    'Sex'필드의 값이 'M'이면 남자

    아니면 여자임.

    if Column.Field = DM.MemberTable.FieldByName('Sex') then

    begin

    DBGrid1.Canvas.Font.Color := clBlack;

    DBGrid1.Canvas.FillRect(Rect);

    if Column.Field.AsString = 'M' then

    DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'남자')

    else

    DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'여자');

    end;

    이렇게 하시면 되지만 약간의 버그가 존재합니다. 한 번 해보시면 알

    것에요.^^ 그럼 즐거운 코딩하셔요.~~~

    • 안창주
    • 1999.06.23 20:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.23 21:02
      안창주 께서 말씀하시기를... > 저는 델파이 책을 처음보는 초보자입니다. > 1데이타베이스에서Alias라는...
    • 최석기
      1999.06.23 20:25
      이종진 께서 말씀하시기를... > DBGrid에서 text값을 다른값으로 바꿔주는 방법을 알고 싶습니다. > ...
    • VMNT
    • 1999.06.23 15:12
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 이슬
      1999.04.15 03:34
      1. ParamByName과 FieldByName의 차이점이 무엇인지요? 2. 폼에 성별(남,여:radiobutton) 체크가 있는데...
    • 김영해
      1999.04.17 08:00
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 신호성
      1999.04.16 01:36
      > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
    • 박종모
      1999.04.15 04:44
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 글쎄요
      1999.04.15 05:41
      추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
    • 이용민
    • 1999.06.23 12:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하남수
      1999.06.23 19:46
      이용민 께서 말씀하시기를... > 안녕하십니까 ? (주) 천의무봉의 이용민입니다. > 작업하다 간간히 의문...
    • 정남용
    • 1999.04.16 01:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김정선
      1999.04.23 00:51
      저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
    • 이정욱
      1999.04.17 02:26
      저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
    • 김정선
      1999.04.16 22:56
      저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
    • francis
    • 1999.06.23 12:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 아무게
      1999.06.23 19:58
      이용민 께서 말씀하시기를... > 다음과 같은 의문을 정리해 보겠습니다. > > 1. 그렇다면 참조가 ...
    • 이용민
      1999.06.24 11:23
      (주) 천의무봉의 이용민입니다. 선생의 말씀 고맙습니다. 그런데 깨끗한 정리는 안되는 군요. 자질을 말...
    • 이정욱
      1999.04.16 02:17
      아무래도 케이블을 그냥 두갈래로 뽑으신것 같군요. 그렇게 하면 아마도 제데로 안될것 같네요... 그것보...
    • 화랑
      1999.04.16 03:06
      답변 감사합니다.. 문제는 제가 그 서버를 건드릴수가 없습니다. 지금 현재 나와있는 것은 프린터로 가...
    • 이정욱
      1999.04.16 05:08
      프린터포트를 제어하는것은 문제가 없습니다. 그것을 지원하는 컴포넌트를 본적이 있는데.... 아마도 찾아...
    • 화랑
      1999.04.17 18:11
      매번 감사합니다.. 저기 한가지만 더 하고 싶은데.. 프린트는 앱슨을 쓰거든요.. 혹시 서로 전달되는 ...
    • 강민주
    • 1999.06.23 09:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박흥태
      1999.06.25 03:38
      강민주 께서 말씀하시기를... > 안녕하세요.^^; > 외상장부처리를 위해 외상테이블과 수금 테이블로 > 2...
    • 남윤혁
    • 1999.04.15 22:13
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 남윤혁
      1999.04.16 02:34
      -.-;; 무슨말인지 잘모르겠네요... 다시 정리해서 올립니다. 아래의 함수는 그리기 전용함수입니다. ...
    • 남윤혁
      1999.04.16 00:37
      다시 질문입니다. 제가 XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); YPI:= GetDeviceCaps( ...
    • 이정욱
      1999.04.16 01:06
      화면 출력 후 XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX); YPI := GetDeviceCaps(Printe...
    • 안치봉
      1999.04.15 23:28
      남윤혁 wrote: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
    • 박성훈
    • 1999.06.23 05:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이용민
      1999.06.23 12:56
      질문에 대한 답은 아니지만 얼핏보이기에... 선생이 쓰시는 이코드는 다음과 같이 간단히 할 수 있거든...
    • 고부성
    • 1999.04.16 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.16 01:04
      음.. 두가지 가능성이 있습니다. 먼저 첫째, Path가 잘못되어있을 경우이죠. 실제로 C:sample.txt 에 저...
    • 이현옥
    • 1999.06.23 05:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.06.23 08:22
      이현옥 께서 말씀하시기를... > 급하게 도사님들의 처방을 기다립니다. > > 프로그램을 실행시키면 > ...
    • 이정석
    • 1999.04.16 00:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.16 00:56
      이정석 wrote: > 안녕하십니까? > ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 > 만...
    • 류성호
      1999.06.23 05:13
      변상준 께서 말씀하시기를... > 델파이4 프로페셔널 버전에서 오라클 7.3.2 연결을 하는데 준비 사항 및 ...
    • 남윤혁
    • 1999.04.15 22:13
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 황하강
      1999.06.23 04:00
      [질문]기본 프린터의 온라인 상태 체크... 델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지...
    • 남윤혁
      1999.04.16 02:34
      -.-;; 무슨말인지 잘모르겠네요... 다시 정리해서 올립니다. 아래의 함수는 그리기 전용함수입니다. ...
    • 최석기
      1999.06.23 17:28
      황하강 께서 말씀하시기를... > [질문]기본 프린터의 온라인 상태 체크... > 델파이 2.0 에서 기본 프...
    • 남윤혁
      1999.04.16 00:37
      다시 질문입니다. 제가 XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); YPI:= GetDeviceCaps( ...
    • 황하강
      1999.06.24 00:44
      최석기 께서 말씀하시기를... > 황하강 께서 말씀하시기를... > > [질문]기본 프린터의 온라인 상태 체크...
    • 이정욱
      1999.04.16 01:06
      화면 출력 후 XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX); YPI := GetDeviceCaps(Printe...
    • 안치봉
      1999.04.15 23:28
      남윤혁 wrote: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
    • 김민오
    • 1999.06.23 02:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정석
      1999.04.16 00:10
      안녕하십니까? ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 만들려고 합니다. 아시겠...
    • 신인재
      1999.04.16 00:56
      이정석 wrote: > 안녕하십니까? > ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 > 만...
    • 고부성
    • 1999.04.16 00:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김민오
      1999.06.23 02:45
      네트웍으로 연결된 파라독스가 엑세스 바이올레이션과 파라이 일치하지 않느다고 에러가 나옵니다. sql문...
    • 이정욱
      1999.04.16 01:04
      음.. 두가지 가능성이 있습니다. 먼저 첫째, Path가 잘못되어있을 경우이죠. 실제로 C:sample.txt 에 저...