delphi 连接数据库EDatabaseError‘qryVideo: Field'sName' not Found’,该怎么解决
delphi 连接数据库EDatabaseError‘qryVideo: Field'sName' not Found’
错误如题
代码如下:
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;
------解决方案--------------------
提示多明显,缺少qryVideo字段,你看看你的sql中是否select出这个字段了
错误如题
代码如下:
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;
------解决方案--------------------
提示多明显,缺少qryVideo字段,你看看你的sql中是否select出这个字段了