exec="select count(*) from "+nj+"zx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"zx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
do while not rs2.eof
zx=rs2("zx")
zxz=rs2("zx")+"z"
zxt=rs2("zx")+"t"
zxs=rs2("zx")+"s"
zxz=request.form(zxz)
zxt=request.form(zxt)
zxs=request.form(zxs)
if zxz="" or zxt="" or zxs="" then
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"
conn.execute exec
end if
rs2.movenext
loop
end if
rs1.close
rs2.close
set rs1=nothing
set rs2=nothing
偶的本意是在表单提交后,先查看所有的表单中是否有空值,如果有表单则不执行,如果没有则执行插入操作。
但现在的问题是,在表单中如果有某一行的值都不为空它就会执行一个插入操作,但是如果下一行为空它又会跳回来,但偶不希望这个插入操作在表单中还有空值的时候就被执行。。。
偶想了很久,觉得最好的解决方法是在执行插入语句exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"的时候把它的ID号获取到,并存入到一个数组中,并在前面写入一个循环,当条件不满足的时候将原来的插入记录都删除掉,但偶实在不知道该怎么去实现这个操作,在这里向各位大虾求教了,并想求教一下各位大虾们有没有更好的解决方法。
10 个解决方案
#1
参考:select max(id) as 'lastId' from TableName
只是参考..................
只是参考..................
#2
用ac自己设置个无重复主键.....可以用时间+随机数的办法
#3
用
select top 1 id From TableName Order By Id Desc
来查询应该会快一些:)
select top 1 id From TableName Order By Id Desc
来查询应该会快一些:)
#4
如果 ID 是自动编号的 ,
那么楼上的方法可行 ,
如果不是 , 可以这样 , 加一个字段 Guid
插入记录时生成一个 Guid 写入该字段 , 然后 select ID from TableName where Guid='你生成的Guid'
那么楼上的方法可行 ,
如果不是 , 可以这样 , 加一个字段 Guid
插入记录时生成一个 Guid 写入该字段 , 然后 select ID from TableName where Guid='你生成的Guid'
#5
回复:
偶的ID 是自动编号的
但偶一直觉得偶的方法太笨,特别是在进行大批量数据操作时,很容易出故障,不知道各位大虾们有没有更好的解决该问题的办法(纯粹探讨一下)
偶的ID 是自动编号的
但偶一直觉得偶的方法太笨,特别是在进行大批量数据操作时,很容易出故障,不知道各位大虾们有没有更好的解决该问题的办法(纯粹探讨一下)
#6
select max(ID) from TABLE_NAME
应该这个可以的
应该这个可以的
#7
判断一下zx, zxz,zxt,zxs,zxz,zxt,zxs这个几个字符串是否为空,如果有空就不执行
#8
谢jobs002,liuxiaoyi666,coolattt,ptma,minady,旧的问题已经基本上解决了,但是新的问题又来了:
偶把上面的代码单独执行确实没问题,但偶想像这样同时操作三个表,前面的第一个表操作起来没问题,后面的两个表操作起来就不对了,但把每个表单独执行又没问题,狂郁闷中,代码都是一样的,偶调试了一中午都没结果,难道是偶的思路有问题吗???
附,改后的代码:
第一个表:
exec="select count(*) from "+nj+"zx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"zx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
dim m, n, id(9)
m=0
do while not rs2.eof
zx=rs2("zx")
zxz=rs2("zx")+"z"
zxt=rs2("zx")+"t"
zxs=rs2("zx")+"s"
zxz=request.form(zxz)
zxt=request.form(zxt)
zxs=request.form(zxs)
if zxz="" or zxt="" or zxs="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"zxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"
conn.execute exec
exec="select top 1 id From "+nj+"zxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第二个表:
exec="select count(*) from "+nj+"fx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"fx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
m=0
do while not rs2.eof
fx=rs2("fx")
fxz=rs2("fx")+"z"
fxz=request.form(fxz)
if fxz="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"fxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"fxp(bjid,fx,z)values("+bjid+",'"+fx+"',"+fxz+")"
conn.execute exec
exec="select top 1 id From "+nj+"fxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第三个表:
bzrz=request.form("bzrz")
bzrt=request.form("bzrt")
bzrx=request.form("bzrx")
if bzrz="" or bzrt="" or bzrx="" then
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"bzrp(bjid,z,t,x)values("+bjid+","+bzrz+","+bzrt+","+bzrx+")"
conn.execute exec
end if
偶把上面的代码单独执行确实没问题,但偶想像这样同时操作三个表,前面的第一个表操作起来没问题,后面的两个表操作起来就不对了,但把每个表单独执行又没问题,狂郁闷中,代码都是一样的,偶调试了一中午都没结果,难道是偶的思路有问题吗???
附,改后的代码:
第一个表:
exec="select count(*) from "+nj+"zx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"zx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
dim m, n, id(9)
m=0
do while not rs2.eof
zx=rs2("zx")
zxz=rs2("zx")+"z"
zxt=rs2("zx")+"t"
zxs=rs2("zx")+"s"
zxz=request.form(zxz)
zxt=request.form(zxt)
zxs=request.form(zxs)
if zxz="" or zxt="" or zxs="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"zxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"
conn.execute exec
exec="select top 1 id From "+nj+"zxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第二个表:
exec="select count(*) from "+nj+"fx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"fx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
m=0
do while not rs2.eof
fx=rs2("fx")
fxz=rs2("fx")+"z"
fxz=request.form(fxz)
if fxz="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"fxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"fxp(bjid,fx,z)values("+bjid+",'"+fx+"',"+fxz+")"
conn.execute exec
exec="select top 1 id From "+nj+"fxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第三个表:
bzrz=request.form("bzrz")
bzrt=request.form("bzrt")
bzrx=request.form("bzrx")
if bzrz="" or bzrt="" or bzrx="" then
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"bzrp(bjid,z,t,x)values("+bjid+","+bzrz+","+bzrt+","+bzrx+")"
conn.execute exec
end if
#9
sql="select id,ddd,ccc from table where id=0"
rs.open sql,conn,3,3
rs.addnew
rs("ddd")="ddd"
...
rs.update
dim id
id=rs("id")
rs.clsoe
#10
在插入新的记录后
lssql="select @@IDENTITY As NewID"
set rs=conn.ececute(lssql)
NewID=rs.Fields("NewID").value
lssql="select @@IDENTITY As NewID"
set rs=conn.ececute(lssql)
NewID=rs.Fields("NewID").value
#1
参考:select max(id) as 'lastId' from TableName
只是参考..................
只是参考..................
#2
用ac自己设置个无重复主键.....可以用时间+随机数的办法
#3
用
select top 1 id From TableName Order By Id Desc
来查询应该会快一些:)
select top 1 id From TableName Order By Id Desc
来查询应该会快一些:)
#4
如果 ID 是自动编号的 ,
那么楼上的方法可行 ,
如果不是 , 可以这样 , 加一个字段 Guid
插入记录时生成一个 Guid 写入该字段 , 然后 select ID from TableName where Guid='你生成的Guid'
那么楼上的方法可行 ,
如果不是 , 可以这样 , 加一个字段 Guid
插入记录时生成一个 Guid 写入该字段 , 然后 select ID from TableName where Guid='你生成的Guid'
#5
回复:
偶的ID 是自动编号的
但偶一直觉得偶的方法太笨,特别是在进行大批量数据操作时,很容易出故障,不知道各位大虾们有没有更好的解决该问题的办法(纯粹探讨一下)
偶的ID 是自动编号的
但偶一直觉得偶的方法太笨,特别是在进行大批量数据操作时,很容易出故障,不知道各位大虾们有没有更好的解决该问题的办法(纯粹探讨一下)
#6
select max(ID) from TABLE_NAME
应该这个可以的
应该这个可以的
#7
判断一下zx, zxz,zxt,zxs,zxz,zxt,zxs这个几个字符串是否为空,如果有空就不执行
#8
谢jobs002,liuxiaoyi666,coolattt,ptma,minady,旧的问题已经基本上解决了,但是新的问题又来了:
偶把上面的代码单独执行确实没问题,但偶想像这样同时操作三个表,前面的第一个表操作起来没问题,后面的两个表操作起来就不对了,但把每个表单独执行又没问题,狂郁闷中,代码都是一样的,偶调试了一中午都没结果,难道是偶的思路有问题吗???
附,改后的代码:
第一个表:
exec="select count(*) from "+nj+"zx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"zx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
dim m, n, id(9)
m=0
do while not rs2.eof
zx=rs2("zx")
zxz=rs2("zx")+"z"
zxt=rs2("zx")+"t"
zxs=rs2("zx")+"s"
zxz=request.form(zxz)
zxt=request.form(zxt)
zxs=request.form(zxs)
if zxz="" or zxt="" or zxs="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"zxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"
conn.execute exec
exec="select top 1 id From "+nj+"zxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第二个表:
exec="select count(*) from "+nj+"fx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"fx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
m=0
do while not rs2.eof
fx=rs2("fx")
fxz=rs2("fx")+"z"
fxz=request.form(fxz)
if fxz="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"fxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"fxp(bjid,fx,z)values("+bjid+",'"+fx+"',"+fxz+")"
conn.execute exec
exec="select top 1 id From "+nj+"fxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第三个表:
bzrz=request.form("bzrz")
bzrt=request.form("bzrt")
bzrx=request.form("bzrx")
if bzrz="" or bzrt="" or bzrx="" then
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"bzrp(bjid,z,t,x)values("+bjid+","+bzrz+","+bzrt+","+bzrx+")"
conn.execute exec
end if
偶把上面的代码单独执行确实没问题,但偶想像这样同时操作三个表,前面的第一个表操作起来没问题,后面的两个表操作起来就不对了,但把每个表单独执行又没问题,狂郁闷中,代码都是一样的,偶调试了一中午都没结果,难道是偶的思路有问题吗???
附,改后的代码:
第一个表:
exec="select count(*) from "+nj+"zx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"zx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
dim m, n, id(9)
m=0
do while not rs2.eof
zx=rs2("zx")
zxz=rs2("zx")+"z"
zxt=rs2("zx")+"t"
zxs=rs2("zx")+"s"
zxz=request.form(zxz)
zxt=request.form(zxt)
zxs=request.form(zxs)
if zxz="" or zxt="" or zxs="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"zxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"zxp(bjid,zx,z,t,s)values("+bjid+",'"+zx+"',"+zxz+","+zxt+","+zxs+")"
conn.execute exec
exec="select top 1 id From "+nj+"zxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第二个表:
exec="select count(*) from "+nj+"fx "
set rs1=server.createobject("adodb.recordset")
rs1.open exec,conn,1,1
exec="select * from "+nj+"fx"
set rs2=server.createobject("adodb.recordset")
rs2.open exec,conn,1,1
if rs1(0)>0 then
m=0
do while not rs2.eof
fx=rs2("fx")
fxz=rs2("fx")+"z"
fxz=request.form(fxz)
if fxz="" then
for n=0 to m-1 step 1
exec="delete * from "+nj+"fxp where id="&id(n)
conn.execute exec
next
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"fxp(bjid,fx,z)values("+bjid+",'"+fx+"',"+fxz+")"
conn.execute exec
exec="select top 1 id From "+nj+"fxp Order By id Desc"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
id(m)=rs("id")
m=m+1
end if
rs2.movenext
loop
end if
第三个表:
bzrz=request.form("bzrz")
bzrt=request.form("bzrt")
bzrx=request.form("bzrx")
if bzrz="" or bzrt="" or bzrx="" then
%>
<script language="JavaScript" type="text/JavaScript">
back_msg("对不起,请先把相应的表单填完整!");
</script>
<%
else
exec="insert into "+nj+"bzrp(bjid,z,t,x)values("+bjid+","+bzrz+","+bzrt+","+bzrx+")"
conn.execute exec
end if
#9
sql="select id,ddd,ccc from table where id=0"
rs.open sql,conn,3,3
rs.addnew
rs("ddd")="ddd"
...
rs.update
dim id
id=rs("id")
rs.clsoe
#10
在插入新的记录后
lssql="select @@IDENTITY As NewID"
set rs=conn.ececute(lssql)
NewID=rs.Fields("NewID").value
lssql="select @@IDENTITY As NewID"
set rs=conn.ececute(lssql)
NewID=rs.Fields("NewID").value