Te quedaría mejor y menos problemático asi
Código Delphi
[-]
With ZQuery1 Do
Begin
Close;
SQL.Clear;
SQL.Add('Select acceso from permisos join detallepermisos on (detallepermisos.codigo=permisos.codigo) where cedula=:cedula and fecha=:fecha');
ParamByName('cedula').AsString := cedula;
ParamByName('fecha').AsDateTime := fechaServerL;
Open;
If RecordCount>0 Then
Begin
end;
Como ves utilizamos parámetros para no tener que estar haciendo conversiones ni nada, Zeos las hace por nosotros. Al meter el parámetro en el SQL del TZQuery ( en este caso :fecha y :cedula), el componente automáticamente crea los parámetros y podemos acceder a ellos usando ParamByName(nombre_parametro) y según el tipo de datos que vayamos a meter usar AsInteger, AsString, AsDateTime, etc. Por último mediante Recordcount podemo saber cuantos registros arroja el query, obviamente si es 0 es que no hubo nada.
Pruébalo y nos comentas si te funciona. Otra cosa que puede suceder es que en alguna parte del código liberes el ZQuery1 y cuando lo vuelves a tratar de utilizar ya no existe y por eso te manda el error.