ADO如何使用Update语法呢?(BIG5)
Update

Update述式,用更新料表中位的料值,可以使用WHERE定特定的件算式,符合件算式的才被更新。

法如下:

UPDATE 料表
SET 位新值
WHERE 件算式

您要同更新多,或者在多料表中更新,就需要用到UPDATE述式。

您可以同更多位的料值,譬如,下例品料表中的所有,格打九折,打七折:

UPDATE 品

SET 格 = 格 * 0.9, = * 0.7

UPDATE述式不生Recordset。您使用UPDATE述式更新之後,法原原始值。因此,如果您想知道哪些被更新,建您先使用SELECT和相同的WHERE件算式查果,定是您想更新的後,然後再行UPDATE述式更新。

然您可以的料作份,一您使用UPDATE述式更新了的,您仍然可以您的份中救回些。

我看一於ASP程式中使用SQL指令的例子。

譬如ASP程式rs5.asp如下,[Update 品 Set 量 = 量 + 10] 使用Update品料表中的所有的量位料加10:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update 品 Set 量 = 量 + 10"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from 品 order by 代"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">格</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("格")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("量")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式rs5asp,於用端使用器,行量位料加10的果,每行一次就品料表中的量加10。

Update...Where

UPDATE述式,可以使用WHERE定特定的更件,符合更件的才做更。

譬如ASP程式rs6.asp如下,[Update 品 Set 量 = 量 + 10 where = ''] 定特定的更件,[] 位 [] 的才量加10:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update 品 Set 量 = 量 + 10 where = ''"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from 品 order by DESC"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("量")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式rs6.asp,於用端使用器,行的果,示量加10的。

Update...Where...In

可以利用Update...Where...In找出重覆的,譬如ASP程式rs6.asp如下,[Update 品 Set 格 = 格 - 100 where = '' and 格 in (Select 格 from 品 where 格 > 30000)] 表示格 > 30000而 [] 位 [] 的才降100:

 

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"

sql = "Update 品 Set 格 = 格 - 100 where = '' and 格 in (Select 格 from 品 where 格 > 30000)"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from 品 order by DESC"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">格</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("格")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

conn1.Close

%>

</TABLE>

以上的 ASP程式rs6.asp,於用端使用器,行的果,示格 > 30000的才降100。