Q&A

  • 중복데이타 입력 안되게...조금만 보아 주세요.
오늘도 프로그램하시느라 수고가 많으시네요…

오늘도 여전히 염치불구하고 고수님께 신세를 져야하는 현실이 안타깝지만 도움을

요청하겠습니다.



1. DB : Paradox 7

2. Components : Query2, DataSource2, UpdateSQL2, DBGrid 등을 이용하여 DBGrid에

직접 Data를 삽입 삭제 하고 있습니다.



3. UpDateSQL2에서 “SuperNo”라는 필드 명이 Primary Key로 설정



4. “SuperNo” 유일값을 가져야 함



5. 아래는 DBGrid에 Data를 입력하고 DB에 저장할 대 사용하는 버턴의 프로시져



6. “SuperNo”에 Data를 입력할 때 만약 같은 값이 “SuperNo” 에 그런 데이터가

있으면 중복되어 있다는 메시지와 함께 저장이 안되게 하려고 합니다.



7. 이 프로시져가 맞는것인지 좀 보아 주시고 ?????표시에 무엇이 들어 가야 하는지

좀 일러 주옵소서..



8. 혹 더 좋은 방법이 있으시면 이야기 해주시면 더욱더 고맙겠습니다.



procedure TEquipment.ToolButton2Click(Sender: TObject);

begin

with Front.Query2 do begin

SQL.Text := 'Select * from equipmentTable where SuperNo = :SN';

ParamByName('SN').AsString := ???????????(DBGrid의 SuperNo 레코드 표시)

Open;

if not eof then

begin

ShowMessage('이미등록되어있읍니다.');

end;

ApplyUpdates;

CommitUpdates;

Close;

Open;

end;

end;



읽어주셔서 감사하고 가정에 항상 따뜻한 봄 해살 처럼 행복이 깃들길 바랍니다.



참고로 테이블의 고조입니다. SuperNo 중복데이타가 입력이 안되어야 합니다.



필드명 SuperNo / CardNo / ~~~~

레코드1 1-1 / 1 / ~~~

레코드2 1-2 ./ 2 / ~~~

레코드3 1-3 / 3 / ~~~



4  COMMENTS
  • Profile
    바보감자 2001.03.19 18:54
    아기코알라 wrote:

    > 오늘도 프로그램하시느라 수고가 많으시네요…

    > 오늘도 여전히 염치불구하고 고수님께 신세를 져야하는 현실이 안타깝지만 도움을

    > 요청하겠습니다.

    >

    > 1. DB : Paradox 7

    > 2. Components : Query2, DataSource2, UpdateSQL2, DBGrid 등을 이용하여 DBGrid에

    > 직접 Data를 삽입 삭제 하고 있습니다.

    >

    > 3. UpDateSQL2에서 “SuperNo”라는 필드 명이 Primary Key로 설정

    >

    > 4. “SuperNo” 유일값을 가져야 함

    >

    > 5. 아래는 DBGrid에 Data를 입력하고 DB에 저장할 대 사용하는 버턴의 프로시져

    >

    > 6. “SuperNo”에 Data를 입력할 때 만약 같은 값이 “SuperNo” 에 그런 데이터가

    > 있으면 중복되어 있다는 메시지와 함께 저장이 안되게 하려고 합니다.

    >

    > 7. 이 프로시져가 맞는것인지 좀 보아 주시고 ?????표시에 무엇이 들어 가야 하는지

    > 좀 일러 주옵소서..

    >

    > 8. 혹 더 좋은 방법이 있으시면 이야기 해주시면 더욱더 고맙겠습니다.

    >

    > procedure TEquipment.ToolButton2Click(Sender: TObject);

    > begin

    > with Front.Query2 do begin

    > SQL.Text := 'Select * from equipmentTable where SuperNo = :SN';

    > ParamByName('SN').AsString := ???????????(DBGrid의 SuperNo 레코드 표시)

    > Open;

    > if not eof then

    > begin

    > ShowMessage('이미등록되어있읍니다.');

    > end;

    > ApplyUpdates;

    > CommitUpdates;

    > Close;

    > Open;

    > end;

    > end;

    >

    > 읽어주셔서 감사하고 가정에 항상 따뜻한 봄 해살 처럼 행복이 깃들길 바랍니다.

    >

    > 참고로 테이블의 고조입니다. SuperNo 중복데이타가 입력이 안되어야 합니다.

    >

    > 필드명 SuperNo / CardNo / ~~~~

    > 레코드1 1-1 / 1 / ~~~

    > 레코드2 1-2 ./ 2 / ~~~

    > 레코드3 1-3 / 3 / ~~~

    >





    안녕하세여 바보감자입니다 ^^

    질문을 보면.. dbgrid 에 필드중 한개를 뽑아 내고 싶으신거 같은데..

    dbgrid 는 쿼리랑 연결이 되어있겠죠.?

    query1.fieldbyname('SuperNo').asstring;

    이러케 하면 현제 줄의 필드에 있는 값이 튀어나옵니다 ^^

    질문에 맞게 답변했는지 몰겠네여 ^^

    그럼 언제나 즐코 즐코 즈을코 하세여~~~~~~~~~~~~

  • Profile
    아기코알라 2001.03.20 01:03
    답변 정말 정말 감사드립니다.

    바보감자님의 앞날에 많은 행운이 있으시길 바랍니다…



    제가 질문을 좀 잘 못 드린 것 같군요 정말 정말 죄송합니다.



    제가 질문을 드릴 것은 데이터를 입력할 때 중복 데이타 입력을 안되게 할려는 것입니다.

    SuperNo 필드에 새로운 데이터를 추가할 때 같은 필드에 기존에 똑같은 값의 데이터가 있으면 ‘중복되었음” 이라는 메시지를 뛰우는 것입니다.

    아래의 프로시져에 추가해서 해보니 필드의 “Field : ‘SuperNo’ not found” 에러가 뜨더군요...



    수고스러우시겠지만 다시 한번 더 보아주시면 정말 감사드리겠습니다.



    예) 필드명 SuperNo / CardNo / ~~~~

    레코드1 1-1 / 1 / ~~~

    레코드2 1-2 ./ 2 / ~~~

    레코드3 1-3 / 3 / ~~~

    레코드4 1-3 / 4 / ~~



    테이블에 이렇게 되어있는데 만약 레코드4번째의 SuperNo 필드 항목에 레코드3과

    똑 같은 "1-3" 이라는 값을 입력하려고 할 때 메세지를 나타내게 하는 것입니다.



    항상 행복하시고 하시는 모든일 잘 되시길 바랍니다. 감사합니다.







    바보감자 wrote:

    > 아기코알라 wrote:

    > > 오늘도 프로그램하시느라 수고가 많으시네요…

    > > 오늘도 여전히 염치불구하고 고수님께 신세를 져야하는 현실이 안타깝지만 도움을

    > > 요청하겠습니다.

    > >

    > > 1. DB : Paradox 7

    > > 2. Components : Query2, DataSource2, UpdateSQL2, DBGrid 등을 이용하여 DBGrid에

    > > 직접 Data를 삽입 삭제 하고 있습니다.

    > >

    > > 3. UpDateSQL2에서 “SuperNo”라는 필드 명이 Primary Key로 설정

    > >

    > > 4. “SuperNo” 유일값을 가져야 함

    > >

    > > 5. 아래는 DBGrid에 Data를 입력하고 DB에 저장할 대 사용하는 버턴의 프로시져

    > >

    > > 6. “SuperNo”에 Data를 입력할 때 만약 같은 값이 “SuperNo” 에 그런 데이터가

    > > 있으면 중복되어 있다는 메시지와 함께 저장이 안되게 하려고 합니다.

    > >

    > > 7. 이 프로시져가 맞는것인지 좀 보아 주시고 ?????표시에 무엇이 들어 가야 하는지

    > > 좀 일러 주옵소서..

    > >

    > > 8. 혹 더 좋은 방법이 있으시면 이야기 해주시면 더욱더 고맙겠습니다.

    > >

    > > procedure TEquipment.ToolButton2Click(Sender: TObject);

    > > begin

    > > with Front.Query2 do begin

    > > SQL.Text := 'Select * from equipmentTable where SuperNo = :SN';

    > > ParamByName('SN').AsString := ???????????(DBGrid의 SuperNo 레코드 표시)

    > > Open;

    > > if not eof then

    > > begin

    > > ShowMessage('이미등록되어있읍니다.');

    > > end;

    > > ApplyUpdates;

    > > CommitUpdates;

    > > Close;

    > > Open;

    > > end;

    > > end;

    > >

    > > 읽어주셔서 감사하고 가정에 항상 따뜻한 봄 해살 처럼 행복이 깃들길 바랍니다.

    > >

    > > 참고로 테이블의 고조입니다. SuperNo 중복데이타가 입력이 안되어야 합니다.

    > >

    > > 필드명 SuperNo / CardNo / ~~~~

    > > 레코드1 1-1 / 1 / ~~~

    > > 레코드2 1-2 ./ 2 / ~~~

    > > 레코드3 1-3 / 3 / ~~~

    > >

    >

    >

    > 안녕하세여 바보감자입니다 ^^

    > 질문을 보면.. dbgrid 에 필드중 한개를 뽑아 내고 싶으신거 같은데..

    > dbgrid 는 쿼리랑 연결이 되어있겠죠.?

    > query1.fieldbyname('SuperNo').asstring;

    > 이러케 하면 현제 줄의 필드에 있는 값이 튀어나옵니다 ^^

    > 질문에 맞게 답변했는지 몰겠네여 ^^

    > 그럼 언제나 즐코 즐코 즈을코 하세여~~~~~~~~~~~~

  • Profile
    바보감자 2001.03.20 19:21
    아기코알라 wrote:

    > 답변 정말 정말 감사드립니다.

    > 바보감자님의 앞날에 많은 행운이 있으시길 바랍니다…

    >

    > 제가 질문을 좀 잘 못 드린 것 같군요 정말 정말 죄송합니다.

    >

    > 제가 질문을 드릴 것은 데이터를 입력할 때 중복 데이타 입력을 안되게 할려는 것입니다.

    > SuperNo 필드에 새로운 데이터를 추가할 때 같은 필드에 기존에 똑같은 값의 데이터가 있으면 ‘중복되었음” 이라는 메시지를 뛰우는 것입니다.

    > 아래의 프로시져에 추가해서 해보니 필드의 “Field : ‘SuperNo’ not found” 에러가 뜨더군요...

    >

    > 수고스러우시겠지만 다시 한번 더 보아주시면 정말 감사드리겠습니다.

    >

    > 예) 필드명 SuperNo / CardNo / ~~~~

    > 레코드1 1-1 / 1 / ~~~

    > 레코드2 1-2 ./ 2 / ~~~

    > 레코드3 1-3 / 3 / ~~~

    > 레코드4 1-3 / 4 / ~~

    >

    > 테이블에 이렇게 되어있는데 만약 레코드4번째의 SuperNo 필드 항목에 레코드3과

    > 똑 같은 "1-3" 이라는 값을 입력하려고 할 때 메세지를 나타내게 하는 것입니다.

    >

    > 항상 행복하시고 하시는 모든일 잘 되시길 바랍니다. 감사합니다.

    >

    >

    >

    > 바보감자 wrote:

    > > 아기코알라 wrote:

    > > > 오늘도 프로그램하시느라 수고가 많으시네요…

    > > > 오늘도 여전히 염치불구하고 고수님께 신세를 져야하는 현실이 안타깝지만 도움을

    > > > 요청하겠습니다.

    > > >

    > > > 1. DB : Paradox 7

    > > > 2. Components : Query2, DataSource2, UpdateSQL2, DBGrid 등을 이용하여 DBGrid에

    > > > 직접 Data를 삽입 삭제 하고 있습니다.

    > > >

    > > > 3. UpDateSQL2에서 “SuperNo”라는 필드 명이 Primary Key로 설정

    > > >

    > > > 4. “SuperNo” 유일값을 가져야 함

    > > >

    > > > 5. 아래는 DBGrid에 Data를 입력하고 DB에 저장할 대 사용하는 버턴의 프로시져

    > > >

    > > > 6. “SuperNo”에 Data를 입력할 때 만약 같은 값이 “SuperNo” 에 그런 데이터가

    > > > 있으면 중복되어 있다는 메시지와 함께 저장이 안되게 하려고 합니다.

    > > >

    > > > 7. 이 프로시져가 맞는것인지 좀 보아 주시고 ?????표시에 무엇이 들어 가야 하는지

    > > > 좀 일러 주옵소서..

    > > >

    > > > 8. 혹 더 좋은 방법이 있으시면 이야기 해주시면 더욱더 고맙겠습니다.

    > > >

    > > > procedure TEquipment.ToolButton2Click(Sender: TObject);

    > > > begin

    > > > with Front.Query2 do begin

    > > > SQL.Text := 'Select * from equipmentTable where SuperNo = :SN';

    > > > ParamByName('SN').AsString := ???????????(DBGrid의 SuperNo 레코드 표시)

    > > > Open;

    > > > if not eof then

    > > > begin

    > > > ShowMessage('이미등록되어있읍니다.');

    > > > end;

    > > > ApplyUpdates;

    > > > CommitUpdates;

    > > > Close;

    > > > Open;

    > > > end;

    > > > end;

    > > >

    > > > 읽어주셔서 감사하고 가정에 항상 따뜻한 봄 해살 처럼 행복이 깃들길 바랍니다.

    > > >

    > > > 참고로 테이블의 고조입니다. SuperNo 중복데이타가 입력이 안되어야 합니다.

    > > >

    > > > 필드명 SuperNo / CardNo / ~~~~

    > > > 레코드1 1-1 / 1 / ~~~

    > > > 레코드2 1-2 ./ 2 / ~~~

    > > > 레코드3 1-3 / 3 / ~~~

    > > >

    > >

    > >

    > > 안녕하세여 바보감자입니다 ^^

    > > 질문을 보면.. dbgrid 에 필드중 한개를 뽑아 내고 싶으신거 같은데..

    > > dbgrid 는 쿼리랑 연결이 되어있겠죠.?

    > > query1.fieldbyname('SuperNo').asstring;

    > > 이러케 하면 현제 줄의 필드에 있는 값이 튀어나옵니다 ^^

    > > 질문에 맞게 답변했는지 몰겠네여 ^^

    > > 그럼 언제나 즐코 즐코 즈을코 하세여~~~~~~~~~~~~



    한마디로 SuperNo 에는 중복된 값이 들어가면 안되는거자나요.

    입력 받으실때. 에디트같은걸로 받으시고 그 값을 쿼리 문으로 돌려서

    쿼리 레코드 카운터가 (돌려서 나온 레코드 겟수를 반환 함) 1이상이면

    있네요. 출력 하고

    0이면. 없으니까 바로 삽입 이나 수정 되고 ^^;;

    질문 하시는 내용 맞죠.?



    그 에디트를 어디로 받으시는지는 몰르시겠는데여.

    저 ???????????? 이곳에다가 에디트로 받으시는 값을 넣어주시면 되겠습니다.

    edit1.text 나 paedit1.getvalue 나.. ^^ 그럼 즐코 하세여~~~~~~~~~~

    또 질문 이해 못했으면 어케하지 ^^;;





  • Profile
    아폴론 2001.03.20 01:39
    >

    > 예) 필드명 SuperNo / CardNo / ~~~~

    > 레코드1 1-1 / 1 / ~~~

    > 레코드2 1-2 ./ 2 / ~~~

    > 레코드3 1-3 / 3 / ~~~

    > 레코드4 1-3 / 4 / ~~

    >



    procedure TEquipment.ToolButton2Click(Sender: TObject);

    begin

    with Front.Query2 do begin

    Close;

    Sql.clear;

    Sql.add('Select SuperNo from equipmentTable');

    Sql.add('where SuperNo = :SN');

    ParamByName('SN').AsString := Query1.fieldbyname('SuperN0').asstring;

    Open;

    if RecordCount > 0 then begin

    ShowMessage('이미등록되어있읍니다.');

    Exit;

    //위처럼 버튼2클릭문을 빠져나가든 다시 수정을 할 수도 있습니다.

    end;

    end;

    //위구문에서 해당되지 않는다면 다시 쿼리문의 돌려 인서트 합니다.

    with Front.Query2 do begin

    Close;

    Sql.clear;

    Sql.add('Select SuperNo from equipmentTable');



    Insert;//입력 합니다.

    end;









    end;