안녕하세여..헤임달입니다..
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 필드를 발견할수 없다는 에러메세지가 뜨네여..
쿼리문에 잘못이 있는건가여??
부탁드립니다..
> 안녕하세여..헤임달입니다..
>
> 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;