错误如题
代码如下:
function TGlobalData.fGetCameraInformation(lTerID,lCamIndex: Integer): Boolean;
var
sql: string;
i: Integer;
begin
Result := False;
qryAlarm.Close;
sql := ' select top 1 Area.IID as uAreaID,Area.sName as uAreaName,'+
' Ter.iid as uTerID,Ter.iParentID as uTerParentID,Ter.sName as uTerName,'+
' Ter.sIPAddr as uTerIP,Ter.sLoginTag as uTerLoginTag,Ter.sLoginPWD as uTerLoginPWD, '+
' Ter.sLinkAddr as uTerLinkAddr,Ter.sLinkTel as uTerLinkTel,Ter.sManager as uTerLinkMaster,'+
' Cam.iid as uCameraID,Cam.iParentID as uCamParentID, Cam.sName as uCameraName,Cam.iCameraIndex as uCameraIndex'+
' from TTMain as Area,TTMain as Ter, TTmain as Cam'+
' where Ter.iParentID=Area.iid and Cam.iParentID=Ter.iid and'+
' Area.iobjtype=7 and Ter.iobjtype=50 and Cam.iobjtype=8 and '+
' Ter.iid='+inttostr(lTerID)+' and Cam.iCameraIndex ='+inttostr(lCamIndex); qryAlarm.Recordset := Connect.GetRecordset(sql);
qryAlarm.Open;
if qryAlarm.RecordCount > 0 then
begin
Main.uAreaName := qryAlarm.FieldByName('uAreaName').AsString;
Main.uAreaID := qryAlarm.FieldByName('uAreaID').AsInteger;
Result := True;
end;
end;procedure TGlobalData.ConnectStreamMsg(Sender: TObject; streamID: Integer; buf: PAnsiChar; bufLen: Integer);
var
i: Integer;
qry: TADOQuery;
begin
try
if StreamID = MSG_ALARM_HAPPENALARM then
begin
if not Main.showVideoProcess then
Main.tbAbout.Click;
Application.ProcessMessages;
iDeviceProcess.pnlLog.Visible := True;
AlarmItem := PIVSAlarmUpLoadInfo(Integer(Buf) + 70);
if not fGetCameraInformation(integer(AlarmItem.Data),AlarmItem.CameraIndex) then
Exit;
try
qry := TADOQuery.Create(nil);
sql := ' select iid from TTMain where iobjtype=18 and iParentID='+inttostr(Main.uAreaID);
Main.uGisID := -1;
qry.Recordset := Connect.GetRecordset(sql);
if qry.RecordCount > 0 then
begin
Main.uGisID := qry.FieldS[0].AsInteger;
end;
finally
qry.Free;
end;
end;
end;
end;
代码如下:
function TGlobalData.fGetCameraInformation(lTerID,lCamIndex: Integer): Boolean;
var
sql: string;
i: Integer;
begin
Result := False;
qryAlarm.Close;
sql := ' select top 1 Area.IID as uAreaID,Area.sName as uAreaName,'+
' Ter.iid as uTerID,Ter.iParentID as uTerParentID,Ter.sName as uTerName,'+
' Ter.sIPAddr as uTerIP,Ter.sLoginTag as uTerLoginTag,Ter.sLoginPWD as uTerLoginPWD, '+
' Ter.sLinkAddr as uTerLinkAddr,Ter.sLinkTel as uTerLinkTel,Ter.sManager as uTerLinkMaster,'+
' Cam.iid as uCameraID,Cam.iParentID as uCamParentID, Cam.sName as uCameraName,Cam.iCameraIndex as uCameraIndex'+
' from TTMain as Area,TTMain as Ter, TTmain as Cam'+
' where Ter.iParentID=Area.iid and Cam.iParentID=Ter.iid and'+
' Area.iobjtype=7 and Ter.iobjtype=50 and Cam.iobjtype=8 and '+
' Ter.iid='+inttostr(lTerID)+' and Cam.iCameraIndex ='+inttostr(lCamIndex); qryAlarm.Recordset := Connect.GetRecordset(sql);
qryAlarm.Open;
if qryAlarm.RecordCount > 0 then
begin
Main.uAreaName := qryAlarm.FieldByName('uAreaName').AsString;
Main.uAreaID := qryAlarm.FieldByName('uAreaID').AsInteger;
Result := True;
end;
end;procedure TGlobalData.ConnectStreamMsg(Sender: TObject; streamID: Integer; buf: PAnsiChar; bufLen: Integer);
var
i: Integer;
qry: TADOQuery;
begin
try
if StreamID = MSG_ALARM_HAPPENALARM then
begin
if not Main.showVideoProcess then
Main.tbAbout.Click;
Application.ProcessMessages;
iDeviceProcess.pnlLog.Visible := True;
AlarmItem := PIVSAlarmUpLoadInfo(Integer(Buf) + 70);
if not fGetCameraInformation(integer(AlarmItem.Data),AlarmItem.CameraIndex) then
Exit;
try
qry := TADOQuery.Create(nil);
sql := ' select iid from TTMain where iobjtype=18 and iParentID='+inttostr(Main.uAreaID);
Main.uGisID := -1;
qry.Recordset := Connect.GetRecordset(sql);
if qry.RecordCount > 0 then
begin
Main.uGisID := qry.FieldS[0].AsInteger;
end;
finally
qry.Free;
end;
end;
end;
end;
解决方案 »
- 求助:下位机开发时遇到的一问题
- 01cn开通“Delphi经典”栏目,《Delphi源码分析》,《参透Delphi/Kylix》等书作者与大家在线交流
- If...then中的表达式必须是逻辑型的吗?
- 请问如何获得目前客户端连接的状态如何?
- How to hide certain colomn in listview?
- 专家分是怎么得到的??多少分可以变成星级用户??
- 如何修改表中字段的属性
- delphi中画布的部分刷新
- 怎么用Delphi来校准时间啊,另外还有标准时间服务器的地址是什么啊
- dephi中的报表打印为什么每次只列出一条记录???
- CXGRID设置序号
- pcomm.dll接收数据有问题
qry := TADOQuery.Create(nil);
sql := ' select iid from TTMain where iobjtype=18 and iParentID='+inttostr(Main.uAreaID);
Main.uGisID := -1;
qry.Recordset := Connect.GetRecordset(sql);
if qry.RecordCount > 0 then
begin
Main.uGisID := qry.FieldS[0].AsInteger;
end;
finally
qry.Free;
end;
没有后面的这个查询,没有出现任何问题
这个问题困恼了我很久了
有了这个查询,又在前面的那个函数出现那个Bug
而且我上面的sql语句明显有那个字段
例如:
A 中:
myQry对应查询 s1 s2 s3 s4列
b中
myQry对应查询 s44 s55 s66 列
procedure b
begin
if myqry.. then
begin
myqry....
a();//调用a过程,其中会再次使用myqry
end;
end;