鸡毛信!!!!!!!!!!!!!!!
有如下程序:
d=right("00" & cstr(day(now)),2)
m=right("00" & cstr(month(now)),2)
y=right(cstr(year(now)),1)
set fs=server.createobject("scripting.fileSystemObject")
file=server.mappath("num.txt")
set txt=fs.opentextfile(file,1,true)
if not txt.atendofstream then
llj=clng(txt.readline)
end if
if cint(d)<>cint(llj) then
application("bianhao")=1
llj=d
txt.close
set txt=fs.createtextfile(file,true) 出错行!!!!!!
txt.writeline llj
else
application("bianhao")=application("bianhao")+1
end if
txt.close
if application("bianhao")<10 then
ff=1
end if
if application("bianhao")>=10 and application("bianhao")<100 then
ff=2
end if
select case ff
case 1
application("num")=y & m & d &"00" & application("bianhao")
case 2
application("num")=y & m & d &"0" & application("bianhao")
case else
application("num")=y & m & d & application("bianhao")
end select
是为了生成自动编号的,在本机上调试正常。
但放到服务器上则提示上行出错,即不能往文本文件里写入,请各位大哥帮帮忙!
昨天有人告诉我是其它用户没有写的权限,
但是asp网页上的记数器都要往文本文件写入,
难道说每个访问的人都有写入的权限????
不懂真的搞不懂!!!
请大虾们指点!!!!!!!!!!
问题点数:20、回复次数:33Top
1 楼linj(豆豆)回复于 2001-05-29 09:42:00 得分 0
请帮帮忙!Top
2 楼lsmodel(小笨猪!~)回复于 2001-05-29 09:54:00 得分 0
确实有可能是:用户没有写的权限,因为服务器对权限限制的比较严格,例如如果是NTFS格式的分区很有可能对目录的访问权限只允许网站管理员,对everyone没有写权限。没有仔细看你的代码,如果你说在本机调试通过说明代码没有问题,则应从服务器环境上找问题。
另外建议你用数据库统计访问量,功能更强大,而且一般NT服务器都支持ACCESS。Top
3 楼linj(豆豆)回复于 2001-05-29 10:08:00 得分 0
不是,这是我们老板要我稿的企业内部的工作流程程式以实现办公自动化!
具体是在前台输入客户们的要求。
老板要求在前台输入活时则自动生成编号。
今天是2001-5-29,则编号从010529001开始,
到明天,则又变为010530开始
所以我编了如上程式,
我把每天的日期写入文本文件中,
但现在则出现上述情况!
我以本机作为服务器时也可以实现的,
但真正移植到服务器上则出现上述情况。
真是头大!
Top
4 楼linj(豆豆)回复于 2001-05-29 10:09:00 得分 0
更正:
到明天,则又从010530001开始Top
5 楼linj(豆豆)回复于 2001-05-29 10:11:00 得分 0
在服务器上本机调试时也出现上述情况!Top
6 楼linj(豆豆)回复于 2001-05-29 10:27:00 得分 0
高手们,请帮帮忙看看鸡毛信,帮我出出主意,我都快要发疯了!!!Top
7 楼siyu(丝羽)回复于 2001-05-29 10:58:00 得分 0
检查一下你服务器上的文件格式,看看是不是与你本机的一致。不过我同意lsmodel的建议,用access数据库代替文本文件存储日期。Top
8 楼lsmodel(小笨猪!~)回复于 2001-05-29 11:14:00 得分 0
你的问题我也遇到过,我的意见直接在数据库中采用自动编号。在加一个日期字段,则编号等于两个字段合起来,这样做还可以避免出现重复编号。我极力不建议用application()。Top
9 楼linj(豆豆)回复于 2001-05-29 11:21:00 得分 0
我用的是sql server
不知在数据库中如何实现,
能具体说说吗?
当初我就是不知怎样实现而退而其次选用application的!Top
10 楼lsmodel(小笨猪!~)回复于 2001-05-29 11:39:00 得分 0
当然可以
CREATE TABLE [dbo].[TABLE1] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[REDATE] [datetime] NOT NULL ,
[F1] [char] (10) NULL ,
[F2] [char] (10) NULL ,
[F3] [char] (10) NULL
) ON [PRIMARY]
GO
先建一个表,包括ID和REDATE两个字段,还有其他需要前台输入客户们的要求填写的内容字段(F1、F2、F3....)就行了。
ID号是自动加1的,编号可以用ID和REDATE(时间)组合得出,保证不会重复,而且查询效率高。也可以加个编号字段直接存放编号。还有什么不明白?Top
11 楼linj(豆豆)回复于 2001-05-29 11:54:00 得分 0
不行的。
问题是日期一变id字段值又要清零,
怎么实现?Top
12 楼linj(豆豆)回复于 2001-05-29 12:25:00 得分 0
to lsmodel
你还在吗?Top
13 楼lsmodel(小笨猪!~)回复于 2001-05-29 12:29:00 得分 0
暂时可以用SQL语句的COUNT得出某日以前的记录数,用ID-这个数+1再和日期合,即可完成你的要求,不过效率太低,我在试别的算法,等我一下。Top
14 楼linj(豆豆)回复于 2001-05-29 12:40:00 得分 0
主要的问题是数据库中id字段要实现每当日期一变,它即从1开始。
如此循环。
我想的头都大了,还是不知怎样可以实现。
唉,还是太笨了!
也就是前天是2001-5-27,
共有个10客户。
则编号则应为010527001~010527010
但今天有个8客户
则编号则应为010529001~010529008
Top
15 楼linj(豆豆)回复于 2001-05-29 12:50:00 得分 0
会不会服务器本身太破!
我们老板奇扣, 4000元配了一台服务器!
唉。。。。。。Top
16 楼linj(豆豆)回复于 2001-05-29 13:07:00 得分 0
to lsmodel
嗨,你还没想出吗?
Top
17 楼lsmodel(小笨猪!~)回复于 2001-05-29 13:27:00 得分 0
给你段代码,没有测试,请参考思路,我还在想更好的,不过一会要开会了,有意请留下联系办法交个朋友。
strdate= enchar(year(date),4) & enchar(month(date),2) & enchar(day(date),2)
'得出20010529
bianhao=strdate&getid("table1","id",4,"redate="date())
'得出20010529XXXX
'补位函数。eg:enchar(23,5)="00023"
function enchar(inum,ilength)
enchar=inum
dim icount
for icount=1 to ilength
enchar="0" & enchar
next
enchar=right(enchar,ilength)
end function
'返回自动编码函数。
'stable为表名,sidcol为关键字,ilength为编码长度,sfilter为过滤条件。
'sidcol必须是数值格式。
function getid(stable,sidcol,ilength,sfilter)
dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.open '你的数据库连接
dim sql,rs,tmpid
sql="select count(" & sidcol & ") from " & stable & " where (" & sfilter & ")"
'===Response.Write sql & "<br>"
set rs=conn.Execute(sql)
if isnumeric(rs(0)) then
tmpid=rs(0)
else
tmpid=0
end if
dim icount,ismax
ismax=true
for icount=1 to ilength
if mid(tmpid,icount,1)<>"9" then ismax=false
next
if ismax then
getid=getrandom(stable,sidcol,ilength,sfilter)
else
tmpid=tmpid+1
getid=enchar(tmpid,ilength)
end if
end functionTop
18 楼lsmodel(小笨猪!~)回复于 2001-05-29 13:30:00 得分 0
上面代码字段用的是我举例的数据表。ID和REDATE。Top
19 楼linj(豆豆)回复于 2001-05-29 13:33:00 得分 0
我的伊妹儿:
linjliu@163.net
你的?
非常感谢!Top
20 楼linj(豆豆)回复于 2001-05-29 13:38:00 得分 0
qq:64091858
不过我很少上线!
公司不许!Top
21 楼lsmodel(小笨猪!~)回复于 2001-05-29 13:39:00 得分 0
给你发信了。Top
22 楼linj(豆豆)回复于 2001-05-29 13:42:00 得分 0
谢谢!Top
23 楼linj(豆豆)回复于 2001-05-29 13:57:00 得分 0
你还在吗?
你的程序我看不大懂!Top
24 楼lsmodel(小笨猪!~)回复于 2001-05-29 14:09:00 得分 10
???我在,那里不明白,快,2:30我要走。Top
25 楼linj(豆豆)回复于 2001-05-29 14:16:00 得分 0
我还是先好好看看,你忙你的吧!开完会给我打个召呼,我再问你!Top
26 楼linj(豆豆)回复于 2001-05-29 14:19:00 得分 0
说实在的我还是搞不懂为什么放在服务器上就不行了呢?
现在这个程序我们已经在用了。
但就是每天晚上一到0:00 点就不能用!
每天我一早来了把文本文件再一改。
唉。。。。。。Top
27 楼zskllj(我靠,I服了YOU)回复于 2001-05-29 14:37:00 得分 10
strdate= enchar(year(date),4) & enchar(month(date),2) & enchar(day(date),2)
'得出20010529
bianhao=strdate&getid("table1","id",4,"redate="date())
'得出20010529XXXX
'补位函数。eg:enchar(23,5)="00023" //应该是enchar(23,3)="00023";
function enchar(inum,ilength) //enchar函数,第一个参数为前边需要加零的字符串,第二个为前边加零的个数!
enchar=inum //第一个参数的值给enchar
dim icount //定义变量icount
for icount=1 to ilength //循环第二个参数的值次
enchar="0" & enchar //每次循环参数一前加个“0”
next
enchar=right(enchar,ilength) //从右边区ilenght位
end function
'返回自动编码函数。
'stable为表名,sidcol为关键字 //必须是数值格式字段名
'ilength为编码长度,sfilter为过滤条件。
function getid(stable,sidcol,ilength,sfilter)
dim conn
set conn=Server.CreateObject("ADODB.Connection")
conn.open '你的数据库连接
dim sql,rs,tmpid
sql="select count(" & sidcol & ") from " & stable & " where (" & sfilter & ")"
'===Response.Write sql & "<br>"
set rs=conn.Execute(sql)
if isnumeric(rs(0)) then
tmpid=rs(0) //变量付值
else
tmpid=0
end if
dim icount,ismax
ismax=true
for icount=1 to ilength
if mid(tmpid,icount,1)<>"9" then ismax=false //检查每一位是不是9
next
if ismax then //如果每一位都是9
getid=getrandom(stable,sidcol,ilength,sfilter) //函数未定义!
else //如果有一位不是9
tmpid=tmpid+1 //
getid=enchar(tmpid,ilength)
end if
end function Top
28 楼linj(豆豆)回复于 2001-05-29 15:23:00 得分 0
好累!!1Top
29 楼rejobs(发呆小子)回复于 2001-05-30 08:47:00 得分 0
linj(豆豆)
我有一个好主意:
1。统计当天数据库内的记录数
2.id=int(replace(date(),"-",""))&当统计当天的记录数+1
3.写人数据库,即可!!
祝:好运!!
Top
30 楼linj(豆豆)回复于 2001-05-30 09:53:00 得分 0
i want to jumping!Top





