Q&A

  • 질문 했는데 답변이 없네요.. 꼭 알고 싶어요..
var

img_f_id, img_f_id1 : intteger;

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

with query1 do

begin

Close;

Sql.Clear;

sql.add('select F_id from data_table');

sql.add('where F_name ='''+edit1.text+'''');

open;



while not eof do

begin



img_f_id := FieldByName('F_id').AsInteger;

next; //다음레코드(다음으로 이동이 되지 않음)



img_f_id1 := FieldByName('F_id').AsInteger;

end;

end;



일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

그 다음 레코드나 이전 레코드 값을 구하려고 한다면

어케 해야할지...





정말 정말 궁금합니다...



테이블

아이디 그룹아이디 이미지이름 이미지데이터



테이블은 일케 만들었구요...



고수님 제말... plz....



5  COMMENTS
  • Profile
    성더기 2001.01.03 01:59
    delphilove wrote:

    > var

    > img_f_id, img_f_id1 : intteger;

    > -------------------------------

    > with query1 do

    > begin

    > Close;

    > Sql.Clear;

    > sql.add('select F_id from data_table');

    > sql.add('where F_name ='''+edit1.text+'''');

    > open;

    >

    > while not eof do

    > begin

    >

    > img_f_id := FieldByName('F_id').AsInteger;

    > next; //다음레코드(다음으로 이동이 되지 않음)

    >

    > img_f_id1 := FieldByName('F_id').AsInteger;

    > end;

    > end;

    >

    > 일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

    > 그 다음 레코드나 이전 레코드 값을 구하려고 한다면

    > 어케 해야할지...

    >

    >

    > 정말 정말 궁금합니다...

    >

    > 테이블

    > 아이디 그룹아이디 이미지이름 이미지데이터

    >

    > 테이블은 일케 만들었구요...

    >

    > 고수님 제말... plz....

    >



    음~~ 일단 next가 안먹는건 당연함다..

    왜냐면 Record가 하나 밖에 없으니까여..

    님이 구현하고자 하는게 대충 어떤 건지는 알겠슴니다...



    짠머리를 굴리먼...



    var

    img_f_id, img_f_id1 : intteger;

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

    with query1 do

    begin

    Close;

    Sql.Clear;

    sql.add('select F_id from data_table');

    sql.add('where F_name >='''+edit1.text+''''); //<-- 조건이 다름당..^^

    open;



    while not eof do

    begin



    img_f_id := FieldByName('F_id').AsInteger;

    next; //다음레코드(다음으로 이동이 되지 않음)



    img_f_id1 := FieldByName('F_id').AsInteger;

    break; // <-- 추가

    end;

    end;



    일케 바꿔서 해보셈..^^

    모가 다르냐구여?

    조위에 보면 where절에 조건을 약간 바꿨슴다. 글고 while문에 break추가 했구여.

    아마 일케해서 님이 원하시는 계산을 하믄 될검당..

  • Profile
    어떤 공군병장 2000.12.31 00:21
    delphilove wrote:

    > var

    > img_f_id, img_f_id1 : intteger;

    > -------------------------------

    > with query1 do

    > begin

    > Close;

    > Sql.Clear;

    > sql.add('select F_id from data_table');

    > sql.add('where F_name ='''+edit1.text+'''');

    > open;

    > // 이 라인에 First 메소드를 쓰신후 사용해 보신다면..^^;;

    > while not eof do

    > begin

    >

    > img_f_id := FieldByName('F_id').AsInteger;

    > next; //다음레코드(다음으로 이동이 되지 않음)

    >

    > img_f_id1 := FieldByName('F_id').AsInteger;

    > end; // 만약에 이 쿼리문에 걸리는 레코드가 여러개라면..

    // img_f_id 와 img_f_id1에는 마지막에서 두번째id와

    // 마지막 id만 저장이 되겠군요... 원하시는게 그건가요??

    // 흐음..

    > end;

    >

    > 일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

    > 그 다음 레코드나 이전 레코드 값을 구하려고 한다면

    > 어케 해야할지...

    >

    >

    > 정말 정말 궁금합니다...

    >

    > 테이블

    > 아이디 그룹아이디 이미지이름 이미지데이터

    >

    > 테이블은 일케 만들었구요...

    >

    > 고수님 제말... plz....

    >

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

    고수는 아니지만.. 저 역시도 질문의 요지가 잘 이해가 가진 않지만..

    혹시나 도움이 될까 해서요. ^^;; 저 역시도 군에서 2년째 델파이로 DB

    프로그래밍을 하고 있어서.. ^^;; 쿼리를 입력하신 후에 여셨는데..

    그 테이블의 레코드 포인터가 어디에 있는지가 의심이 가네요..주석에

    보면 다음레코드로 이동이 안된다고 하셨는데.. 혹시 포인터가 맨 마지

    막을 가리키고 있어서 그런건 아닌지.. ^^;; 아니면 레코드가 한 레코드

    밖에 없던지요.. ^^;; 저 같은 경우 쿼리를 열고 무언가와 비교를

    할때는 꼭 First 메소드를 쓰죠. 쿼리의.. 질문을 잘못이해하고 엉뚱한

    답을 쓴건 아닌지 모르겠네요.. 그럼..

  • Profile
    이영근 2000.12.30 08:57
    delphilove wrote:

    > var

    > img_f_id, img_f_id1 : intteger;

    > -------------------------------

    > with query1 do

    > begin

    > Close;

    > Sql.Clear;

    > sql.add('select F_id from data_table');

    > sql.add('where F_name ='''+edit1.text+'''');

    > open;

    >

    > while not eof do

    > begin

    >

    > img_f_id := FieldByName('F_id').AsInteger;

    > next; //다음레코드(다음으로 이동이 되지 않음)

    >

    > img_f_id1 := FieldByName('F_id').AsInteger;

    > end;

    > end;

    >

    > 일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

    > 그 다음 레코드나 이전 레코드 값을 구하려고 한다면

    > 어케 해야할지...

    >

    >

    > 정말 정말 궁금합니다...

    >

    > 테이블

    > 아이디 그룹아이디 이미지이름 이미지데이터

    >

    > 테이블은 일케 만들었구요...

    >

    > 고수님 제말... plz....

    >



    뭘 원하는지 자세히 알지는 못 하겟지만.

    while 문 을 자세히보면 img_f_id1 에 img_f_id 값이 들어가는 것

    같아요. 뭔가를 비교 할려고하는것 같은데 정확한 질문이 필요 한것 같아요.



  • Profile
    delphilove 2000.12.30 12:00
    이영근 wrote:

    > delphilove wrote:

    > > var

    > > img_f_id, img_f_id1 : intteger;

    > > -------------------------------

    > > with query1 do

    > > begin

    > > Close;

    > > Sql.Clear;

    > > sql.add('select F_id from data_table');

    > > sql.add('where F_name ='''+edit1.text+'''');

    > > open;

    > >

    > > while not eof do

    > > begin

    > >

    > > img_f_id := FieldByName('F_id').AsInteger;

    > > next; //다음레코드(다음으로 이동이 되지 않음)

    > >

    > > img_f_id1 := FieldByName('F_id').AsInteger;

    > > end;

    > > end;

    > >

    > > 일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

    > > 그 다음 레코드나 이전 레코드 값을 구하려고 한다면

    > > 어케 해야할지...

    > >

    > >

    > > 정말 정말 궁금합니다...

    > >

    > > 테이블

    > > 아이디 그룹아이디 이미지이름 이미지데이터

    > >

    > > 테이블은 일케 만들었구요...

    > >

    > > 고수님 제말... plz....

    > >

    >

    > 뭘 원하는지 자세히 알지는 못 하겟지만.

    > while 문 을 자세히보면 img_f_id1 에 img_f_id 값이 들어가는 것

    > 같아요. 뭔가를 비교 할려고하는것 같은데 정확한 질문이 필요 한것 같아요.

    >



    그러니까.. 에디터에 값으로 특정 레코드를 검색하고 그레코드의 아이디 값을



    구하고(숫자형), 바로 다음 레코드 아이디 값을 구해서.. 더하고 2로 나누어서



    그 중간 값이 나오죠... 그곳에 레코드를 추가 하려고 그러거든요.





  • Profile
    김진석 2001.01.03 00:13
    delphilove wrote:

    > 이영근 wrote:

    > > delphilove wrote:

    > > > var

    > > > img_f_id, img_f_id1 : intteger;

    > > > -------------------------------

    > > > with query1 do

    > > > begin

    > > > Close;

    > > > Sql.Clear;

    > > > sql.add('select F_id from data_table');

    > > > sql.add('where F_name ='''+edit1.text+'''');

    > > > open;

    > > >

    > > > while not eof do

    > > > begin

    > > >

    > > > img_f_id := FieldByName('F_id').AsInteger;

    > > > next; //다음레코드(다음으로 이동이 되지 않음)

    > > >

    > > > img_f_id1 := FieldByName('F_id').AsInteger;

    > > > end;

    > > > end;

    > > >

    > > > 일케 했는데 where절에 맞는 레코드 id값만 나오는데 ..

    > > > 그 다음 레코드나 이전 레코드 값을 구하려고 한다면

    > > > 어케 해야할지...

    > > >

    > > >

    > > > 정말 정말 궁금합니다...

    > > >

    > > > 테이블

    > > > 아이디 그룹아이디 이미지이름 이미지데이터

    > > >

    > > > 테이블은 일케 만들었구요...

    > > >

    > > > 고수님 제말... plz....

    > > >

    > >

    > > 뭘 원하는지 자세히 알지는 못 하겟지만.

    > > while 문 을 자세히보면 img_f_id1 에 img_f_id 값이 들어가는 것

    > > 같아요. 뭔가를 비교 할려고하는것 같은데 정확한 질문이 필요 한것 같아요.

    > >

    >

    > 그러니까.. 에디터에 값으로 특정 레코드를 검색하고 그레코드의 아이디 값을

    >

    > 구하고(숫자형), 바로 다음 레코드 아이디 값을 구해서.. 더하고 2로 나누어서

    >

    > 그 중간 값이 나오죠... 그곳에 레코드를 추가 하려고 그러거든요.

    >

    > 말이 쫌 어렵네요...그래도 제대로 해석했는지는 모르지만 해봐야겠죠...^^;

    var i : integer;

    with query1 do

    begin

    Close;

    Sql.Clear;

    sql.add('select F_id from data_table');

    sql.add('where F_name ='''+edit1.text+'''');

    open;



    --> first;

    i := 0;

    img_f_id := 0;

    while not eof do

    begin

    i := i + 1;

    if i > 2 then ----> 딱 2개의 데이터만 읽을려고..^^;

    break

    else

    img_f_id := img_f_id + FieldByName('F_id').AsInteger;

    next; //다음레코드(다음으로 이동이 되지 않음)

    end;

    img_f_id1 := img_f_id / 2;

    그리고 디비그리드에 데이터를 강제적으로 넣을 려면

    updateQuery 써야되는데...

    append; ---> post;

    알죠? 모르시면 이메일 보내세요...그럼 수고요...



    end;