Q&A

  • SELECT 키워드가 없습니다. 왜 이런 에러가.. 도와주세요.
델파이 얼마 안된 초보 입니다. 아래와 같이 소스를 제작하고 컴파일을 시켜보니 에러는 안나는데 직접 돌려보면 에러메시지가 'ORA-00928 SELECT 키워드가 없습니다.' 등의 메시지가 나옵니다. Select 문이 잘못된건가여? 전 아무리봐도 에러가 없는것 같은데...ㅡ.ㅡ;
어제까지 끝내야 하는건데 오늘까지도 못 끝내면 ㅜ.ㅜ...아마 쫓겨날지 멀라여 도와주세요.

procedure TForm1.BitBtn1INSERTClick(Sender: TObject);
var str,str1,str2,strr,value,I : string;
var value1 : integer;
begin
   with dmchosun.Query1 do
   begin
      strr := 'select a.*, b.* from t_mappingjoywow a, product b where a.sortcode=b.sortcode and rownum < 6 order by b.number1';
      Close;
      SQL.Clear;
      SQL.Add(strr);
      Open;
      I := fieldbyname('LevelA').asstring + fieldbyname('LevelB').asstring + fieldbyname('LevelC').asstring;
      if EOF then exit;
   end;
   with dmchosun do
   begin
      while not Query1.Eof do
      begin
         with Query2 do
         begin
            str := 'select max(grcode) as Maxval from T_Goods where levelA=';
            str := str + Query1.fieldbyname('LEVELA').asstring + 'and levelB=';
            str := str + Query1.fieldbyname('LEVELB').asstring + 'and levelC=';
            str := str + Query1.fieldbyname('LEVELC').asstring;
            Close;
            SQL.Clear;
            SQL.Add(str);
            Open;
         end;
         value := Query2.fieldbyname('Maxval').asstring;
         if value = '' then begin
           value := '0001';
         end else if value <> '' then begin
           value := IntToStr(StrToInt(value)+1);
           if length(value) <> 4 then
             for value1 :=0 to 4 do begin
               value := '0' + value;
               if length(value) = 4 then
                 break;
            end;
         end;
         with Query3 do
         begin
            str1 := 'insert into T_GATTR (:aa1,:aa2,:aa3,:aa4,:aa5,:aa6,:aa7,:aa8,:aa9) values(:a1,:a2,''00000001'',''02304'',:a3,:a4,:a5,:a6,:a7)';
            Close;
            SQL.Clear;
            SQL.Add(str1);
            ParamByName('aa1').asstring := 'GCODE';  // value
            ParamByName('aa2').asstring := 'GRCODE';  // I+value
            ParamByName('aa3').asstring := 'STOREID';  // 00000001
            ParamByName('aa4').asstring := 'STORETYPE';  // 02304
            ParamByName('aa5').asstring := 'ATTRVALUE1';  // norm
            ParamByName('aa6').asstring := 'MDPRICE';  // supplyp2
            ParamByName('aa7').asstring := 'BUYPRICE';  // supply1
            ParamByName('aa8').asstring := 'CUSTOMERPRICE';  // price
            ParamByName('aa9').asstring := 'SALESPRICE';  //won
            ParamByName('a1').asstring := value;
            ParamByName('a2').asstring := I + value;
            ParamByName('a3').asstring := Query1.fieldbyname('NORM').asstring;
            ParamByName('a4').asstring := Query1.fieldbyname('SUPPLYP2').asstring;
            ParamByName('a5').asstring := Query1.fieldbyname('SUPPLYP1').asstring;
            ParamByName('a6').asstring := Query1.fieldbyname('PRICE').asstring;
            ParamByName('a7').asstring := Query1.fieldbyname('WON').asstring;
            ExecSQL;
         end;
         with Query4 do
         begin
            str2 := 'insert into T_GOODS (:bb1,:bb2,:bb3,:bb4,:bb5,:bb6,:bb7,:bb8,:bb9) values(:b1,''00000001'',''02304'',:b2,:b3,:b4,:b5,:b6,:b7)';
            Close;
            SQL.Clear;
            SQL.Add(str2);
            ParamByName('bb1').asstring := 'GRCODE';
            ParamByName('bb2').asstring := 'STOREID';
            ParamByName('bb3').asstring := 'STORETYPE';
            ParamByName('bb4').asstring := 'GNAME';
            ParamByName('bb5').asstring := 'COMPANY';
            ParamByName('bb6').asstring := 'SHOTINFO';
            ParamByName('bb7').asstring := 'DESCRIPTION';
            ParamByName('bb8').asstring := 'LARGEIMAGE';
            ParamByName('bb9').asstring := 'WRITEDATE';
            parambyname('b1').asstring := I + value; // level1+gcode
            ParamByName('b2').asstring := Query1.fieldbyname('PRODNAME').asstring;
            ParamByName('b3').asstring := Query1.fieldbyname('MAKECOM').asstring;
            ParamByName('b4').asstring := Query1.fieldbyname('PRODINFO1').asstring;
            ParamByName('b5').asstring := Query1.fieldbyname('PRODINFO2').asstring;
            ParamByName('b6').asstring := Query1.fieldbyname('PRODPIC').asstring;
            ParamByName('b7').asstring := Query1.fieldbyname('PRODDATE').asstring;
            ExecSQL;
         end;
            memo1.text := str1;
            memo2.text := I+value;
      Query1.next;
      end;
   end;
end;
4  COMMENTS
  • Profile
    *^^* 2002.02.06 21:08

       str := 'select max(grcode) as Maxval from T_Goods where levelA=';
       str := str + Query1.fieldbyname('LEVELA').asstring + 'and levelB=';
       str := str + Query1.fieldbyname('LEVELB').asstring + 'and levelC=';
       str := str + Query1.fieldbyname('LEVELC').asstring;

    해결하셨는지 모르겠네요..
    제가 보기엔 위에 부분이 잘못된거같은데.

    첫번째 str을
    str := 'select max(grcode) as Maxval from T_Goods where levelA= ''';
    이렇게 수정하셔야 할듯하고요.

    두번째 str은
    str := str + Query1.fieldbyname('LEVELA').asstring + ''' and levelB= ';
    이렇게 하셔야될듯 합니당..

    그래서...다시 써보면..
       str := 'select max(grcode) as Maxval from T_Goods where levelA = ''';
       str := str + Query1.fieldbyname('LEVELA').asstring + ''' and levelB= ''';
       str := str + Query1.fieldbyname('LEVELB').asstring + ''' and levelC= ''';
       str := str + Query1.fieldbyname('LEVELC').asstring + '''';

    asstring이 들어가는 부분에 ' '가 붙으니까요.
    '앞뒤로 띄어쓰기도 신경쓰셔야하고요..
  • Profile
    성더기 2002.02.06 00:50
    해당메세지에 대한 에러가 맞는 지는 모르겠습니다만
    AsString+'and labelB=' 이런식으로 쓰셨던데
    and 앞쪽에 한칸의 공백을 두셔야 할듯..
  • Profile
    장명선 2002.02.06 00:23
    어느 부분이 에러인지 잘 모르겠지만 에러나는 부분을 표시해주세요

    그리고 Select 문장은 정확한것 같은데 아래 Insert 문장에서
    Table Name 다음에 필드이름앞에 ':' 이것은 빼야 하지 않을까여 ?
    에러부분을 정확히 알려주세요 Break 걸어서 확인 요망

    즐코하세요


  • Profile
    major 2002.02.06 02:38
    제가 보기에는 이부분인거 같은 데여...

    with Query2 do
        begin
       str := 'select max(grcode) as Maxval from T_Goods where levelA=';
       str := str + Query1.fieldbyname('LEVELA').asstring + 'and levelB=';
       str := str + Query1.fieldbyname('LEVELB').asstring + 'and levelC=';
       str := str + Query1.fieldbyname('LEVELC').asstring;

    근데 실행파일은 되고 컴파일이 안 된다는 게 이해가 안 갑니다.
    혹 다른 문제라도 있지 않을 까여..
    일단은  Str부분에서 님께서 하시대로 라면 값하고 And 가 붙어서 쿼리가
    돌아 갈 것 같은데여..
    그러면 아마 쿼리가 안 돌아 갈것 같아여..
    그리고 나머지 쿼리는 장명선님께서 말씀하신대로 고치시면 될 것 같구여..
    그 전에 테스트를 함 해 보세여..
    그럼 즐프하세여..
    • 문소희
    • 2002.02.06 01:13
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 권희수
      2002.02.06 01:34
      소켓서버가 스레드로 동작한다면 위와 같은 현상이 나올수있다고 생각되네여. 스레드는 1CPU에서는 그...
    • 김진선
    • 2002.02.06 00:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.06 01:40
      단지 에러메세지 가지고는 머라고 말을 못하겠네요 에러나는 문장을 올려주세요 그럼 즐코하세요
    • major
      2002.02.06 02:29
      안녕하세여.. 제가 아직 초보라서 정확히는 모르겠는 데 아마 값에 다 널 값을 넣으시려고 하시는 것 ...
    • 김진선
      2002.02.09 00:10
      혹시해서 널갑에 공백을 줘봤는데도 마찬가지입니다. 소스라할것도 없이 뭐 대략 이렇습니다. with query...
    • 최용일
      2002.02.06 03:53
      안녕하세요. 최용일입니다. 이경문님이 답변하신것에 추가로... 코딩은 VB예제 그대로 델파이로 컨버팅...
    • 이경문
      2002.02.06 03:31
      Project - Import Library - Install ActiveX Tab에 관련 com 이 컴포넌트로 등록됩니다.
    • 박성환
    • 2002.02.06 00:39
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.06 00:42
      우선 Quick Rep의 DataSet이 연결되었나 확인하시기 바랍니다. 즐코하세요
    • 박성환
      2002.02.06 00:58
      답변해 주셔서 감사함니다... 그런데요 연결되어 있구여  화면상에는 이상이 전혀 없는거구여...
    • 장명선
      2002.02.06 01:38
      그럼 Query나 Table를 오픈한 상태에서 Quick Report를 미리보기 해보세요 거기서두 안나오면 이상이 있는...
    • major
      2002.02.06 02:32
      안녕하세여.. 그러시면 이벤트를 확인 하시는 편이 빠를것 같네여.. 아마 에프터 프린터 이벤트 쪽을 주...
    • 김돈걸
    • 2002.02.06 00:15
    • 4 COMMENTS
    • /
    • 0 LIKES
    • *^^*
      2002.02.06 21:08
         str := 'select max(grcode) as Maxval from T_Goods where levelA=';    str ...
    • 성더기
      2002.02.06 00:50
      해당메세지에 대한 에러가 맞는 지는 모르겠습니다만 AsString+'and labelB=' 이런식으로 쓰셨던데 and ...
    • 장명선
      2002.02.06 00:23
      어느 부분이 에러인지 잘 모르겠지만 에러나는 부분을 표시해주세요 그리고 Select 문장은 정확한것 같...
    • major
      2002.02.06 02:38
      제가 보기에는 이부분인거 같은 데여... with Query2 do     begin  &nbs...
    • 우정민
      2002.02.05 23:45
      타이머 interval 을 0.5초로 놓고 (타이머가 정확한 1초가 아니니까, 안전하게...) 현제 시간을 불러...
    • 이은호
    • 2002.02.05 20:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김규억
      2002.02.06 01:51
      ADO를 이용하던 BDE를 이용하던 DB에서 하는 작업하고는 상관없습니다... ADO가 DB를 관리하는게 아...
    • 브래드
    • 2002.02.05 20:42
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.10 02:28
      다음을 참고하시면 도움이 될꺼 깥은데....^^ var btn: Longint; begin // Button2의 원도우 정...
    • 공성환
      2002.02.05 22:00
      답변은 아니고 그냥 라벨 2개로 사용하셔도 되는데...
    • 임현창
      2002.02.06 01:06
      라벨 쓸 거면 하나로도 두 줄 쓸 수 있죠.
    • 최용일
      2002.02.05 23:24
      안녕하세요. 최용일입니다. 확장자가 다른거 외에는 아무런 차이점이 없습니다. 파일이라는것은 만들...
    • 이상협
    • 2002.02.05 20:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 공성환
      2002.02.05 22:06
      procedure Proc_Button(vp_Comp: TComponent); procedure TForm1.Proc_Button(vp_Comp: TComponent); v...
    • 이상협
      2002.02.05 22:50
      이게 뭔소리에여 누구아는사람 해석좀 부탁드리께여 TWinControl ? ,  controls[vv_i] ? , 왕...
    • 최용일
      2002.02.05 23:20
      안녕하세요. 최용일입니다. TWinControl(...)한 것은 형변환한거네요... 님께서도 많이 쓰신 코드인데.....
    • 임현창
      2002.02.06 02:11
      BDE, DBTables 등의 유닛을 포함시키면 해당 함수들을 쓸 수 있습니다. 아무래도 C DLL에 있는 함수들을 ...
    • 성기수
      2002.02.06 03:01
      답변 주심에 감사드립니다. ^^
    • 조성필
    • 2002.02.05 19:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임현창
      2002.02.06 00:01
      CGI쪽 질문인지 MySQL 쪽 질문인지 잘 모르겠습니다. 아무튼 가장 간단한 CGI부터 설명을 드리긴 할텐데...
    • 공성환
      2002.02.05 19:38
      rownum이라는걸 써보세요... 그리고 500개정도면 인덱스만 잘걸면 속도도 나올것같은데... 우선 본인이 ...
    • 이병훈
      2002.02.05 22:43
      안녕하세요. 훔.. 만약 델파이를 사용하신다면 걱정없습니다. 델파이는 내부적으로 부분범위 처리를 ...
    • 강환춘
      2002.02.06 02:00
    • 돌멩이
      2002.02.05 06:22
      테이블의 데이터가 모두 같은 형이 아니라면 레코드를 사용해야 하지 않나요? 제가 이해를 잘 못했나요?...
    • * 아자!! *
      2002.02.05 06:45
      안녕하세요?.. 답변너무고마워요.. 될것 같으면서도 안되고.... 오늘 하루종일 이것가지구 고민을 했었는...
    • 오진욱
    • 2002.02.05 04:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌멩이
      2002.02.05 06:24
        ClientToScreen()   ScreenToClient() 위의 두개 함수를 사용해 보세요.. 도...
    • 강정구
    • 2002.02.05 03:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.05 04:04
      MaskEdit 라는곳에 #을 입력하면 0은 표시가 안됩니다. 즐코 하세요
    • 한하눌
      2002.02.05 18:25
      프레임의 라인말구 shap를 사용하세요 물론 귀찮으시겠지만..