Q&A

  • 쿼리오픈시에 오류입니다.
       try
        qryUser.Close;
        with qryUser do begin
         sql.Clear;
         SQL.Add('INSERT INTO USERS(USERID,UNAME,PASSWD,RDATE,TYPE)');
         SQL.Add(' VALUES(:u_id, :u_name, :u_pwd, :u_date, :u_type)');

         ParamByName('u_id').AsString:=edtUid.text;
         ParamByName('u_name').AsString:=edtUname.text;
         ParamByName('u_pwd').AsString:=edtUpwd.text;
         if length(cbxMon.Text)<=1 then
            sMon := '0'+cbxMon.text
         else
            sMon := cbxMon.text;
         if length(cbxDay.Text)<=1 then
            sDay := '0'+cbxDay.text
         else
            sDay := cbxDay.text;
         ParamByName('u_date').AsString:=edtYear.text+'-'+sMon+'-'+sDay;
         iType:=cbxType.ItemIndex;
         ParamByName('u_type').AsString:=inttostr(iType);

         ExecSql; //sql문 실행
        end      // with
       except
         showmessage('입력중 오류발생');
       end;         // try
       qryUser.close;
       qryUser.open;    ---> 왕초보지만 나름대로 디버깅을 해보니 여기서
                                       Table is read only 라는 오류메세지가 뜹니다
쿼리컴포넌트에서는 Refresh 메소드를 사용할 수 없으니
쿼리를 닫았다가 다시 열어야 한다고 해서 저렇게 했는데 왜 오류가 나는건지
잘 모르겠습니다...  
아시는분~  쩜 갈쳐주세요~~~
5  COMMENTS
  • Profile
    사발우성 2002.07.04 21:40
    하이루 촙 사발임돠...
    입력문에 open이 들어 왔네엽....open은 조회시 사용함돠...^^;;
    대충 고쳐봤는디... 이렇게 하면 될거 같네엽....^^ open은 select 문에서 사용하시길.. 그리고 close는  ↓ 아래와 같이  쿼리문 작성시에 한번만 사용해주시면 되겠죠 ^^ 두번씩 사용할 필욘 없슴돠...  
    그럼 즐프 ^^
           with qryUser do begin
             Close;
             sql.Clear;
             SQL.Add('INSERT INTO USERS(USERID,UNAME,PASSWD,RDATE,TYPE)');
             SQL.Add(' VALUES(:u_id, :u_name, :u_pwd, :u_date, :u_type)');

             ParamByName('u_id').AsString:=edtUid.text;
             ParamByName('u_name').AsString:=edtUname.text;
             ParamByName('u_pwd').AsString:=edtUpwd.text;
             if length(cbxMon.Text)<=1 then
                sMon := '0'+cbxMon.text
             else
                sMon := cbxMon.text;
             if length(cbxDay.Text)<=1 then
                sDay := '0'+cbxDay.text
             else
                sDay := cbxDay.text;
             ParamByName('u_date').AsString:=edtYear.text+'-'+sMon+'-'+sDay;
             iType:=cbxType.ItemIndex;
             ParamByName('u_type').AsString:=inttostr(iType);
             try
              ExecSql; //sql문 실행
              showmessage('입력완료!');
             except
              showmessage('입력중 오류발생');
             end;         // try
           end;      // with


  • Profile
    단현석 2002.07.04 21:38
    왜 쿼리를 오픈하시는지 모르겠네요.

    쿼리를 오픈하면 쿼리의 sql 문을 실행하고 결과 데이터를 가져오게 되는데.

    님은 쿼리에 INSERT 문을 넣으셨으니 OPEN 할 필요가 없습니다. INSERT 문은 EXECSQL 명령어로 이미 실행된 상태구요..

    OPEN 메소드는 SQL문이 SELECT 문일 경우 조회결과를 가져오게 되는 때에 사용하는 것으로 알고 있습니다.

    인서트문을 OPEN 하며 어떠한 결과가 돌아오는 것은 아닐테니..OPEN 명령이 필요 없을 것 같습니다. 삽입 결과를 확인하고 싶으시면 또다른 쿼리 컴포넌트에 조회문을 넣고 인서트후에 다시 오픈하시면 될 것 같스빈다.

    그럼 도움이 되었길 바랍니다,
  • Profile
    수서니 2002.07.04 22:14
    쿼리문을 계속 바꾸면 최종적으로 쿼리에 남는건 마지막에 수행한게 되는건가요?
    처음에 조회된건 insert를 함으로써 지워(?)지는거죠?
    -------------------------------------------------바보같은소리..ㅋㅋ--

    insert한 후에 결과를 디비그리드에 보여주려고 open을 한건데
    그렇게 하려면 select문을 다시 써야되는거군요...
    감사합니당...  ㅋㅋ
  • Profile
    단현석 2002.07.05 00:03
    왜 쿼리문을 동적으로 넣는지 모르겠습니다.

    유지 보수를 하기 쉽게 하기 위해 서라도 쿼리에 SQL 문을 넣는 것은 디자인 타임에서 하는 것이 좋을 듯 합니다.

    쿼리 컴포넌트의 SQL 이라는 프로퍼티에 바로 디자인 시에 등록할 수 있습니다.

    그리고 님이 질문하신 데에 답변을 하자면..

    Query1.SQLClear;  이라고 코딩함으로서 전에 사용한  SQL 문이 지워지는 것입니다.

    위처럼 코딩하지 않고 바로 Query1.SQL.Add 하면 지워지고 더해지는 것이 아니라 바로 더해지겠지요.

    동적으로 할당된 SQL 문이라도 Clear 메소드가 실행되기 전까지는 가지고 있습니다.

    그럼 도움이 되었길 바랍니다.
  • Profile
    성더기 2002.07.05 19:12
    디자인시에 쿼리문을 집어 넣어 둔다구 하셨는데..
    테이블이 몇십개씩 되구
    조회 따위의 화면두 엄청 많은데 그걸 전부 디자인 타임에 집어 넣는거는
    너무 비효율 적이지 않을까요?

    디자인시에 집어 넣어 둘경우 화면마다, 조회 조건마다 쿼리를 전부 따로 둬야한다는 것과 같은말인데..^^

    유지 보수 측면에서두 동적 할당이 더 쉬울 수도 있습니다.
    반복되는 쿼리문은 상수로 선언해두고 뒷부분에 조건만 바꿔가면서
    사용하면 되니까요..^^
    • 황민구
    • 2002.07.05 09:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 오소영
    • 2002.07.05 04:44
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 2002.07.05 08:59
      Form1 := TForm.Create(Self); Form1.ShowModal; -_-; 즐코하세요...^^
    • 성더기
      2002.07.05 18:35
      ShowModal은 모달폼아닌가요? Show가 모달리스폼인데..
    • 2002.07.06 12:55
      헐헐.. 그렇군요.. 다시...   Form1.Show; ㅋㅋ 즐코하세요...^^
    • 윤신호
      2002.07.05 06:03
      자세한 옵션 도움말을 보세요. '#','0'을 이용하여 정수형,또는 실수형등을 표현할 수 있습니다.
    • 최용일
      2002.07.05 19:01
      안녕하세요. 최용일입니다. THandle은 객체가 아니라 그냥 부호없는정수(DWORD)입니다. 이건 CreateF...
    • 정민섭
    • 2002.07.05 03:43
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이원상
    • 2002.07.05 02:45
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이원상
      2002.07.05 18:55
      그데 form as view는 어떻게 하나요?
    • 최용일
      2002.07.05 18:57
      폼에서 마우스 오른쪽 클릭해보세요... View as Text메뉴 있을겁니다.
    • 하얀까마귀
      2002.07.05 02:56
      안녕하세요 하얀까마귀 입니다. 무슨말씀이신지 제대로 이해했나 모르겠네요.. ctrl 키를 누르시고. ...
    • 최용일
      2002.07.05 02:55
      안녕하세요. 최용일입니다. 흠~ 1번은 자동으로 해주는 건 없네요 다만 폼을 View as Text로 해서 이벤...
    • 아폴론
    • 2002.07.05 02:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.07.05 03:25
      hsr///////////////////////////////////////////////////////////////// 아래는 게시판에 많이 나오는 외...
    • 하종옥
      2002.07.05 03:47
      한번 더 봐주시겠습니까? 될 줄 알았는데 또 안되네여.. 다음처럼 햇습니다. procedure TForm1.Button...
    • 머슴
      2002.07.05 05:01
      sList를 지역변수 으로 사용해서 그런것 같은데요.. private문 아래나 public문밑에 sList &nb...
    • 하종옥
      2002.07.05 02:52
    • 머슴
      2002.07.05 02:39
      스트링리스트를 한번 이용해보시는것이.. 스트링리스트내에서 소트도 되는것 같고...(sList.Sort) ...
    • KDDG_ZZOM
      2002.07.05 02:35
      루프쓰시면서 루프안에서 쿼리.next를 쓰세요... 물론 루프바로위에서 first로 처음으로 이동시킨후... ...
    • 하종옥
      2002.07.05 20:43
      이렇게 받아온 놈들을 다시 showmessage로 한 번 뿌릴라고 합니다. 그러면 stringList는 []이니까 다시 lo...
    • 엄승태
    • 2002.07.05 01:53
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 엄승태
      2002.07.05 01:46
      calcfield는 입력할 수 있는값이 아닙니다. 어짜피 님이 구현하신 calcfield도 입력된 field 값을 조합해...
    • 하얀까마귀
      2002.07.05 01:33
      안녕하세요 하얀까마귀 입니다. 말씀하신 내용은 안됩니다. 디비그리드 또는 UpdateSQL 등에서 할수...
    • 하얀까마귀
      2002.07.05 01:27
      안녕하세요 하얀까마귀 입니다. 다이렉트 엑스를 쓰실려면.. 콤포넌트가 있어요.. 그런걸 사용하셔도...
    • 이정기
      2002.07.05 01:44
      DelphiX를 찾아보니 버전 5까지 밖엔 안나왔나여???? 6.0용 delphix는 구할수 없나여? 하루종일 돌...
    • 박창범
      2002.07.06 01:37
      DelphiX 로 검색해보시면 나올겁니다..6.0용입니다. 그리고 DirectX 8.0 헤더역시 자료실에 있더군요,. ...
    • 2002.07.05 09:06
      판넬 위에 버튼을 원하는 만큼 올립니다. Shift Key를 누른 상태에서 판넬과 그 위의의 하나로 묶고자 하...
    • 정영희
      2002.07.05 20:28
      답변 감사합니다.. 근데 제가 질문을 좀 더 자세히 했어야 했는데... 컴포넌트를 그렇게 만든 후에.. ocx...
    • 하얀까마귀
      2002.07.05 01:25
      안녕하세요 하얀까마귀 입니다. 판넬에데가 에디트 기능을 넣는건 힘드시겠죠? 그럼. 그냥 에디트들 ...
    • 정영희
      2002.07.05 01:39
      답변 감사합니다. 근데.. 툴바에서 마우스 오른쪽 버튼 클릭하면.. New Button 이라고 나오잖아요.. 그런...
    • totolo
    • 2002.07.05 00:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.07.05 00:50
      dll 을 사용하세요.. 또는 로칼db를 많이 가지는 프로그램을 만드세용. 이미지나 사운드, 동영상을 가지...
    • 정하연
    • 2002.07.05 00:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이선경
      2002.07.08 03:12
      꽁수를 쓰십시요 도트 프린터 걸려 있는 쪽의 pc에 서버용 프로그램을 돌려서 서버에서 출력하면 간단히...
    • 머슴
      2002.07.05 02:20
      저도 님과 같은 경우를 겪었습니다... AssignFile로 프린트하는 방법은 직접프린터 방식밖에 지원을 ...
    • 왕정민
    • 2002.07.04 23:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.07.05 02:24
        Delphi 자료실에 가시면 검색어 인스톨쉴드로 검색하거나   옆에 카테고리에서 ...
    • 장태원
      2002.07.05 00:49
      윈도우2000에서 개발된 프로그램은 98에서 깨질수 있습니다. 예를 들어..폰트차이도 있죠. 찐하게 ...
    • 성더기
      2002.07.05 19:08
      여러가지 방법이 있지 않나요?..^^ 일단 폼의 BorderStyle을 싱글루하구 보더 아이콘에서 멕시마이즈 버튼...
    • 박영수
      2002.07.04 23:54
      폼의 Properties의 BorderStyle을 bsSingle로 하고요. BorderIcons에서 biMaximize를 False로 하면 되네요...
    • 오프라인
      2002.07.04 22:25
      폼 크기를 고정시키시려면 OnResize 이벤트에 폼의 크기(Height, Width)를 코딩해주시면 됨다.. 그...
    • 수서니
    • 2002.07.04 21:25
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 사발우성
      2002.07.04 21:40
      하이루 촙 사발임돠... 입력문에 open이 들어 왔네엽....open은 조회시 사용함돠...^^;; 대충 고쳐봤는디...
    • 단현석
      2002.07.04 21:38
      왜 쿼리를 오픈하시는지 모르겠네요. 쿼리를 오픈하면 쿼리의 sql 문을 실행하고 결과 데이터를 가져오...
    • 수서니
      2002.07.04 22:14
      쿼리문을 계속 바꾸면 최종적으로 쿼리에 남는건 마지막에 수행한게 되는건가요? 처음에 조회된건 insert...
    • 단현석
      2002.07.05 00:03
      왜 쿼리문을 동적으로 넣는지 모르겠습니다. 유지 보수를 하기 쉽게 하기 위해 서라도 쿼리에 SQL 문을 ...
    • 성더기
      2002.07.05 19:12
      디자인시에 쿼리문을 집어 넣어 둔다구 하셨는데.. 테이블이 몇십개씩 되구 조회 따위의 화면두 엄청 많...