Q&A

  • 디비에서 시간비교하기
안녕하세여..헤임달입니다..



var

start, stop, temp : Tdatetime;

begin

temp:=now;

with query4 do

begin

close;

sql.Clear;

sql.Add('select Machine_name from "machine_main.db" ');

sql.Add('where Machine_name="A" ');

open;

locate('Start_time',FormatDateTime('hh:mm:ss',now), []);

end;

start:=query4.fieldbyname('Start_time').asdatetime;

stop:=query4.fieldbyname('Stop_time').asdatetime;



if (start<=temp) and (stop>=temp) then

// if machine_sh.Text='A' then

showmessage('돌아가')

else showmessage('안돌아가');

end;



대충 쿼리문을 보면 아시겠쪄??

machine_name이 A인것중에서 시작시간이 현재시간하고 가까운것을 찾아서 그때의 시작시간하고 종료시간사이에 현재시간이 있는지를 비교하는겁니다..

아마 부족한 부분이 많을꺼에요..

근데..query4에 start_time 필드를 발견할수 없다는 에러메세지가 뜨네여..

쿼리문에 잘못이 있는건가여??

부탁드립니다..

3  COMMENTS
  • Profile
    돌머리 2000.09.19 02:58
    heimdal wrote:

    > 안녕하세여..헤임달입니다..

    >

    > var

    > start, stop, temp : Tdatetime;

    > begin

    > temp:=now;

    > with query4 do

    > begin

    > close;

    > sql.Clear;

    > sql.Add('select Machine_name from "machine_main.db" ');

    > sql.Add('where Machine_name="A" ');

    > open;

    > locate('Start_time',FormatDateTime('hh:mm:ss',now), []);

    > end;

    > start:=query4.fieldbyname('Start_time').asdatetime;

    > stop:=query4.fieldbyname('Stop_time').asdatetime;

    >

    > if (start<=temp) and (stop>=temp) then

    > // if machine_sh.Text='A' then

    > showmessage('돌아가')

    > else showmessage('안돌아가');

    > end;

    >

    > 대충 쿼리문을 보면 아시겠쪄??

    > machine_name이 A인것중에서 시작시간이 현재시간하고 가까운것을 찾아서 그때의 시작시간하고 종료시간사이에 현재시간이 있는지를 비교하는겁니다..

    > 아마 부족한 부분이 많을꺼에요..

    > 근데..query4에 start_time 필드를 발견할수 없다는 에러메세지가 뜨네여..

    > 쿼리문에 잘못이 있는건가여??

    > 부탁드립니다..



    당연히 Start_Time필드를 찾을 수 없을것입니다.

    Query의 Select문에 보면 "sql.Add('select Machine_name from "machine_main.db" ');"

    Machine_name 필드만 정의하고 있기 때문입니다.

    Query는 Select문에서 정의된 필드만을 로딩하는 질의 입니다....



    위에서와 같이 start_time과 stop_time 필드를 사용하려면

    "sql.Add('select Machine_name,start_time, stop_time from "machine_main.db" ');"과

    같이 사용하는 필드도 같이 정의해야 합니다.



    그리고, 날짜 포멧함수역시 오류가 있네요...

    yy = 년도

    mm = 월

    dd = 날짜

    hh = 시간

    nn = 분

    ss = 초 와 같은 형식으로 사용하세요..



    내용을 조금 수정해 보았습니다.. 참조하세요

    start, stop: Tdatetime;

    temp : string;

    begin

    temp:= FormatDateTime('hh:nn:ss',now);

    with query4 do

    begin

    close;

    sql.Clear;

    sql.Add('select Machine_name,

    start_time,

    stop_time from "machine_main.db" ');

    sql.Add('where Machine_name ="A"

    and start_time <= '''+temp+'''

    and stop_time >= '''+temp+''' ');

    open;



    if (query4.Bof) and (query4.Eof) then

    showmessage('안돌아가')

    else

    showmessage('돌아가');



    end;



    end;



  • Profile
    heimdal 2000.09.19 21:23


    > 당연히 Start_Time필드를 찾을 수 없을것입니다.

    > Query의 Select문에 보면 "sql.Add('select Machine_name from "machine_main.db" ');"

    > Machine_name 필드만 정의하고 있기 때문입니다.

    > Query는 Select문에서 정의된 필드만을 로딩하는 질의 입니다....

    >

    > 위에서와 같이 start_time과 stop_time 필드를 사용하려면

    > "sql.Add('select Machine_name,start_time, stop_time from "machine_main.db" ');"과

    > 같이 사용하는 필드도 같이 정의해야 합니다.

    >

    > 그리고, 날짜 포멧함수역시 오류가 있네요...

    > yy = 년도

    > mm = 월

    > dd = 날짜

    > hh = 시간

    > nn = 분

    > ss = 초 와 같은 형식으로 사용하세요..

    >

    > 내용을 조금 수정해 보았습니다.. 참조하세요

    > start, stop: Tdatetime;

    > temp : string;

    > begin

    > temp:= FormatDateTime('hh:nn:ss',now);

    > with query4 do

    > begin

    > close;

    > sql.Clear;

    > sql.Add('select Machine_name,

    > start_time,

    > stop_time from "machine_main.db" ');

    > sql.Add('where Machine_name ="A"

    > and start_time <= '''+temp+'''

    > and stop_time >= '''+temp+''' ');

    > open;

    >

    > if (query4.Bof) and (query4.Eof) then

    > showmessage('안돌아가')

    > else

    > showmessage('돌아가');

    >

    > end;

    > end;





    var

    st, stop : Tdatetime;

    //st, stop는 검색된 레코드의 값을 읽어오기위한 변수

    temp : string;

    //현재시간저장

    begin

    temp:= FormatDateTime('hh:nn:ss',now);

    with query4 do

    begin

    close;

    sql.Clear;

    sql.Add('select Machine_name, Start_time, Stop_time from "machine_main.db" ');

    sql.Add('where Machine_name="A" ');

    open;

    locate('Start_time',FormatDateTime('hh:nn:ss',now), []);

    end;

    st:=query4.fieldbyname('Start_time').asdatetime;

    stop:=query4.fieldbyname('Stop_time').asdatetime;



    if (st<=strtodatetime(temp)) and (stop>=strtodatetime(temp)) then

    showmessage('돌아가')

    else showmessage('안돌아가');

    end;



    이렇게 했는데 제대로 안나오네여..어디가 잘못된건지..

    sql.Add('where Machine_name ="A"

    and start_time <= '''+temp+'''

    and stop_time >= '''+temp+''' '); <=특히여기여...



    님께서 해주신이부분이 잘 모르겠어여..

    sql문을 쓸줄을 모르는건지..쩝..

    정확하게 쉼표로 어디서 어디까지 묶어줘야되는거져??

    부탁드립니다.







  • Profile
    666 2000.09.19 02:31


    필요한 필드를 select 를 아니 하신건 아닌지..



    'select Machine_name from "machine_main.db"



    위에서 보든 테이블에서 Machine_Name 만 조회할 뿐



    query4.fieldbyname('Start_time').asdatetime



    님이 원하시는 Start_Time 은 select 하지 않네요..



    'select * from "machine_main.db"



    하시면 어떠 하실지..



    행복하세요..





    heimdal wrote:

    > 안녕하세여..헤임달입니다..

    >

    > var

    > start, stop, temp : Tdatetime;

    > begin

    > temp:=now;

    > with query4 do

    > begin

    > close;

    > sql.Clear;

    > sql.Add('select Machine_name from "machine_main.db" ');

    > sql.Add('where Machine_name="A" ');

    > open;

    > locate('Start_time',FormatDateTime('hh:mm:ss',now), []);

    > end;

    > start:=query4.fieldbyname('Start_time').asdatetime;

    > stop:=query4.fieldbyname('Stop_time').asdatetime;

    >

    > if (start<=temp) and (stop>=temp) then

    > // if machine_sh.Text='A' then

    > showmessage('돌아가')

    > else showmessage('안돌아가');

    > end;

    >

    > 대충 쿼리문을 보면 아시겠쪄??

    > machine_name이 A인것중에서 시작시간이 현재시간하고 가까운것을 찾아서 그때의 시작시간하고 종료시간사이에 현재시간이 있는지를 비교하는겁니다..

    > 아마 부족한 부분이 많을꺼에요..

    > 근데..query4에 start_time 필드를 발견할수 없다는 에러메세지가 뜨네여..

    > 쿼리문에 잘못이 있는건가여??

    > 부탁드립니다..

    • ljb007
    • 2000.09.19 03:15
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 04:10
      Nanhee wrote: > 반갑습니다. ^^ > > QReport에서 Detail밴드를 사용하여 데이타를 출력할려고 합니다...
    • 최영근
      2000.09.19 03:33
      Nanhee wrote: > 반갑습니다. ^^ > > QReport에서 Detail밴드를 사용하여 데이타를 출력할려고 합니다...
    • Nanhee
      2000.09.19 18:42
      거의 하루종일을 고민하고 여기저기를 뒤졌었는데.... 고수님들의 말씀처럼 QuickRep의 Dataset이 연결...
    • 심은진
    • 2000.09.19 03:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 07:13
      심은진 wrote: > 폴더나 드라이브 공유시키는 방법좀 알려주세요 > 게시판을 뒤적여 봐도 제가 이해할수 ...
    • 심은진
    • 2000.09.19 02:53
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.09.20 01:08
    • 임형호
      2000.09.19 03:55
    • 심은진
      2000.09.19 19:21
    • 김하늘
      2000.09.19 23:27
    • 심은진
      2000.09.20 01:02
    • 김상호
      2000.09.20 03:02
    • 돌머리
      2000.09.19 04:38
      노바녹스 wrote: > 안녕하셔요... > 델 왕초보입니다... > 퀵리포트를 이용해서 출력을 하고 있는데 문...
    • 김종운
      2001.01.06 19:25
      아래 내용대로 했는데 첫번째 페이지가 항상 두그룹 인쇄후 두번째 페이지부터 정상으로 찍히는데 왜 그...
    • 2000.09.19 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.19 04:37
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. var Item: TListIte...
    • 최재영
      2000.10.20 20:02
      hihybu wrote: > 김용일님 팁에서 폼인쇄하는 팁으로 출력을 했더니 백지만 출력이 되더군요 > > 프린...
    • heimdal
    • 2000.09.19 02:03
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 02:58
      heimdal wrote: > 안녕하세여..헤임달입니다.. > > var > start, stop, temp : Tdatetime; > begi...
    • heimdal
      2000.09.19 21:23
      > 당연히 Start_Time필드를 찾을 수 없을것입니다. > Query의 Select문에 보면 "sql.Add('select Machi...
    • 666
      2000.09.19 02:31
      필요한 필드를 select 를 아니 하신건 아닌지.. 'select Machine_name from "machine_main.db" 위...
    • 666
      2000.09.19 02:35
      델파이 설치된 곳에 보시면 소트에 관한 예제가 있습니다.. C:Program FilesBorlandDelphi4Demo...
    • 2000.09.19 01:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 06:00
      민 wrote: > 드라이브에 관계없이 확장자가 'DOC'이거나 'HLP'인 파일을 찾아서 > > 그 확장자를 'TXT...
    • mickblue
    • 2000.09.19 02:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 04:44
      mickblue wrote: > 회사에 입사한지 3일정도 지났는데 델파이로 시스템을 돌리는데... > 전 델파이가 첨...
    • hnc
    • 2000.09.19 01:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌머리
      2000.09.19 02:30
      hnc wrote: > > 퀵레포트 출력시 디테일 5개출력후 공백을 한칸줄수 있는방법은 없나여 > 몇가지 방...
    • coolling
    • 2000.09.19 01:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2000.09.19 18:57
      coolling wrote: > query의 update문을 사용해서 table에 있는 data를 수정했습니다. > 그러면, 다음과 ...
    • 돌머리
      2000.09.19 05:16
      윤미영 wrote: > 제가 panel1, panel2, panel3,... panel25를 차례대로 보이게 하고 싶습니다. > 그래서 ...
    • heimdal
    • 2000.09.19 00:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 허춘
      2000.09.19 07:36
      heimdal wrote: > with query1 do > begin > close; > sql.Clear; > ...
    • heimdal
      2000.09.19 21:28
      허춘 wrote: > heimdal wrote: > > with query1 do > > begin > > close; > > ...
    • 최용일
      2000.09.19 00:47
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. StringReplace함수는 S...
    • 꼴통
      2000.09.19 01:43
      SysUtils유닛이 추가되어 있는데도 계속 똑같은 에러가 나네여...... 왜이러져?(ㅠ.ㅠ) 최용일 wrote: ...
    • 최용일
      2000.09.19 01:48
      그럴리가 없는데요. 제가 컴파일해봤는데 이상없이 동작합니다. 혹시 델파이 버전이 어떻게 되나요? 버...
    • 꼴통
      2000.09.19 02:52
      그런 휼륭한 방법이 감탄입니다. 저희쪽에서 개발된게 델3이거든여 그래서 한 2시간정도는 헤멘것같습니...