operation not applicable

本文详细介绍了在不同操作系统环境下使用Delphi+SQLServer开发系统遇到的‘operationnotapplicable’错误问题及解决方案,包括检查SQL复杂性、数据库时间格式、字段类型转换等方法。
摘要由CSDN通过智能技术生成

delphi+sqlserver开发的一个系统,在本机(windows xp)和另外一台机器(windows 2003 server)上没有问题,但是在windows 7和另外一台windows xp上却有问题,出错为“operation not applicable”。

代码如下:

网上找了下原因,有下面这么多可能正确的答案:

1)sql太复杂

2)不能用Open应该用execsql

3)只要SQL的表中出现Datatime类型的列,就一定会出现上述 的错误。难道这是dbExpress的BUG???,打上dbExpress的补丁或升级

4)把数据库中 DATATIME   类型改为 SmallDATATIME

5)临时想到,还有可能是Window 7中的时间格式是否是标准格式,因为之前碰到过window7默认格式是 2011/09/01,我们需要的是2011-09-01

对于解决问题的帖子:

http://www.delphibbs.com/delphibbs/dispq.asp?lid=2697500

 

6)网上找的

    query1.close;
    query1.SQL.Clear;
    query1.SQL.add( 'select   username,   room,   idnum,   oprtime,   action   from   dianbaolg   where  
    username=:mypar   order   by   oprtime ');
    query1.ParamByName( 'mypar ').asstring:=edit1.Text;
    query1.open

 

上面语句执行的时候出现同样的问题,但下面的语句就OK了,可能是时间格式化或者按照时间排序的问题。


    query1.close;
    query1.sql.text   :=   'select   *   from   dianbaolg
          where   username   like   ' ' '+ '% '+edit1.text+ '% '+
          ' ' '   and   oprtime   between   ' ' '+
          formatdatetime( 'yyyy-mm-dd ',datetimepicker1.date-1)+ '% '+
          ' ' '   and   ' ' '+formatdatetime( 'yyyy-mm-dd ',datetimepicker2.date)+ '% '+
          ' ' '   order   by   oprtime ';
    query1.Open;

 

7)ClientDataSet的FieldDefs时间字段从ftTimeStamp->ftDateTime

 http://ktop.no-ip.org/topic.asp?TOPIC_ID=34833

8)midas.dll版本问题

http://topic.csdn.net/u/20090703/09/5781A478-FA67-42E9-AEA1-E49B9D0BAE79.html

 

9)我估计是缺少什么文件的,或者数据库的驱动有冲突。
因为90%以上的电脑是很正常,没有任何错误,只有几台电脑上出现这个问题
在Google搜索好似是Datetime类型字段问题,今天我已经把所有关联的Datetime类型字段都改成varchar了。
可是问题还一样。出现如题的错误,无法打开数据集

10)把midas.dll拷贝到目录c:/WINDOWS/system32/ 下

开始->运行->cmd->Regsvr32 c:/WINDOWS/system32/midas.dll

http://bbs.2ccc.com/topic.asp?topicid=343164

 11)在其中一个单元模块加上uses MidasLib

 

 

初步问题解决了:

开发中用 TSQLConnection+TSQLQuery+TDataSetProvider+TClientDataSet

时,应该在设计的时候让TSQLConnection的Active启动一下并设置true,然后再改为false,这样的目的是让其它控件在设计的时候感应下真实数据库的字段,并在部署客户端的时候不至于报这种错误。

 

原先那台访问出错的Window xp机器,没有做任何改变,重启注册下midas.dll就OK了,但是另外一台win 7重启注册了还没用,程序做了小调整(TSQLConnection的Active启动一下并设置true),所有机器都可以了!

 

最终解决:

只要在一个单元中添加 uses MidasLib,这样的话就不需要Midas.dll,上面的解决办法都是浮云,只有第11个方法才能解决各种操作系统环境上的问题!!!

"gurobi"是一种最先进的数学规划求解器,被广泛应用于解决复杂的优化问题。如果在使用gurobi求解器时遇到"solver not applicable"的错误,这意味着该求解器无法适用于当前的问题。这种情况可能由以下几个原因引起: 1. 问题类型不支持:gurobi作为一个优化求解器,仅适用于具有特定结构和特征的优化问题。如果问题的类型与gurobi所支持的类型不匹配,就会出现"solver not applicable"的错误。此时,我们需要检查问题的形式和条件,确保其符合gurobi的求解要求。 2. 问题规模太大:有时,gurobi可能无法处理过大的优化问题。由于计算机的内存和CPU限制,当问题的规模超过了gurobi所能处理的范围时,就会出现"solver not applicable"的错误。在这种情况下,我们可以考虑使用其他求解器或者尝试对问题进行分解和简化,以使其符合gurobi的求解能力。 3. 求解器配置错误:"gurobi"作为一个独立的软件包,需要正确配置和安装才能正常运行。如果在使用gurobi时出现"solver not applicable"的错误,可能是由于求解器的配置或安装有误。在这种情况下,我们需要仔细检查求解器的安装和配置,确保其与当前问题的环境相匹配。 综上所述,当出现"gurobi solver not applicable"的错误时,我们需要检查问题的类型和规模,确保其与gurobi求解器的要求相符。如果问题无法满足gurobi的求解条件,我们可以考虑其他求解器或进行问题的分解和简化。总之,正确配置和使用适当的求解器是成功解决优化问题的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值