delphi 连接数据库EDatabaseError‘qryVideo: Field'sName' not Found’

xhua_yu 2011-01-19 03:44:02
错误如题
代码如下:
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;
...全文
497 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
沙鱼凶手 2013-06-08
  • 打赏
  • 举报
回复
这个Adoquery如果同时用于几个表的数据查询,在重复几次后列名会被修改掉。所以反复几次后,出现字段丢失的错误 例如: A 中: myQry对应查询 s1 s2 s3 s4列 b中 myQry对应查询 s44 s55 s66 列 procedure b begin if myqry.. then begin myqry.... a();//调用a过程,其中会再次使用myqry end; end;
Elvis_chen 2012-04-11
  • 打赏
  • 举报
回复
这种问题大家是怎么解决的?
nizhijie1984 2011-05-16
  • 打赏
  • 举报
回复
我也遇到同樣的問題...
同樣的源碼,正式區OK 測試區卻報錯...
xhua_yu 2011-01-19
  • 打赏
  • 举报
回复
因为有正确的时候,有正确显示的时候,所以这个提示缺少qryVideo字段不是很对
而且我上面的sql语句明显有那个字段
bdmh 2011-01-19
  • 打赏
  • 举报
回复
提示多明显,缺少qryVideo字段,你看看你的sql中是否select出这个字段了
xhua_yu 2011-01-19
  • 打赏
  • 举报
回复
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;
没有后面的这个查询,没有出现任何问题
这个问题困恼了我很久了
有了这个查询,又在前面的那个函数出现那个Bug

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧