告急:要求做一个自动排班次的小程序,小弟菜鸟一个,无头绪啊:(在线) (50分)

  • 主题发起人 主题发起人 fire-7
  • 开始时间 开始时间
F

fire-7

Unregistered / Unconfirmed
GUEST, unregistred user!
哪为老大帮帮忙好吗?给个大概思路就好?(asp + sql server)
简单举例:
白 夜 节假日 | 按(n)天排班
a e h |
b f i |
c g
d
自己的部分思路:
我想先把班次例如(白班)存入数组,通过判断最末的排班记录,确定班次的起始点例如(b-c-d-a)---
-----day[0]=b,day[1]=c,day[2]=d,day[3]=a ???
我想用两个循环来完成插入工作,
如果要排(n)天班,就需要插入n条记录,那么这里用一个循环……?
for i=1 to ndo

下面我就不知道如何写出b-c-d-a-b的循环插入记录了??
for i=0 to 3do
insert day
自己的水平好凹,不过无奈半路出家,没办法,领导还急着要,我先谢谢各位了!
 
忘了补充一下
a,b,c,d四人轮流值白班,
e,f,g三人轮流值夜班,
h,i轮流值节假日,
这样,还要判断是否为节假日,如果为节假日则插入节假日的数组……
帮帮忙好吗?我想我应该补补基础知识了 ……
 
单单用sql 语句是否就可以解决这个问题呢?
我真的想找个人问问啊……我的sql server 坏了,无法测试,很急火啊!
哪位老哥伸手拉小弟一下好吗?
我没用过asp,正在看教程,这个小程序领导想尽快看看的,我头都大了……
如果换成delphi应该如何操作啊?我想证实自己的思路有没有问题和缺陷……
 
我的理解:abcd四人按n天值班 用n对4 取余 delphi中这样写:
case n mod 4 of
0:a 值班
1;b 值班
2:c值班
3:d值班
end;
<script language=vbscript>
select case n mod 4
0:
1:
2:
3:
end select
</script>
 
谢谢啊,我有点开窍了……
刚才想了一下自己的思路,问题很大啊。
我想两个循环是不能用了,
用一个循环+判断
for i=0 to ndo
begin
insert day;
i:=i+1;
if i:=4 then

i:=0;
end
我先得吃饭了,回来再考虑如何具体编码……:)
 
刚才想了一下自己的思路,问题很大啊。
我想两个循环是不能用了,
用一个循环+判断
for i=0 to ndo
begin
insert day;
i:=i+1;
if i:=4 then

i:=0;
end
我先得吃饭了,回来再考虑如何具体编码……:)
**-----------------------------------------------
i是循环变量,不能在循环中改变其值的,所以
i:=i+1;
if i:=4 then

i:=0;
有问题!
 
啊,刚刚写错了啊,应该是两个变量的。
for i=0 to ndo
begin
insert day[j];
j:=j+1;
if j:=4 then

j:=0;
end
不知道这样是否正确了呢?
我想用n对4 取余 是个有效的方法吧,我刚刚回来,还没测试一下……
 
小弟还没做出来,好笨啊!哪位老大帮忙帮到底好吗?
用n对4 取余 能循环插入a-b-c-d-a ,但如何加入周末的-h-j呢?
小弟分不是很多,但如果分值不够,我愿意尽力捐出所有……
 
Asp JavaScript 怎样才能存储datetime类型的数据啊,
我用DATE()函数取的日期,赋值给一个变量,却无法存入数据库中去,
错误提示为:
[Microsoft][ODBC SQL Server Driver][SQL Server]从字符串转换为 datetime 时发生语法错误。
我用convert(datetime,变量)转换了一下,却错误依然如故……不知如何解决啊???
 
是否这样写代码有错误呢?
<%
date1= new date();

rs.Open("select dateadd(day,7,getdate())",cn);
date1=rs(0).value;//是否这里就已经是个字符串了呢?
strSql= "insert into WorkInfo(dateinfo) values ('"+VarToDateTime(date1)+"') ";
//VarToDateTime()是一个富翁告诉我的,不知道是否可以这样引用?
//原来是delphi的函数,这肯定不行了……
cn.Execute(strSql);
%>
我试过用convert(datetime,date1),但不知道是否是格式什么的有错误,仍然提示从字符串转换为 datetime 时发生语法错误。 ?????
 
订个帖,我先试看看再告诉你
 
多谢啊,我查了一下资料,日期文字和时间文字包含在两个井号 (#) 之间。
不知道我该如何在变量前后加这两个东西……
 
加了一条语句,终于能存进去了,
date1 = date1.getFullYear()+"-"+(date1.getMonth()+1)+"-"+date1.getDate();
但还是不能进行日期比较……:(
 
我有点不明白,GetDate不是就能获得系统时间吗?如果日期比较的话可以用DateDiff函数
DateDiff(datepart, startdate, enddate)
DatePart指定要计算哪一部分的差额,具体你可以看Transact-SQL的帮助,在TSQLREF.chm文件里
 
另外前面排周末班次的,我有个思路不知道行不行得通,你可以试试
for i:=0 to ndo
begin
if Date=Weekend then
begin
if Date=SaturDay then
//最简单的判断,只适用于周末,因为只有两个人排班,没考虑节假日
h值班 //如果加了节假日或者三个人值班,那就得自己设定节假日if Date=Holiday
else
//然后判断前一个值班的人,再把当天设定为他后面一人
j值班;
end
else
begin
if Day then
//判断是白天或晚上
case n mod 4 of
0:a值班;
1:b值班;
2:c值班;
3:d值班;
end
else
case n mod 2 of
0:a值班;
1:b值班;
end
end;
end;
 
Tsql里的getdate()是获取系统时间的,不过我在程序里写的[……date1.getDate();}是JavaScript里的函数……
比较时间问题:我想的是有两个时间变量,根据时间变量相互比较来判断循环次数,但现在我的循环总是多加一次,原因是从数据库里提出来的时间变量date1的time是00:00:00而
根据dateadd(day,N,getdate())取得的变量date2的time值是大于00:00:00的,这样
while (date1<date2)时,即使日期已经相等了,但还要循环一次,所以结果出错……
我想取类似datepart()的值,但JavaScript里变量的操作还是有问题,总是无法达到目的……太不熟悉asp,JavaScript的变量、函数了……
 
搞了好几天才算弄出来个大概功能,不过总算能交差了。
浪费我好几个晚上,哎不说了,发分!谢谢各位回贴的朋友……
 
后退
顶部