Q&A

  • 스토프로시져를 써보신분이라면 내용확인 좀 하시고 리플을...
2차례에 걸쳐서 질문을 올렸지만 결국 제가 하나 찾아냈습니다.

> 답변이 없어서 다시 올립니다. --;;

> 하나의 스토프로시저 컴포넌트에서 여러 프로시져 쓰기

>

> 스토프로시져이름.StoredProcName := '프로시저명';

>

> 위와같이 프로시져명을 바꾸게 되면 원래 안되는건지요. 델파이 버그인지요?

> 에러를 파악해보면 아예 파라미터를 찾을 수 없다고 하네요.

> 디자인할 때는 프로시져이름만 바꾸면(물론 데이타베이스이름을 주고요) 파라미터가 알어서 해당 프로시져 파라미터가 나오던데요. @.@

>

> 런타임일 때에 프로시져 닫고 프로시져명 바꾸고 파라미터입력받을 때 해당파라미터를 못찾겠다고 합니다. ㅜ.ㅜ 심지어 바뀌전과 같은 이름의 파라미터임에도 불구하구요.

>

> 고수님들 저에게 빛을.. 해결안되면 디자인에서 프로시져늘리는거야 문제가 안되지만 코딩에서 같은 일을 두번씩해야됩니다 ㅜ.ㅜ 폼도 8개가량이나 되는 것이

> 1. 프로시져명만 다르게 2벌이 된다는것이죠.

> 2. 아니면 프로시져를 쿼리문으로 다시 다 고쳐야합니다. ㅜ.ㅜ



문제는 BDE로 연결하느냐 ODBC로 연결하느냐는 차이였습니다.

따러서 하나의 프로시져컴포넌트로 스토프로시져이름을 꼬~옥 바꿔써야 하는경우는 ODBC로 연결해야만 된다는 얘긴데(데이타베이스에서 사용자 아이디와 패스도 함께해줘야 되구요.)

한 3일여만에 알긴했지만 여전히 텁텁하네요 이러지는 않을 것 같아서요 --;;



델파이가 왜 이렇게 되는지? 나의 무지의 소산인지 고수님덜아 여기에 대해서 아시는분 시원한 답변좀 해줘요 ㅜ.ㅜ

5  COMMENTS
  • Profile
    김광섭 2001.03.15 22:48
    김광섭 wrote:

    > 2차례에 걸쳐서 질문을 올렸지만 결국 제가 하나 찾아냈습니다.

    > > 답변이 없어서 다시 올립니다. --;;

    > > 하나의 스토프로시저 컴포넌트에서 여러 프로시져 쓰기

    > >

    > > 스토프로시져이름.StoredProcName := '프로시저명';

    > >

    > > 위와같이 프로시져명을 바꾸게 되면 원래 안되는건지요. 델파이 버그인지요?

    > > 에러를 파악해보면 아예 파라미터를 찾을 수 없다고 하네요.

    > > 디자인할 때는 프로시져이름만 바꾸면(물론 데이타베이스이름을 주고요) 파라미터가 알어서 해당 프로시져 파라미터가 나오던데요. @.@

    > >

    > > 런타임일 때에 프로시져 닫고 프로시져명 바꾸고 파라미터입력받을 때 해당파라미터를 못찾겠다고 합니다. ㅜ.ㅜ 심지어 바뀌전과 같은 이름의 파라미터임에도 불구하구요.

    > >

    > > 고수님들 저에게 빛을.. 해결안되면 디자인에서 프로시져늘리는거야 문제가 안되지만 코딩에서 같은 일을 두번씩해야됩니다 ㅜ.ㅜ 폼도 8개가량이나 되는 것이

    > > 1. 프로시져명만 다르게 2벌이 된다는것이죠.

    > > 2. 아니면 프로시져를 쿼리문으로 다시 다 고쳐야합니다. ㅜ.ㅜ

    >

    > 문제는 BDE로 연결하느냐 ODBC로 연결하느냐는 차이였습니다.

    > 따러서 하나의 프로시져컴포넌트로 스토프로시져이름을 꼬~옥 바꿔써야 하는경우는 ODBC로 연결해야만 된다는 얘긴데(데이타베이스에서 사용자 아이디와 패스도 함께해줘야 되구요.)

    > 한 3일여만에 알긴했지만 여전히 텁텁하네요 이러지는 않을 것 같아서요 --;;

    >

    > 델파이가 왜 이렇게 되는지? 나의 무지의 소산인지 고수님덜아 여기에 대해서 아시는분 시원한 답변좀 해줘요 ㅜ.ㅜ

    제가 문제 해결이 되어서 다른 분들과 제 자신이 확인을 위해서 제가 올린 문제가 해결이 되어서 이렇게 글을 씁니다.(결자해지?)



    프로시져 명이 바뀌면 파라미터를 재생성 해주어야 하더군요. 쩝~

    아래는 예제입니다.



    sp1.StoredProcName := 'dbo.pr_FieldName_Search';

    sp1.Params.CreateParam(ftString,'@DB',ptInput);

    sp1.Params.CreateParam(ftString,'@TableId',ptInput);

    sp1.ParamByName('@DB').AsString := 'dbSystemTool';

    sp1.ParamByName('@TableId').AsString := gsTableName;



  • Profile
    나그네 2001.02.28 06:40
    글쎄용



    스토프로시져이름.StoredProcName := '프로시저명';

    스토프로시져이름.prepare;

    //바로 위라인 이 있는지?

    //있어도 안된다면 글세용 입니다요

    스토프로시져이름.parambyname('인자').AsString := '1234'

    스토프로시져이름.execproc;









    김광섭 wrote:

    > 2차례에 걸쳐서 질문을 올렸지만 결국 제가 하나 찾아냈습니다.

    > > 답변이 없어서 다시 올립니다. --;;

    > > 하나의 스토프로시저 컴포넌트에서 여러 프로시져 쓰기

    > >

    > > 스토프로시져이름.StoredProcName := '프로시저명';

    > >

    > > 위와같이 프로시져명을 바꾸게 되면 원래 안되는건지요. 델파이 버그인지요?

    > > 에러를 파악해보면 아예 파라미터를 찾을 수 없다고 하네요.

    > > 디자인할 때는 프로시져이름만 바꾸면(물론 데이타베이스이름을 주고요) 파라미터가 알어서 해당 프로시져 파라미터가 나오던데요. @.@

    > >

    > > 런타임일 때에 프로시져 닫고 프로시져명 바꾸고 파라미터입력받을 때 해당파라미터를 못찾겠다고 합니다. ㅜ.ㅜ 심지어 바뀌전과 같은 이름의 파라미터임에도 불구하구요.

    > >

    > > 고수님들 저에게 빛을.. 해결안되면 디자인에서 프로시져늘리는거야 문제가 안되지만 코딩에서 같은 일을 두번씩해야됩니다 ㅜ.ㅜ 폼도 8개가량이나 되는 것이

    > > 1. 프로시져명만 다르게 2벌이 된다는것이죠.

    > > 2. 아니면 프로시져를 쿼리문으로 다시 다 고쳐야합니다. ㅜ.ㅜ

    >

    > 문제는 BDE로 연결하느냐 ODBC로 연결하느냐는 차이였습니다.

    > 따러서 하나의 프로시져컴포넌트로 스토프로시져이름을 꼬~옥 바꿔써야 하는경우는 ODBC로 연결해야만 된다는 얘긴데(데이타베이스에서 사용자 아이디와 패스도 함께해줘야 되구요.)

    > 한 3일여만에 알긴했지만 여전히 텁텁하네요 이러지는 않을 것 같아서요 --;;

    >

    > 델파이가 왜 이렇게 되는지? 나의 무지의 소산인지 고수님덜아 여기에 대해서 아시는분 시원한 답변좀 해줘요 ㅜ.ㅜ

  • Profile
    명탁 2001.02.28 07:01
    with storedproc do

    begin

    params.clear; // 이것두... 하고있어염

    storedprocname :='프로시저 이름';

    prepare;

    params[0].asstring := '거시기';

    params[1].as......등등

    execproc;

    edit.text := params[18].asstring //리턴 되는 거시기..

    unprepare;

    이리 전 하는디 절라 잘됨다...

    위에 작성자:ㅜㅜ 답변 좀 해져여....

    나그네 wrote:

    > 글쎄용

    >

    > 스토프로시져이름.StoredProcName := '프로시저명';

    > 스토프로시져이름.prepare;

    > //바로 위라인 이 있는지?

    > //있어도 안된다면 글세용 입니다요

    > 스토프로시져이름.parambyname('인자').AsString := '1234'

    > 스토프로시져이름.execproc;

    >

    >

    >

    >

    > 김광섭 wrote:

    > > 2차례에 걸쳐서 질문을 올렸지만 결국 제가 하나 찾아냈습니다.

    > > > 답변이 없어서 다시 올립니다. --;;

    > > > 하나의 스토프로시저 컴포넌트에서 여러 프로시져 쓰기

    > > >

    > > > 스토프로시져이름.StoredProcName := '프로시저명';

    > > >

    > > > 위와같이 프로시져명을 바꾸게 되면 원래 안되는건지요. 델파이 버그인지요?

    > > > 에러를 파악해보면 아예 파라미터를 찾을 수 없다고 하네요.

    > > > 디자인할 때는 프로시져이름만 바꾸면(물론 데이타베이스이름을 주고요) 파라미터가 알어서 해당 프로시져 파라미터가 나오던데요. @.@

    > > >

    > > > 런타임일 때에 프로시져 닫고 프로시져명 바꾸고 파라미터입력받을 때 해당파라미터를 못찾겠다고 합니다. ㅜ.ㅜ 심지어 바뀌전과 같은 이름의 파라미터임에도 불구하구요.

    > > >

    > > > 고수님들 저에게 빛을.. 해결안되면 디자인에서 프로시져늘리는거야 문제가 안되지만 코딩에서 같은 일을 두번씩해야됩니다 ㅜ.ㅜ 폼도 8개가량이나 되는 것이

    > > > 1. 프로시져명만 다르게 2벌이 된다는것이죠.

    > > > 2. 아니면 프로시져를 쿼리문으로 다시 다 고쳐야합니다. ㅜ.ㅜ

    > >

    > > 문제는 BDE로 연결하느냐 ODBC로 연결하느냐는 차이였습니다.

    > > 따러서 하나의 프로시져컴포넌트로 스토프로시져이름을 꼬~옥 바꿔써야 하는경우는 ODBC로 연결해야만 된다는 얘긴데(데이타베이스에서 사용자 아이디와 패스도 함께해줘야 되구요.)

    > > 한 3일여만에 알긴했지만 여전히 텁텁하네요 이러지는 않을 것 같아서요 --;;

    > >

    > > 델파이가 왜 이렇게 되는지? 나의 무지의 소산인지 고수님덜아 여기에 대해서 아시는분 시원한 답변좀 해줘요 ㅜ.ㅜ

  • Profile
    김광섭 2001.02.28 18:51
    님들 답변에 감사합니다. 올린지 거의 세번만에 첨 답변을 받아 보네요 ^^(1주~2주)

    (--> spTmp.params.clear 이 문장 하나보구)



    spTmp.Close;

    spTmp.params.clear; // 이것 첨가해바꺼든여



    spTmp.StoredProcName := 'dbo.pr_tbOrderDetail_Convert';

    spTmp.prepare; // <-- 요기서 에러가 OrderNo 파라미터를 못찾겠다고 합니다.

    spTmp.params.ParamByName('@OrderNo').asstring := '010228';

    spTmp.params.ParamByName('@LensItem').asstring := '11111';

    spTmp.params.ParamByName('@Piecepair').asstring := '0';

    spTmp.params.ParamByName('@ConvertDiv').asstring := '1';

    spTmp.open;

    spTmp.unprepare;



    참고로 에러내용이

    Project Standard.exe raised exception class EDatabaseError with message 'spTmp:No

    parameter type for parameter '@OrderNo''. Process stopped. Use Step or Run to

    continue.



    물론 ODBC로 연결해서 하면 됩니다 (것두 데이타베이스에서 유저와 패스를 입력해야만)



    에러내용이 위와 같아서...

    spTmp.params.ParamByName('@OrderNo').ParamType := ptInput; <--요걸 추가했떠니ㅜ.ㅜ



    Project Standard.exe raised exception class EDatabaseError with message 'spTmp:

    parameter '@OrderNo' not found. Process stopped. Use Step or Run to continue.

    결국 똑같이 나오네요 ㅠ.ㅠ

  • Profile
    명탁 2001.03.01 20:52
    CREATE PROCEDURE IN_PRDT_TK (

    PDTNAME VARCHAR(30),

    CLASSCODE VARCHAR(45),

    MXCHGE VARCHAR(40),

    IN_DAY DATE,

    IN_VALUES INTEGER,

    P_NUM INTEGER,

    NATIVE VARCHAR(30),

    VALUEM INTEGER

    ) AS

    declare variable tno integer;

    begin



    select max(tno)a from prdt

    into :tno;

    begin

    insert into prdt(TNO,PDTNAME,CLASSCODE, MXCHGE, IN_DAY,IN_VALUES, P_NUM, NATIVE,VALUEM)

    values(:TNO+1,:PDTNAME,:CLASSCODE, :MXCHGE, :IN_DAY,:IN_VALUES, :P_NUM, :NATIVE,:VALUEM);

    end



    suspend;

    end/*이건 프로시저 내용*/

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

    with dm.StoredProc1 do

    begin

    params.Clear;

    storedprocname := 'in_prdt_tk';

    prepare;

    params[0].asstring := flatedit1.Text;

    params[1].AsString := flatedit9.text;

    params[2].asstring := flatedit10.Text;

    params[3].AsDate := datetimepicker1.date;

    params[4].AsInteger := strtoint(flatedit2.text);

    params[5].AsInteger := flatspineditinteger1.Value;

    params[6].AsString := flatedit11.text;

    params[7].AsInteger := strtoint(flatedit3.text);

    execproc;

    unprepare;

    end;

    요건.. 인터베이스 랑 델파이 한것임당.

    이거..잘됨다.

    아니면.. storedproc1컴포넌트 올리구 storedprocname속성에서 프로시저 선텍하구 params 속성에서

    파라미터가 올라오는지 확인 하구 하세염

    암호는

    테이터베이스 컴포넌드에서 해두 되구 (login prompt). 필요할때 마다. 파라미터 쓰면 되던디요...





    • 김종건
    • 2001.02.28 02:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 똘망울
      2001.02.28 03:04
      아래처럼 Exception 처리를 해주면 되져.. 그런다음 마지막 부분에 플래그 체크해서... If 문으로 마무리...
    • TeamX
      2001.02.28 23:47
      어차피 윈2000도 bios 날짜를 기반으로 움직이는거 아닌가요?. 그러다고 가정하면 시스템날짜를 구해오...
    • 김광섭
    • 2001.02.28 02:24
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 김광섭
      2001.03.15 22:48
      김광섭 wrote: > 2차례에 걸쳐서 질문을 올렸지만 결국 제가 하나 찾아냈습니다. > > 답변이 없어서 다시...
    • 나그네
      2001.02.28 06:40
      글쎄용 스토프로시져이름.StoredProcName := '프로시저명'; 스토프로시져이름.prepare; //바로 위라인...
    • 명탁
      2001.02.28 07:01
      with storedproc do begin params.clear; // 이것두... 하고있어염 storedprocname :='프로시저 이름';...
    • 김광섭
      2001.02.28 18:51
      님들 답변에 감사합니다. 올린지 거의 세번만에 첨 답변을 받아 보네요 ^^(1주~2주) (--> spTmp.params....
    • 명탁
      2001.03.01 20:52
      CREATE PROCEDURE IN_PRDT_TK ( PDTNAME VARCHAR(30), CLASSCODE VARCHAR(45), MXCHGE VARCHAR(40...
    • 준초보
    • 2001.02.28 01:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.02.28 02:56
      안녕하세요. 최용일입니다. SendMessage로 잘 안돼면 PostMessage를 사용해보세요... 아래와 같이 하...
    • 준초보
      2001.02.28 18:21
      최용일 wrote: > 안녕하세요. 최용일입니다. > > SendMessage로 잘 안돼면 PostMessage를 사용해보세요...
    • 델사랑
    • 2001.02.28 01:56
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이기태
      2001.02.28 09:51
      코딩에 의해 캔바스의 색깔을 바꿔주는 경우가 있긴하지만... 상당히 지저분해 보입니다... 그리드의 ...
    • jung hyun jin
      2001.02.28 06:55
      델사랑 wrote: > 디비그리드에서.. > 특정필드 값을 비교해서 달라지면 ... > 그 레코드가 있는 row의 ...
    • 최용일
      2001.02.28 02:48
      안녕하세요. 최용일입니다. OnDrawDataCell이벤트에서 원하시는 대로 그려주시면 됩니다. 검색해보시...
    • TeamX
      2001.02.28 23:48
      델파이슈퍼페이지에 가셔서 카테고리중에 멀티미디어? 섹션에 프리콤포넌트가 있는데 그중에 뒤져 보면 소...
    • 김광섭
      2001.02.28 01:19
      김춘성 wrote: > > dbgrid 에서 화면에 출력된 내용을 지우고 > 초기화하는 방법이 있을까요... > ...
    • 써니
    • 2001.02.28 01:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ~~
      2001.02.28 02:46
      이런 질문은 진짜 답변해드리기가 너무 힘들어여... 좀더 구체적인 상황을 적어주세요... 어떤 함수를 ...
    • 이승근
    • 2001.02.28 00:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김광섭
      2001.02.28 02:36
      이승근 wrote: > sdate라는 필드가 있고 날짜형입니다... > 수정시 update를 시키고자하는데요... > 어...
    • 초보
    • 2001.02.28 00:32
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.02.28 02:42
      안녕하세요. 최용일입니다. OnChange이벤트는 컨트롤에 변화가 있을때마다 발생합니다. 그게 에디트라면...
    • 초보
      2001.02.28 04:53
      procedure TFm102.ac_clcdKeyPress(Sender: TObject; var Key: Char); var nclcd : string; begin if...
    • 초보
      2001.02.28 06:51
      초보 wrote: > procedure TFm102.ac_clcdKeyPress(Sender: TObject; var Key: Char); > var nclcd : stri...
    • 변인호
      2001.02.28 04:12
      도움이 되실지 모르겠지만... 저도 방금 UDP 소켓을 동적으로 생성했는데.. Receive 이벤트가 발생을 하지...
    • 이상탁
    • 2001.02.28 00:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 똘망울
      2001.02.28 03:01
      한마디로 안됩니다. 그게 될려고 하면.. 컴퍼넌트 만드세요. 이상탁 wrote: > 에디터박스에서 글자 ...
    • 이상탁
      2001.02.28 03:38
      답변 감사합니다. 물론 새로운 컴퍼넌트를 만들어야 함은 당연하겠지요. 하지만, 어떤 식으로 구현해야...
    • 까마귀
    • 2001.02.27 23:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • soriso
      2001.02.28 02:34
      CREATE OR REPLACE PROCEDURE TEST (test1 IN VARCHAR2) --파라미터로 받고(프로시져에서 넘겨 받을 변수...
    • hobakpa
      2001.02.28 02:11
      까마귀 wrote: > 안녕하세요. 까마귀입니다. > > MS-SQL에서요. > 아래처럼 변수를 선언하고 출력을 ...
    • 한원희
      2001.02.28 03:55
      CGI를 통하지 않고 웹 서버의 특정 파일에 문자열을 넣을 수 있는 방법은 없습니다. 웹 서버의 기본 동작...
    • 왕초보
      2001.04.20 08:55
      되는데여..... taeyo.pe.kr인가? 거기 가보세요. empas에서 태오라고 치면 나와요. 거기가서 공개자료실...
    • 델파이
    • 2001.02.27 23:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.02.28 02:35
      안녕하세요. 최용일입니다. 흠~~ API함수로 wsprintf, wvsprintf가 있구요. 걍 쉽게 Format함수를 사용...
    • 김춘성
    • 2001.02.27 23:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2001.02.28 00:08
      김춘성 wrote: > > DBLookupComboBox1에서 하나를 선택하면 알림창으로 > 그 숨은 값을 보여주려면 어...
    • 배준영
    • 2001.02.27 23:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 감초
      2001.03.05 01:19
      try 문안에서 쿼리를 만들어 한번 open해보세요. 열리면 있는 거구 에라가 나면 없는 거구요. 배준영...
    • 델초보
    • 2001.02.27 23:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이성훈
      2001.02.27 23:18
      델초보 wrote: > 2000년 10월에 개정된 우편번호DB구합니다. > 현재 회사에 가지고 있는 우편번호 자료가...
    • 이성훈
      2001.02.27 23:23
      빨리요~~ wrote: > 어떤 특정 데이터의 합계를 쿼리로 구해서 레이블의 caption값으로 주려고 > sum_amou...
    • BLUE
      2001.02.27 23:20
      빨리요~~ wrote: > 어떤 특정 데이터의 합계를 쿼리로 구해서 레이블의 caption값으로 주려고 > sum_amou...
    • 빨리요~~
      2001.02.28 00:27
      감사합니다~ 무식이 탄로 났으나~ 덕분에~ 한가지 알았네요~ 탄로 난 김에 물어 볼께 또 있는데요~ ...
    • 이광형
      2001.02.28 01:24
      안녕하세요 이렇게 해 보세요... sum_amount.Caption := Formatfloat('##,###,##0.00',FieldByName('sum(...
    • 빨리요~~
      2001.02.28 01:37
      이광형 wrote: > 안녕하세요 > 이렇게 해 보세요... > sum_amount.Caption := Formatfloat('##,###,##0....
    • ㅠㅠ
    • 2001.02.27 21:24
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이기태
      2001.02.28 09:45
      조금 불편하시긴 하겠지만요... 두개의 컬럼이 연동하는 경우에는 문제가 많이 있습니다... 첫번째 ...
    • ㅠㅠ
      2001.03.02 19:39
      ㅠㅠ wrote: 죄송하지만.. 쫌더 자세히 알려주시면... 안될까여? 이기태 wrote: > > 조금 불편...
    • 김광섭
      2001.02.27 22:34
      ㅠㅠ wrote: > 저 있쟈나요... 어떤거냠여, 디비 그리드가 있는데... 첫번째 컬럼에 > 충청북도, 서울시...
    • rain
      2001.02.28 07:08