Q&A

  • code좀 봐주세요.
고수님들 안녕하십니까?



query1의 전체 레코드를 table1에 복사하려합니다.



제가 알기로는 아래와 같이(example#1) 하면 되겠으나

필드가 130개라서 좀더 간편한 방법을 원합니다.



그래서 두번째 방법(example#2)으로 해보려하니 안내를 바랍니다.



EXAMPLE#1

=========

while not query1.eof do

begin

table1.append;

table1.FieldByName('FieldName1').AsString := Query1.FieldByName ('FieldName1').AsString

// table1.FieldByName('').AsString := Query1.FieldByName('').AsString

// table1.FieldByName('').AsString := Query1.FieldByName('').AsString



// .

// .

// 필드갯수만큼. 필드가 자그만치 130개나되서 다 쓸수가 없습니다.



table1.Post;

table1.Refresh;

query1.next;

end;





EXAMPLE#2



while not query1.eof do

begin

table1.append;

for i :=1 to query1.FieldCount - 1 do

begin

info := query1.Fields[i].fieldname ;

table1.FieldByName('info를 응용해서 넣고 싶은데요.').AsString := Query1.FieldByName('info를 응용해서 넣고 싶은데요.').AsString ;

table1.Post;

table1.Refresh;

query1.next;

end;







2  COMMENTS
  • Profile
    somoon 2000.07.18 15:39
    안녕하세요.



    님이 친절히 알려주신 batchmove에 대하여 정말 너무나 감사합니다.

    이렇게 간단하게 전 레코드를 복사할 수 있는 것을 몰라서

    그동안 고생 많이 했습니다.



    1. 사실 저는 폭스프로 아마추어 개발자로서 조그만 중소기업을 경영하는 50대입니다.

    회사 업무상 델파이가 약간 필요 했지요.



    2. 폭스는 테이블의 생성/복사/추출이 단 한줄의 명령어로 가능한데,

    델파이는 몇년을 한분들에게 물어도 그것들을 간단히 알려주지도/코드를

    만들어 주지도 못하더군요.



    3. 할 수 없이 제가 처음부터 책을 사서보고, 3일간에 걸쳐서 개인과외도

    받았지만, 명확치 않았습니다.



    4. 헬프에서 tbatchmove가 있어서 이것을 사용하면 되지 않겠는가 하고

    물었으나, 질 모르겠다고 하더군요.

    그래서 질문한 것처럼 방법 #1을 겨우 알게 되었으나, 100여개의 필드를

    일일이 나열할 수 없어 방법#2를 여쭙게 되었습니다.



    5. 천만다행으로 님이 batchmove를 알려주어 help의 내용과 같이 보면서

    해보니 되더군요. 이 함수가 가능해짐으로 해서,

    제가 그동안 그렇게 고민하고, 고심하던 모든 문제가 해결 될 것 같습니다.



    왜냐하면 저의 문제는 단순히 batchmove가 아니라

    paradox의 .db를 foxpro의 .dbf로 바꾸어야 하며,

    필드(스트럭쳐)를 전부 생성해야하고

    또 .db의 필드가 언제 어떻게 변경될지도 모르는 상황도 대처해야하기

    때문이었지요.



    6. 그동안 수많은 사람에게 물어(지금 생각하니 델파이 qa에 올렸으면

    진작 알수 있었을터이지만) 보았으나 모두 '절대로 안돼' 한 부분은



    query의 결과를 테이블로 '생성'이 되는가? 이었습니다.

    모든 분들이 다 테이블을 미리 만들어 놓은 다음에 레코드를 옮겨야 한다고 했습니다.

    저는 아무리 해도 이해가 않갔지요. 볼랜드가 그럴리가 없을 거라는 생각이 었습니다.

    결국 님이 알려주신 batchmove의 batcopy는 는 query의 결과를 .dbf로 바로 테이블을

    생성해주며, 동시에 필드이름들도 조정하면서 생성해 주더군요.

    (.db는 필드명이 25자, .dbf는 필드명이 10자까지만)



    7. 앞으로도 미지의 델파이에 대해 넘어야 할 산이 많습니다.



    0) 이 프로그램을 매개변수를 전달하여 실행한다.

    1) 이 프로그램을 일정한 시간마다 한번씩 실행한다.

    2) 이 프로그램을 코드만으로(폼을 보여줄 필요 없이) 실행한다.



    등등입니다.



    물론 고수님들에게는 아주 쉬운 문제이겠지만은요.





    8. 답변을 주신 민과 싸이트 운영자님들과 모든 델파이 개발자들에게 재삼 재사 감사드립니다.

    너무나 고마움에 몇자 적었습니다.





    somoon 황세봉 올림.







  • Profile
    김영해 2000.07.17 20:33
    somoon wrote:

    > 고수님들 안녕하십니까?

    >

    > query1의 전체 레코드를 table1에 복사하려합니다.

    >

    > 제가 알기로는 아래와 같이(example#1) 하면 되겠으나

    > 필드가 130개라서 좀더 간편한 방법을 원합니다.

    >

    > 그래서 두번째 방법(example#2)으로 해보려하니 안내를 바랍니다.

    >

    > EXAMPLE#1

    > =========

    > while not query1.eof do

    > begin

    > table1.append;

    > table1.FieldByName('FieldName1').AsString := Query1.FieldByName ('FieldName1').AsString

    > // table1.FieldByName('').AsString := Query1.FieldByName('').AsString

    > // table1.FieldByName('').AsString := Query1.FieldByName('').AsString

    >

    > // .

    > // .

    > // 필드갯수만큼. 필드가 자그만치 130개나되서 다 쓸수가 없습니다.

    >

    > table1.Post;

    > table1.Refresh;

    > query1.next;

    > end;

    >

    >

    > EXAMPLE#2

    >

    > while not query1.eof do

    > begin

    > table1.append;

    > for i :=1 to query1.FieldCount - 1 do

    > begin

    > info := query1.Fields[i].fieldname ;

    > table1.FieldByName('info를 응용해서 넣고 싶은데요.').AsString := Query1.FieldByName('info를 응용해서 넣고 싶은데요.').AsString ;

    > table1.Post;

    > table1.Refresh;

    > query1.next;

    > end;

    >

    위에 처럼 많은양의 Field를 감당할수 있을지는...



    일단 Field구조가 동일하다고 가정한다면 TBatchMove를 사용하세요..



    BatchMove1.Source := Query1;

    BatchMove1.Destination := Table1;

    BatchMove1.Execute;



    • 윤상철
    • 2000.07.18 05:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강상성
      2000.07.25 00:14
      저도 이것 때문에 상당히 고생했습니다. 하나 빼 먹은 속성이 있습니다. 도움말에도 언급이 되어 있지 않...
    • happykevin
      2000.07.19 19:03
      저도 믿을 수 없는 초보인데.. 이것은 우연하게 되더군요. 생각보다 간단합니다. 1) 우선 콤보박스에 ...
    • 구창민
    • 2000.07.18 03:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.18 19:56
      최영근 wrote: > 안녕하세요 ? > > 답변해 주셔서 고맙습니다. > 관련 소스들을 올립니다. > > >...
    • 타락천사
      2000.07.18 19:28
      글문 전 초보도 못돼나여? ㅠㅠ 흑흑...T_T 안구래두 요즘 고수덜이 초보라구 하는데...ㅠㅠ .....
    • 이상현
    • 2000.07.17 22:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.18 03:38
      이상현 wrote: > 저는 왕초보 갓 델파이를 시작한 학생입니다.. > > 책을보면서 열심히 연마(?) 하고있...
    • 사람
    • 2000.07.17 20:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.07.18 03:28
      사람 wrote: > 다른 기능 필요없고 > 그냥 기본적인 복사,등록기능과 언인스톨 기능만 있으면됩니다. > ...
    • 타락천사
      2000.07.18 19:24
      안녕하세여 타락임다..^^ ListBox1 : Source, ListBox2 : Destination ListBox2.Itmes.Assign(ListBo...
    • 강인규
      2000.07.17 20:47
      예전에 만들었던건데 동작은 할거에요 var i : integer; begin if listbox1.items.Count < 1 then ...
    • somoon
    • 2000.07.17 16:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • somoon
      2000.07.18 15:39
      안녕하세요. 님이 친절히 알려주신 batchmove에 대하여 정말 너무나 감사합니다. 이렇게 간단하게 전 ...
    • 김영해
      2000.07.17 20:33
      somoon wrote: > 고수님들 안녕하십니까? > > query1의 전체 레코드를 table1에 복사하려합니다. > ...
    • chipwar
    • 2000.07.17 10:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이유정
    • 2000.07.17 06:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.07.18 07:32
      이유정 wrote: > > 델파이에서 기본적으로 지원하는 소켓 컴포넌트대신에 > 다른곳에서 만들어진 win...
    • 양병규
      2000.07.17 11:44
      디비그리드의 셀을 디비와 상관없이 알아내려면... TCustomGrid를 상속받아서 새로운 그리드를 정의한다음...
    • 아세만
      2000.07.17 09:46
      김연기 wrote: > DBGrid 사용시에... > > DBGrid 특정 CELL에서 입력시 > 현재 CELL에 입력된 문자를 ...
    • 선해석
    • 2000.07.17 02:04
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.07.17 02:20
      그 방법보다는 Query1.Refresh; 이게 조금 나은 방법이죠.그래도 조금의 깜박거림은 감수해야할듯.....
    • 선해석
      2000.07.17 10:02
      강인규 wrote: > 그 방법보다는 > > Query1.Refresh; > > 이게 조금 나은 방법이죠.그래도 조금의 ...
    • 갱민이
      2000.07.17 11:37
      TDataSet의 Method에는 DisableControls,EnableControls가 있습니다. 이들 이용하면 TDataSet의 Open,Clo...
    •   
    • 2000.07.17 01:43
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 2001.11.24 01:08
      이렇게 답변글 올려주신 홍성락님께 진심으로 감사드립니다. 그런데, 저의 질문과 약간 엊갈리는 부분...
    • 김진호
      2000.07.18 03:00
      > 윈도우 API 함수중에 TextOut 이라는걸 이용해서 > 해당 DC에 문자열을 출력시킬 수 있는데.. > 그 출...
    • 양병규
      2000.07.17 11:51
      물론... API에 폰트를 바꾸고 그림을 그리는것들이 다 있습니다. 그런데... 질문하신분께 이런 내...
    •   
      2000.07.17 16:58
      죄송하지만 위에서 말했듯이 이런 답변을 요구한게 아니라서.. ^^; 저도 직접 1시간동안 API 함수만 뒤지...
    • 타락천사
      2000.07.18 19:19
      안녕하세여..타락임다..^^ 무슨 질문인가 곰곰히 생각해 봤는데, ..님의 의도를 모르겠더군여..ㅠㅠ ...
    • 김연기
      2000.07.17 01:20
      박승규 wrote: > 예를 들어 어떤 테이블의 필드가 > |필드명| > -------- > | A | > | A...
    • 갱민이
      2000.07.17 11:49
      김연기 wrote: > 박승규 wrote: > > 예를 들어 어떤 테이블의 필드가 > > |필드명| > > -------- ...
    • 선해석
    • 2000.07.16 09:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.07.16 22:25
      Time 대신 Now로 해보세여..
    • 선해석
      2000.07.16 23:46
      내용 없당께요.. 근디.. now랑 time이랑 무신 차이지??
    • 이승리
    • 2000.07.16 09:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김진호
      2000.07.18 00:06
      이승리 wrote: > 안녕하세요.. > > 이미지 박스에 그림을 불러올려 합니다.. 하드에서 말고, > 컴퓨터...
    • 델초보
    • 2000.07.16 02:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.07.19 03:41
      델초보 wrote: > 성적관리 프로그램을 해보려고 하는데요... > 관련 프로그램이나 소스같은 것 좀 올려주...
    • 한영수
    • 2000.07.16 01:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • parkisu
      2000.07.16 08:14
      한영수 wrote: > 초보적인 질문인데 알려주시분 계시리라 생각하며 질문 올립니다. > 데이타 베이스와 연...
    • 이경문
      2000.07.18 07:36
      코딩으로 해야 됩니다. 예를 들면 procedure TForm1.DataSource1Change(...); begin Edit1.Text := T...