raksmart活动促销

分享

写回答

发帖

数据库问题,请高人指点

国外虚拟主机 国外虚拟主机 1836 人阅读 | 10 人回复

发表于 2009-5-20 12:15:25 | 显示全部楼层 |阅读模式

我用的是lp windows主机,APS+access,
现在的问题是,数据库的不能使用复合条件:
像这段代码:set rs=conn.execute("select  * from buyok_produc where online=true and Remark='1' order by AddDate desc,LarCode desc")
数据库就不能正确读取,如果我把后面判断部分删除掉:

set rs=conn.execute("select  * from buyok_produc")

就可以正常读取,但数据库肯定需要很多判断条件的,只是这样把全部数据读出来没有什么意义,请高手帮我指点问题的所在

注:程序代码是没有问题的,同样的网站在GODADDY就正常。

回答|共 10 个

一路同行

发表于 2009-5-20 12:18:10 | 显示全部楼层

你把查询语句写在一个变量里,在引用这个变量看看

qiaoan

发表于 2009-5-20 13:41:10 | 显示全部楼层

原帖由 qiaoan 于 2009-5-20 12:15 PM 发表
我用的是lp windows主机,APS+access,
现在的问题是,数据库的不能使用复合条件:
像这段代码:set rs=conn.execute("select  * from buyok_produc where online=true and Remark='1' order by AddDate desc,LarCode desc")
...

请问可以举个例子吗,我对数据库只是一知半解的,贴代码出来:

头部数据库
<%
DB="data/buyok.asp"
Response.Buffer=True
session.timeout=20
on error resume next
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if fso.FolderExists(server.MapPath("include"))=false then
DB="../"&DB
end if
set fso=nothing
set conn=server.createobject("adodb.Connection")
connstr="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DB)
'connstr= "driver={Microsoft Access Driver(*.mdb)};dbq=" & Server.MapPath(DB)
conn.Open connstr


调用部分代码:
  <%
set rs=conn.execute("select  * from buyok_produc where online=true and Remark='1' order by AddDate desc,LarCode desc")
if rs.bof and rs.eof then
%>
  <tr>
    <td height="150" align="center">暫時沒有推薦商品</td>
  </tr>
  <%
  else
   k=1
   Do While Not rs.eof
        response.write "<tr>"
    for i=1 to 3
        k=k+1
%>

一路同行

发表于 2009-5-20 13:48:02 | 显示全部楼层

你用一个变量,比如
set sql=“select  * from buyok_produc where online=true and Remark='1' order by AddDate desc,LarCode desc”
再写
set rs=conn.execute(sql)

qiaoan

发表于 2009-5-21 13:34:57 | 显示全部楼层

请问是这样吗?

set sql="select * from buyok_produc where online=true and Remark='1' order by AddDate desc,LarCode desc"
set rs=conn.execute(sql)
if rs.bof and rs.eof then


可结果还是一样的,根本没有返回数据,都不知道该如何了!

一路同行

发表于 2009-5-21 13:39:47 | 显示全部楼层

set sql="select * from buyok_produc where Remark='1'
这样行不行?后面加where子句就不行?

qiaoan

发表于 2009-5-21 15:11:43 | 显示全部楼层

原帖由 一路同行 于 2009-5-21 01:39 PM 发表
set sql="select * from buyok_produc where Remark='1'
这样行不行?后面加where子句就不行?



是的,也不行的,只要后面跟了条件就没有返回数据了。

一路同行

发表于 2009-5-21 15:22:03 | 显示全部楼层

这个问题比较奇怪,联系他们主机商问问

fanqi1234

发表于 2009-5-21 17:22:31 | 显示全部楼层

SELECT * FROM XXXX WHERE TRUE
微软的东西一直就不怎么靠谱……

qiaoan

发表于 2009-5-22 10:13:13 | 显示全部楼层

已经找到解决办法,提出来大家共享!

1、lunarpages不只支持dsn访问,同样可以支持普通的直接访问access。

2、中国的客户如果上传网站后发现数据库无法正常使用,报500错误或详细的Microsoft   OLE   DB   Provider   for   ODBC   Drivers   ‘80040e21′  ODBC   driver   does   not   support   the   requested   properties 或 Microsoft OLE DB Provider for ODBC Drivers (0×80004005)
[Microsoft][ODBC Microsoft Access Driver] Selected collating sequence not supported by the operating system

。这些错误都是无法支持包含order by,where的sql语句而报错。以access 2003为例,那么请新建一个数据库,工具,选项,常规,新建数据库排序次序,一定要修改为“常规”。然后文件-获取外部数据-导入-选择原先的mdb数据库导入即可。用导入的新数据库上传替换旧的数据库。即可正常支持order by,where等查询。原因是lp的主机上没有安装东欧语言的支持,数据库中包含有非英语等字符的,不被支持而报错。

3、数据库内容中文字符乱码,在asp每个页面的第一行加入一行代码:<%@ codepage=”936″ %>。 ①,如果第一行是以 <%@ LANGUAGE=”VBscript” %> 开头, 则把第一行改为:<%@ codepage=”936″ LANGUAGE=”VBscript” %>②,如果第一行是以 <html> 或 <s cript LANGUAGE=”javascript”>开头,则不加入。

评分

参与人数 1威望 +3 金币 +3 收起 理由
一路同行 + 3 + 3 精品文章

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则