你好再次亲爱的专家,
我在http://www.millenniumhealthproducts.com
有一个电子商务网站使用Access作为后端数据库,该网站运行良好。 最近,我们将托管公司更改为godaddy.com。
我们将数据从Access迁移到SQL Server数据库,当然还将连接字符串更改为指向SQL Server db。
从那时起,该网站现在显示价格为0.00。
我无法弄清楚造成这种情况的原因。
字段名是cprice。在Access db上,数据类型是Currency,在SQL Server上,它是Money。
我注意到的一个奇怪的事情是,在SQL Server数据库上,该值更像是xx.xxxx。
在Access db上的示例299.0000,该值更像是$ 299.00
有人可以建议如何解决这个问题吗?
更改连接字符串是否与它有关?
如果需要,我可以提供一些示例asp代码。我正在使用经典的asp。
'Response.Buffer = true
Dim catid, strcat
catid = Request.QueryString("id")
strcat = Request.QueryString ("cat")
If catid = "" OR (IsNumeric(catid) = false) Then
Response.Redirect "index.asp"
End if
Dim catname, productslist
sub productInfo(connObj,category)
q = chr(34)
set cmd = server.CreateObject("ADODB.Command")
cmd.ActiveConnection = connObj
cmd.CommandText = "qryProdsCategory"
cmd.CommandType = adCmdStoredProc
set param = cmd.CreateParameter("theCategory",adInteger,adParamInput,4)
cmd.Parameters.Append(param)
cmd("theCategory") = Cint(category)
set rs = server.CreateObject("ADODB.Recordset")
set rs = cmd.Execute
if not rs.EOF then
catname = rs("catdescription")
%>
<table width='100%' border=0 cellspacing=0 cellpadding=0>
<tr>
<%
i = 1
while not rs.EOF
id = RS("catalogID")
'Response.write id
'response.end
%>
<td class=bodytextcolor width='33%' align=center nowrap>
<img src="img/small/<%=rs("cimageurl")%>" align="center" WIDTH='97' HEIGHT='125'>
<br/><%=rs("cname")%>
<br>Regular Price: <font color=red><%= FormatCurrency(rs("cprice"),2) %></font>
<br/><font color=green>10 or more:</font>
<font color=red><%=FormatCurrency(rs("cover10price"),2)%></font>
<br/><font size=-1><a href="product.asp?id=<%=id%>">View Details</a></font>
<br/>
<font face="Verdana">
<form name="_xclick" target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="business" value="millennium2000@charter.net">
<input type="hidden" name="item_name" value="<%=rs("cname")%>">
<input type="hidden" name="amount" value="<%= FormatCurrency(rs("cprice"),2) %>">
<table>
<tr>
<td>Quantity: <input maxLength="6" Name="quantity" size=2 value="1" style="height: 2.2em; border: 1px solid Black; background: ButtonFace;">
<input type="image" src="images/button_in_cart.jpg" border="0" name="submit" alt="PayPal">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"></td>
</tr>
</table>
<input type="hidden" name="add" value="1">
</form></td>
<%
if (i mod 3) = 0 then
Response.write "</td></tr>"
end if
i = i + 1
rs.MoveNext
wend
else
Response.write "Product information not found."
catname = "Error"
end if
Response.write "productslist: "
rs.Close
set rs = nothing
set cmd = nothing
end sub
%>
--stored procedure
USE [scartmil]
GO
/****** Object: StoredProcedure [dbo].[qryProdsCategory] Script Date: 02/12/2012 19:08:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: StoredProcedure [dbo].[NewStoredProcedure] Script Date: 02/10/2012 19:36:49 ******/
ALTER PROCEDURE [dbo].[qryProdsCategory](@theCategory int)
AS
SELECT products.*, products.ccategory, categories.catdescription
FROM categories INNER JOIN products ON categories.categoryID = products.ccategory
WHERE (((products.ccategory)=@theCategory));
GO
答案 0 :(得分:0)
从Access迁移到SQL时,您遇到了许多转换问题,我相信您的问题是迁移级别,而SQL中的字段可能是money
或numeric(18,2)
,您可能需要如果更改字段的数据类型,请重新移植它或查看SQL是否保留值。
另外,确保在SQL中也配置了任何IDENTITY数据类型,至少从经验来看,Access to SQL并没有真正妥善处理这个问题。