Q&A

  • 이것좀봐주세요.. 뭐가잘못됐을까요..??
begin

with Query1 do begin

close;

sql.clear;

sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno');

sql.add('values('''+Trim(Edit1.text)+''' ');

sql.add(' , '''+upperCase(Trim(Edit2.text))+''' ');

sql.add(' , '''+upperCase(Trim(Edit3.text))+''' ');

sql.add(' , '''+Trim(Edit4.text)+''' ');

sql.add(' , '''+Trim(Edit5.text)+''' ');

sql.add(' , '''+Trim(Edit6.text)+''' ');

sql.add(' , '''+Trim(Edit7.text)+''' ');

sql.add(' , '''+Trim(Edit8.text)+''') ');

try

execsql;

except

StatusBar1.Panels[0].text := '입력 Errror!';

form2.Database1.rollback;

exit;

end;

end;

StatusBar1.Panels[0].text := '입력 OK!';

end;



emp테이블에 insert하는 구문(?)이거든요.. 근데 SQL문이 이상하다고 나오는데..

맞는거 같은데.. 누가 좀 봐주세요~~ 부탁합니다...

datatype을 맞춰야 하나요..??

그러니까.. editbox에서 입력을 받아서.. 그 입력 받은걸..

테이블에다가 삽입하는건데.. 위의 문장들이 틀린가요..??

8  COMMENTS
  • Profile
    s6763 2000.06.28 18:13
    const

    LQuote='(';

    RQuote=')';

    quote='"';

    comma=',';

    values=' values ';



    procedure cusorQuery(s: string);

    begin

    with query1 do begin

    close;

    sql.clear;

    sql.add(s);

    sql.execSQL;

    end;

    end;



    procedure Button1Click(sender:Tobjcet);

    var

    s: string;

    begin

    s:= 'insert intto emp' +

    LQuote + 'empno, ename, job, mrg, hiredate, sal, comm, deptno' + Rquote +

    values +

    LQuote +

    quote + trim(edit1.text) + quote + comma +

    quote + uppercase(edit2.text) + quote + comma +

    quote + uppercase(edit3.text) + quote + comma +

    .

    .

    quote + trim(edit8.text) + quote +

    Rquote;



    cusorQuery(s);

    end;

    즐거운 코딩 되세요.

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



    김양미 wrote:

    > begin

    > with Query1 do begin

    > close;

    > sql.clear;

    > sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno');

    > sql.add('values('''+Trim(Edit1.text)+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit2.text))+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit3.text))+''' ');

    > sql.add(' , '''+Trim(Edit4.text)+''' ');

    > sql.add(' , '''+Trim(Edit5.text)+''' ');

    > sql.add(' , '''+Trim(Edit6.text)+''' ');

    > sql.add(' , '''+Trim(Edit7.text)+''' ');

    > sql.add(' , '''+Trim(Edit8.text)+''') ');

    > try

    > execsql;

    > except

    > StatusBar1.Panels[0].text := '입력 Errror!';

    > form2.Database1.rollback;

    > exit;

    > end;

    > end;

    > StatusBar1.Panels[0].text := '입력 OK!';

    > end;

    >

    > emp테이블에 insert하는 구문(?)이거든요.. 근데 SQL문이 이상하다고 나오는데..

    > 맞는거 같은데.. 누가 좀 봐주세요~~ 부탁합니다...

    > datatype을 맞춰야 하나요..??

    > 그러니까.. editbox에서 입력을 받아서.. 그 입력 받은걸..

    > 테이블에다가 삽입하는건데.. 위의 문장들이 틀린가요..??

  • Profile
    김진호 2000.06.28 00:41
    김양미 wrote:

    > begin

    > with Query1 do begin

    > close;

    > sql.clear;

    > sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno');

    > sql.add('values('''+Trim(Edit1.text)+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit2.text))+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit3.text))+''' ');

    > sql.add(' , '''+Trim(Edit4.text)+''' ');

    > sql.add(' , '''+Trim(Edit5.text)+''' ');

    > sql.add(' , '''+Trim(Edit6.text)+''' ');

    > sql.add(' , '''+Trim(Edit7.text)+''' ');

    > sql.add(' , '''+Trim(Edit8.text)+''') ');

    > try

    > execsql;

    > except

    > StatusBar1.Panels[0].text := '입력 Errror!';

    > form2.Database1.rollback;

    > exit;

    > end;

    > end;

    > StatusBar1.Panels[0].text := '입력 OK!';

    > end;

    >

    > emp테이블에 insert하는 구문(?)이거든요.. 근데 SQL문이 이상하다고 나오는데..

    > 맞는거 같은데.. 누가 좀 봐주세요~~ 부탁합니다...

    > datatype을 맞춰야 하나요..??

    > 그러니까.. editbox에서 입력을 받아서.. 그 입력 받은걸..

    > 테이블에다가 삽입하는건데.. 위의 문장들이 틀린가요..??



    이렇게 하시면 곤란 합니다..

    사용자가 임의로 "'" 싱글 쿼티션을 입력 한다면 바로 에러가 나겠지요..



    그러지 마시고 이렇게 하세요..



    with Query1 do

    begin

    close;

    sql.clear;

    sql.add('INSERT INTO EMP( empno, ename) ');

    sql.add(' VALUES( :empno, :ename)');



    ParamByName('empno').AsInteger := Strtoint(Edit1.text);

    ParamByName('ename').AsString := Edit1.text;

    ExecSQL

    end;



    if Query1.RowsAffected > 0 then ShowMessage('성공');



    empno는 숫자

    ename는 문자임을 가정 한 겁니다...

    이렇게 하면 쿼리도 간결하구 싱글 쿼티션을 입력 한다 해도 에러를 막을 수 있죠





  • Profile
    문홍철 2000.06.28 00:36
    김양미 wrote:

    > begin

    > with Query1 do begin

    > close;

    > sql.clear;

    > sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno'); <--이부분이 deptno)') ")"가 빠줬네요..

    > sql.add('values('''+Trim(Edit1.text)+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit2.text))+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit3.text))+''' ');

    > sql.add(' , '''+Trim(Edit4.text)+''' ');

    > sql.add(' , '''+Trim(Edit5.text)+''' ');

    > sql.add(' , '''+Trim(Edit6.text)+''' ');

    > sql.add(' , '''+Trim(Edit7.text)+''' ');

    > sql.add(' , '''+Trim(Edit8.text)+''') ');

    > try

    > execsql;

    > except

    > StatusBar1.Panels[0].text := '입력 Errror!';

    > form2.Database1.rollback;

    > exit;

    > end;

    > end;

    > StatusBar1.Panels[0].text := '입력 OK!';

    > end;

    >

    > emp테이블에 insert하는 구문(?)이거든요.. 근데 SQL문이 이상하다고 나오는데..

    > 맞는거 같은데.. 누가 좀 봐주세요~~ 부탁합니다...

    > datatype을 맞춰야 하나요..??

    > 그러니까.. editbox에서 입력을 받아서.. 그 입력 받은걸..

    > 테이블에다가 삽입하는건데.. 위의 문장들이 틀린가요..??



    위화실표 부분이고요 rollback을 하셨느데..

    노파심이지만 transaction은 거신거죠.. 그리고 commit도 빠졌네요..



    with Database1 do

    begin

    if(InTransaction) then Rollback; 트렌젝션이 걸려있으면 rollback하고요

    StartTransaction;

    try

    어쩌구 저쩌구...

    Commit;

    except

    on E : EDBEngineError do

    begin

    Rollback

    EXIT:

    end;

    end;

    end;

    예를 한번 들어봤는데... 더 좋은 방법이

    있음면 갈켜주세요..

    즐코하세뇨...~.~;



  • Profile
    원영준 2000.06.28 00:34
    혹시 SQL문이 틀린거 아닌지요



    sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno) ');

    요기가 ^^





    김양미 wrote:

    > begin

    > with Query1 do begin

    > close;

    > sql.clear;

    > sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno');

    > sql.add('values('''+Trim(Edit1.text)+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit2.text))+''' ');

    > sql.add(' , '''+upperCase(Trim(Edit3.text))+''' ');

    > sql.add(' , '''+Trim(Edit4.text)+''' ');

    > sql.add(' , '''+Trim(Edit5.text)+''' ');

    > sql.add(' , '''+Trim(Edit6.text)+''' ');

    > sql.add(' , '''+Trim(Edit7.text)+''' ');

    > sql.add(' , '''+Trim(Edit8.text)+''') ');

    > try

    > execsql;

    > except

    > StatusBar1.Panels[0].text := '입력 Errror!';

    > form2.Database1.rollback;

    > exit;

    > end;

    > end;

    > StatusBar1.Panels[0].text := '입력 OK!';

    > end;

    >

    > emp테이블에 insert하는 구문(?)이거든요.. 근데 SQL문이 이상하다고 나오는데..

    > 맞는거 같은데.. 누가 좀 봐주세요~~ 부탁합니다...

    > datatype을 맞춰야 하나요..??

    > 그러니까.. editbox에서 입력을 받아서.. 그 입력 받은걸..

    > 테이블에다가 삽입하는건데.. 위의 문장들이 틀린가요..??

  • Profile
    김양미 2000.06.28 01:05
    답변에 넘 감사드립니다.. 모르던것도 알게되구..

    미안하게도 에러는 끝나지 않네여..

    sql문의 ) 괄호 넣었는데도..

    밑에 처럼 다시 고쳤는데 역시 에러더군여..

    sql이니까..sql에 있는 함수(to_number,...)를 써야 하나요.?

    아님 파스칼에 있는 strtoint 이걸 써야 하나요..??

    왜 도대체 인서트가 안될까요..

    (큰일입니당.. 삭제,수정도 해야하는데.. 오늘안으로.. 아니지..5시안으로..갑갑함미다.)



    begin

    with Query1 do begin

    close;

    sql.clear;

    sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, comm, deptno)');

    sql.add('values(to_number('''+Trim(Edit1.text)+''') ');

    sql.add(', upperCase('''+Trim(Edit2.text)+''') ');

    sql.add(', upperCase('''+Trim(Edit3.text)+''') ');

    sql.add(', to_number('''+Trim(Edit4.text)+''') ');

    sql.add(', to_date('''+Trim(Edit5.text)+''') ');

    sql.add(', to_number('''+Trim(Edit6.text)+''') ');

    sql.add(', to_number('''+Trim(Edit7.text)+''') ');

    sql.add(', to_number('''+Trim(Edit8.text)+''') ');

    // parambyname('data').AsString := ;

    try

    execsql;

    except

    StatusBar1.Panels[0].text := '입력 Errror!';

    form2.Database1.rollback;

    exit;

    end;

    end;

    StatusBar1.Panels[0].text := '입력 OK!';

    end;



    열악한 분위기에서 공부를 하니.. 힘듭니다.. ㅠ.ㅠ

    많이 도와주셔서 넘넘~~ 감사하구요.. 앞으로도.. 많은 성원(?) 부탁합니다...



    참!

    이런에러메세지가...



    Project prg.exe raised exception class EDBEngineError with message 'General SQL error.

    ORA-00917: missing comma'. Process stopped. Use Step or Run to continue.



    이런에러메세지와 함께... 이런 메세지도..



    'No user transaction is currently in progress.'



    이건또모져..??

  • Profile
    cell 2000.06.28 01:45
    숫자일 경우는

    그냥 edit1.Text 만 쓰면 됩니다.

    '(''' + Edit2.Text + ''',' +

    Edit1.Text + ',' + .......



    이런식으로 하면 되겠죠

  • Profile
    원영준 2000.06.28 01:15


    > Project prg.exe raised exception class EDBEngineError with message 'General SQL error.

    > ORA-00917: missing comma'. Process stopped. Use Step or Run to continue.



    위의 에러는 values('abc','bcd' ...) 이런식으로 값과 값사이에 ","이 안들어간 에러구요







    >

    > 이런에러메세지와 함께... 이런 메세지도..

    >

    > 'No user transaction is currently in progress.'

    >





    요고는 위의 다른사람이 트랜잭션에 대해 잘 설명 했네요 건강하세요

  • Profile
    김양미 2000.06.28 04:24
    감사~ 감사~!!



    행복하세요~~~~~~~ *^^*

    • hsband
    • 2000.06.28 00:38
    • 3 COMMENTS
    • /
    • 0 LIKES
    • s6763
      2000.06.28 18:03
      hsband wrote: > 델파이를 이용해 Paradox로 DB를 사용하고 있습니다.그런데 두개의 폼에서 Paradox로 연...
    • 이재식
      2000.06.28 04:14
      hsband wrote: > 델파이를 이용해 Paradox로 DB를 사용하고 있습니다.그런데 두개의 폼에서 Paradox로 연...
    • hsband
      2000.06.29 05:59
      이재식 wrote: > hsband wrote: > > 델파이를 이용해 Paradox로 DB를 사용하고 있습니다.그런데 두개의 ...
    • 문홍철
      2000.06.28 01:16
      타락천사 wrote: > 안녕하세여.. 타락임다..^^ > > 자꾸 질문하네여..^^;; > > 책에는 마스터, 디테...
    • 원영준
    • 2000.06.28 00:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • nilriri
      2000.06.28 00:39
      loginprompt라는 속성이 true로 되어있는것 아닌가요? 데이터베이스컴포넌트를 더블클릭하시거나 오브젝...
    • 원영준
      2000.06.28 00:58
      미치것네요!
    • 홍세비
      2000.06.28 19:30
      원영준 wrote: > 미치것네요! 안녕하세요.홍세빕니다. 저도 그것땜시 고민한 적이 있었죠. http...
    • 심민기
    • 2000.06.28 00:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.06.29 01:48
      제발 가르쳐 줘요. 저도 모르겠어여, 헝헝헝... > 안녕하십니까 > usb 카메라를 사용 하는데 > 내프로...
    • 바보
      2000.07.01 07:45
      안녕하세요!! 바보 입니다. 화상카메라 사이즈포맷이라.. 저도 몰라요!! ^^;;(바보가 뭘알겠어) 보통 ...
    • delcom
      2000.07.08 02:47
      왕델초보 wrote: > > 스트링 그리드 내용을 엑셀로 보내기 기능을 구현할 수 있나요? > > 디비그리드...
    • 김양미
    • 2000.06.28 00:12
    • 8 COMMENTS
    • /
    • 0 LIKES
    • s6763
      2000.06.28 18:13
      const LQuote='('; RQuote=')'; quote='"'; comma=','; values=' values '; procedure cusor...
    • 김진호
      2000.06.28 00:41
      김양미 wrote: > begin > with Query1 do begin > close; > sql.clear; > ...
    • 문홍철
      2000.06.28 00:36
      김양미 wrote: > begin > with Query1 do begin > close; > sql.clear; > ...
    • 원영준
      2000.06.28 00:34
      혹시 SQL문이 틀린거 아닌지요 sql.add('insert into emp(empno, ename, job, mrg, hiredate, sal, com...
    • 김양미
      2000.06.28 01:05
      답변에 넘 감사드립니다.. 모르던것도 알게되구.. 미안하게도 에러는 끝나지 않네여.. sql문의 ) 괄호 넣...
    • cell
      2000.06.28 01:45
      숫자일 경우는 그냥 edit1.Text 만 쓰면 됩니다. '(''' + Edit2.Text + ''',' + Edit1.Text + ...
    • 원영준
      2000.06.28 01:15
      > Project prg.exe raised exception class EDBEngineError with message 'General SQL error. > ORA-00...
    • • • •
    • 잠씨
      2000.06.27 23:39
      원영준 wrote: > 그것이 궁금합니다. 건강하세여! Query1.RecordCount
    • 잠씨
    • 2000.06.27 23:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.06.27 23:45
      안녕하세요. 최용일입니다. 소스에는 별 문제가 없는 것 같은데요... 혹시 폼에서 OLE를 사용하지 않으...
    • 이병웅
      2000.06.28 00:01
      용일님 답변에 감사합니다.. 용일님의 말씀이 맞아요 OleSysError 그런데 coinitialize 함수는 어디에서 ...
    • 최용일
      2000.06.28 00:11
      안녕하세요. 최용일입니다. OLE 인스턴스를 사용하기 전에 CoInitialize(nil); 이렇게 초기화를 해주시...
    • 김진호
      2000.06.27 23:11
      이병웅 wrote: > 제가 만든 DLL을 사용하려고 하면 coinitialize를 호출할수 없습니다. 라는 에러메시지...
    • 이병웅
      2000.06.27 23:36
      진호님 답변에 감사드립니다... 진호님이 시키는 데로 했는데 똑같은 메시지가 나네요 제가 잘못 해서 그...
    • 최용일
      2000.06.27 23:20
    • 사발우성
      2000.06.28 00:13
    • 최용일
      2000.06.28 00:32
    • 사발우성
      2000.06.28 00:49
    • 최용일
      2000.06.28 00:54
    • 돌맹이
    • 2000.06.27 22:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 문홍철
      2000.06.28 00:19
      돌맹이 wrote: > Select Distinct Cu.Seq,Cu.CustomerCode, S.CustomerKind,Cu.CustomerName, Cu.Charge, ...
    • 투신
    • 2000.06.27 21:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델초
    • 2000.06.27 21:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 황인득
    • 2000.06.27 21:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.06.29 20:32
      NMUDP에서 WM_ENDQUERYSESSION이라는 메세지를 처리해 주지 않은 버그입니다. Delphi 3까지는 ActiveX이...
    • 강대근
      2000.07.07 03:03
      아마 dbgrid.column.status 가 csDefault가 아니어서 일겁니다. formshow나formcreate에서 dbgrid1.colum...
    • 문홍철
      2000.06.28 00:23
      나원용 wrote: > 안녕하세요? > 프로그램을 개발하다가 > DBGRID의 OnDrawDataCell 이벤트에 코드를 추...
    • 김봉준
    • 2000.06.27 20:52
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김봉준
      2000.06.27 23:10
      대소문자를 구별하지 않는건.. 필드명이 아닌가 합니다.. 예를 들어 'title'란 필드의 항목에.. WordPro...
    • 모질이
      2000.08.01 04:34
      간단하게 할수 있는 방법 searchtext:=uppercase(searchtext.text); select * from Test where (uppe...
    • 유레카
      2000.06.27 22:41
      파라독스는 대소문자를 구분하지 않는 걸로 알고 있는데요. 다만 화면상 첫자가 대문자로 표현될 뿐 아닌...