Q&A

  • MSSQL 7에 256자 이상의 문자열을 저장할 수 있는 방법아시는분?..ㅜ.ㅜ - 수정판
걍 그러려니 하구 사용해 왔는데 이번에 프로젝트를 진해하다보니
테스트할 일이 생겨서 테스트를 했더랬습니다..

디비는 MSSQL 7.0 이구 BDE를 통해서 통신을 합니다
물론 SQL 클라이언트는 설치되어 있습니다

테이블 구조는
create table test_tbl (
          code              char(2) not null,
          vtext               varchar(4000)
)
alter tabel test_tbl
       add primary key(code)

일케 만들어져 있구요..

  SqlStr := 'insert into test_tbl (code, vtext) '
          + 'values (''' + Edit1.Text + ''', '
          + '        ''' + StringReplace(Memo1.Text, #39, #39#39, [rfReplaceAll]) + ''') ';

  Database1.StartTransaction;
  with Query2 do
  begin
    Close;
    Sql.Clear;
    Sql.add(SqlStr);
    ExecSql;
  end;
  Database1.Commit;

요로케 저장을 합니다
Memo에는 글자가 보통 1000자이상 들어갑니다

저장은 되는디 불러 올리지를 못하는군요..ㅜ.ㅜ
누구 아시는분 없나여?
4  COMMENTS
  • Profile
    gudwhrla 2002.02.06 05:35
    큰 데이타를 저장시에는 바운드를 사용하셔야 합니다. (:code, :vtext)
    Sql.add()에 직접 널수 있는 데이터는 한계가 있습니다.

    SqlStr := 'insert into test_tbl (code, vtext) '
            + 'values (:code, :vtext) ';

    Database1.StartTransaction;
    with Query2 do
    begin
      Close;
      Sql.Clear;
      Sql.add(SqlStr);
      ParamByName.('code').AsString :=Edit1.Text;
      ParamByName.('vtext').AsString :=StringReplace(Memo1.Text, #39, #39#39, [rfReplaceAll]);
      ExecSql;
    end;
    Database1.Commit;









  • Profile
    성더기 2002.02.06 05:50
    지송스럽게두 저장시에는 아무 문제가 없었슴다..
    데이터는 똑바로 저장이 되더군요..
    단지 쿼리를 날려서 불러올때 255개 까지만 불러오는거 같더군요..

    글구 한가지더..
    String이라는 넘이 2G까지 지원하므로 웬만한 문자열은 몽땅 저장가능합니다
    ParamByName을 사용하는것도 똑 같은걸루 알구 있습니다
    가끔식 ParamByName이라는 넘이 제대루 동작을 안할때두 있구 해서
    전 아예 사용을 하지않구 있습니다
    그냥 변수를 문자열에 연결해서 사용하는 방식으로 사용하고 있지만
    아직까지 전혀 문제 없이 사용하고 있습니다..^^

    문제는 varchar라는 MSSQL의 데이터 형이 문제임다.
    오라클의 varchar2타입은 256자 이상이 될경우 자동으로 BDE가 Memo로 인식을 합니다
    하지만 MSSQL의 varchar타입은 그렇게 하지를 못하는거 같더군요
    게서 걍 text필드 타입을 사용하기로 했습니다.
    나중에 심도있게 함 집쩍거려 바야겠심다..^^

    구럼 즐코하시길...
  • Profile
    gudwhrla 2002.02.06 07:19
    로드시에 데이타를 변형해서  불러오니까  다 가져 오내여

    select code , Convert(Text, vtext ) from test_tbl


  • Profile
    성더기 2002.02.07 20:20
    그런 방법이 있었군요...
    전 걍 타입을 몽땅 Text로 바꿨습니다.
    text로 사용을 하니깐 문제가 없더군욤..
    답변 감삼니당..^^
    • 장지용
      2002.02.06 22:59
      function DayOfWeek(Date: TDateTime): Integer; 일요일 = 1 월요일 = 2 . . .
    • 푸른하늘
      2002.02.07 23:37
      먼저 답변에 감사드립니다. ^^ 근데..DayOfWeek를 어떻게 사용하는가요? --; 이 함수를 이용해 월요일일...
    • 장지용
      2002.02.19 00:30
        case DayOfWeek(Now) of     1 : ShowMessage('일요일입니다.'); &nb...
    • 장명선
      2002.02.06 21:19
      DB의 날짜 및 요일을 가져오면 쉽게 해결할수 있을겁니다. 꼭 DB만이 아니고 시스템 요일을 가져와도 되겠...
    • 장지용
      2002.02.06 21:14
      "Query1.Next;" 로 바꾸면 안 되나요?
    • 장명선
      2002.02.06 21:07
      Next를 쓸때.....Query1.Next로 써보세요 제가 보기엔 그것이 문제인듯 싶네요 즐코하세요~~~
    • 강두헌
      2002.02.06 21:03
      이름이 좀 헷갈려서 정확한건지는 모르겠지만, Next; 를 Query1.Next; 로 바꾸시면 될거 같네요.. 도...
    • ssoya
    • 2002.02.06 20:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 보들레르
      2002.02.06 23:00
      님의 코드를 한글로 쓰면 이렇게 됩니다. if 조건 then //만약에 조건이맞으면 처리 else if 조건 then...
    • 강두헌
      2002.02.06 20:57
      먼저 조건에 맞는 경우를 실행하고 빠져 나갑니다. 이건 서점가서 아무 기본서적 꺼내들고 10분만 읽으면 ...
    • 김종석
    • 2002.02.06 20:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.02.06 22:15
      안녕하세요. 최용일입니다. test가 MSG의 포인터네요... 그냥 형변환하세요... VC++ 처럼... var &n...
    • 이규황
    • 2002.02.06 20:34
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.06 21:03
    • Tk
      2002.02.06 21:10
    • 이규황
      2002.02.06 21:09
    • 장지용
      2002.02.06 21:21
    • 장명선
      2002.02.06 21:23
    • 장지용
      2002.02.06 22:19
    • 이규황
      2002.02.06 21:29
    • 김정은
    • 2002.02.06 20:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.02.15 02:01
      답변이 될런지 모르겠지만, 일반적으로 SMTP 서버를 공개해 놓지 않습니다. 스패머의 좋은 표적이 때문입...
    • 신호
    • 2002.02.06 18:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.02.06 22:25
      안녕하세요. 최용일입니다. 그렇게 하실려면 그릴려구 하는 것들 모두를 다 객체화 해서 만드셔야 합니...
    • 서정길
      2002.02.06 18:47
      쩝... SQL.Add('values (:Tbl_PcName,:Tbl_UserName,:Tbl_LoginName,:Tbl_WorkGroup,:Tbl_MyIPAdress, '...
    • 조규춘
      2002.02.06 20:31
      찾으시는 답변이 되었으면 좋겠네요.. var   i, n: Integer;   fn: file; &...
    • 임광운
      2002.02.06 22:20
      답변 정말 감사드립니다. 어여 공부해서^^ 저도 다른분들과 많이 나누고 싶네요. 그럼 좋은 하루 되세요....
    • 이화
    • 2002.02.06 09:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.02.06 22:19
      아래에 답변해드렸는데......
    • 조성택
    • 2002.02.06 09:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김용덕
      2002.02.06 19:34
      안녕하세염~ 차이점은 바로 실행하는 주최죠~ Thread의 Execute에서 MyFunc를 호출하면 해당 Thread에...
    • 임현창
      2002.02.06 08:31
      QuickRep1.ShowProgress := False; 쩝...
    • 고예형
    • 2002.02.06 05:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2002.02.06 05:51
      Rowselect 옵션에 체크해두심 안되나여? 질문 내용이 이게 아닌가?..후다닥..=3=3
    • 정계훈
      2002.02.06 05:51
      안녕하세요. 아래와 같이 하심 선택된 ROW의 색깔을 바꿀수 있습니다. 그럼 즐거운 코딩이 되시길... ...
    • 성더기
    • 2002.02.06 05:15
    • 4 COMMENTS
    • /
    • 0 LIKES
    • gudwhrla
      2002.02.06 05:35
      큰 데이타를 저장시에는 바운드를 사용하셔야 합니다. (:code, :vtext) Sql.add()에 직접 널수 있는 데이...
    • 성더기
      2002.02.06 05:50
      지송스럽게두 저장시에는 아무 문제가 없었슴다.. 데이터는 똑바로 저장이 되더군요.. 단지 쿼리를 날려...
    • gudwhrla
      2002.02.06 07:19
      로드시에 데이타를 변형해서  불러오니까  다 가져 오내여 select code , Convert...
    • 성더기
      2002.02.07 20:20
      그런 방법이 있었군요... 전 걍 타입을 몽땅 Text로 바꿨습니다. text로 사용을 하니깐 문제가 없더군욤....
    • 장지용
      2002.02.06 03:52
      "FindComponent" 라는 놈을 쓰면 될것 같습니다. for intLoop := 1 to 10 do   ...
    • 최용일
      2002.02.06 03:49
      안녕하세요. 최용일입니다. FindComponent메소드나 Controls배열을 이용하세요... procedure TForm1....
    • 장명선
      2002.02.06 02:55
      TLabel(Sender).Caption := '111' 이런씩으로 하면 값이 들어갑니다. 여러개를 동시에 하는것은 조금 ...
    • 이화
    • 2002.02.06 02:43
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최영근
      2002.02.06 05:39
      Locate 명령도 괜찮습니다. Query1.locate('FieldName', 필드값, [loPartialKey]); //  ('키...
    • 이화
      2002.02.06 08:49
      답글 감사 합니다.. 앞으로 많은 조언 부탁 드릴께요... ㅋㅋㅋ
    • 장지용
      2002.02.06 03:28
      MoveBy : function(Distance: Integer): Integer; 이걸 사용하심 안 될까요.
    • 이화
      2002.02.06 08:51
      델파이를 공부 하고 있는데.. 아래와 같은 컴포넌트 레퍼런스 가이드 없나요.. 제가 보기에 시중에 ...
    • 최용일
      2002.02.06 10:02
      안녕하세요. 최용일입니다. 17000개 정도면 리스트뷰에 그릴때 락을 건다고 해도 데이터를 리스트뷰에 ...
    • gudwhrla
      2002.02.06 02:35
      Name := Listview1.Items[0].SubItems[0]; Age :=Listview1.Items[0].SubItems[1];
    • 김진선
    • 2002.02.06 02:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2002.02.06 15:31
      아래와 같은 방법으로 하셔도 될거 같군요.. function SearchAndReplace(sSrc, sLookFor, sReplac...
    • 장명선
      2002.02.06 02:33
      번거러워도 숫자로 변환하여 하시는게 좋을듯 싶네요