Q&A

  • 디비의 공식 불러와서 계산하기
디비에 일정 공식을 저장해놓고 그 공식을 불러와서
계산을 할려 합니다.
예를 들면 디비에 ax/0.5 나 xy*3.5 등등의 공식을 넣고 놓고
그 공식을 불러와서
ax를 변수로 사용해서 입력값(100)을 주면
ax/0.5의 계신이 되어 200의 값이 나오도록 싶습니다.
그런데 디비의 공식을 불러오면 'ax/0.5' 가 스트링으로 불러외지고
ax를 변수로 사용할수가 없습니다.
도저히 저같은 초짜는 머리를 짜내어 보아도 안됩니다.
고수님들 제발 도와주시기 바랍니다.
답변 기둘리고 있겠습니다.
제발~~~~~~~~~~~
4  COMMENTS
  • Profile
    KDDG_hyun 2003.05.16 19:37
    스트링을 앞의 1글자 부터 불러와서 계산 하는 수빡엔 없을꺼 같내요..

    스트링 읽다가 +,-,/ 등 나오면 뒤에꺼 읽어 계산 하는 방식으로..


  • Profile
    김경록 2003.05.16 08:27
    하하.. 꽁수.. 저 하면 꽁수 아닙니까?
    (그렇다고.. 핫꽁치는 아닙니다..   헤헤  *^^* )
    ㅋㅋ

    뭐 꽁수라고 하기엔 뭐 하지만..
    약간의 Tip라고 하져..

    일단 읽어온 문자를 어떤 문자를 추가시켜 줍니다..
    예를들면..
    읽어온 String이 아래값이라면..
    (ax/3)*b

    ax ==> :ax   로 변경시켜 줍니다.
    b  ==>  :b     로 변경시켜 줍니다.. (StringReplace문으로 변경함)

    즉.. 숫자가 아닌 문자열 앞에 ":"를 붙여줍니다..

    Query문 날릴때  문자열 앞에 ":" 값이 들어가면
    Param변수로 Delphi가 판단하져?
    바로 이겁니다.. 이런 꽁수를 이용하는 건데..
    이점을 이용해서 Query 컴포넌트로 간단히 질의(Query) 1방이면 계산은 끝...
    쿄쿄쿄..
    물론, 연산할 것은 연산해야져?
    예제까지는 필요없져?


    약간 꽁수이긴 하지만..
    후위계산법(Stack을 이용한 산술계산)을 하지 않아도..
    될듯한 간단한.. 꽁수...
    우홋홋!!!
    멋지지 않나여? 이런 꽁수!!!!

    더욱 쉽게 하고 싶다면..
    입력하실때..  문자열 앞에는 꼭 ":"을 입력하라고 하는 것도 한 방법이져..
    그럼 번거롭게..  문자열 찾아서.. 뭐 넣고 하는 귀찮은 방법도
    동원하지 않아도 되니까 말입니다..

    예를 들어서..
    (ax/6.4)*3.14/y
    이렇게 되어 있다면.. 아래와 같이.. 입력하라고 쪼르는 방법도.. *^^*
    (:ax/6.4)*3.14/:y

    이렇게여..
    후후..  저렇게 하면..
    뭐 당연히 읽어와서.. Query 한방으로 계산할 필요 없이..
    결과값을 돌려줄테니.. 그것만 사용하면되구..
    후후.. 쉽져?
    뭐.. 복잡한 계산이라도.. 어떤 DB(Oracle,MS-SQL, MDB, Paradox등)와
    관계 없이 다 될테니.. 문제도 역시 없겠져?
    이게 엄청난 꽁수가 아니길...
    하지만, 누구도 예상치 못한 완벽한 꽁수가 아닐지..
    이상.. 오늘 좀 해벌래하게 기분좋은
    착한천사 김경록이였슴다..
    설마 Hint를 줬는데.. 소스까지?
    별로 어려운 알고리즘도 아니니(예상하기로는 For문 1개면 될듯..)
    잘 될겁니다..







  • Profile
    ybkim 2003.05.16 19:04
    김경록님 답변 잘 받았습니당...
    Parambyname으로 값을 넣을려고 하는건 디비에 값을 넣을때 아닌가요?
    저는 디비에서 공식을 불러온다음 (불러오면 공식이 스트링으로 불어와 지잖아요)
    그 공식을 갖고 계산을 할려는 건데요
    사용자가 입력하는때에 따라 변수값이 바뀌는 거예요

    디비에서 (:ax/6.4)*3.14/:y라는 공식을 읽어온다음에
    이 공식을 읽어오면 공식 전체가 스트링으로 읽어와지잖아요
    '(:ax/6.4)*3.14/:y'
    예를 들면
    StringReplace를 이용해서  :ax에 100 이라는 입력 값을 넣고 또한 :y에도 50 이라는 입력 값을 넣었습니다.
    그래서 '(100/6.4)*3.14/50' 한 스트링이 되었어요
    그런데 스트링으로 되어 있어서 전혀 계산이 되질 안거든요

    제가 너무 두서없이 말을 했나요?
    아니면 김경록님의 답변을 제대로 이해하지 못해서 이렇게 헤메이는 건지?
    ㅜㅜ
    다시한번 답변 부탁드립니다. 꼭~~~이요~~~~~~



  • Profile
    KDDG_ZZOM 2003.05.16 06:24
    스토어드 프로시져 예기하시는것 같네요...
    우선 사용할 디비가 뭔지...
    디비가 정해지면 해당 디비 책자 하나사서 보세요...

    너무 막연하나???

    즐프하세요...