开发OA整合考勤系统的总结

本文分享了OA系统与考勤系统整合的经验,包括使用ACCESS和MSSQL进行日期处理和查询优化的方法,以及PHP连接数据库的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发OA整合考勤系统的总结

ACCESS篇
  • 格式化时间Format(Now, ["yyyy-mm-dd hh:nn:ss"/"General Date"/"Long Date"/"y"/"ddd/..."]) ddd对应的是周几
  • 范围查询between #2018-01-01# and #2018-02-01#, 是以 “#” 为连接符。
  • iif():表示条件判断,IIf ( expr , truepart , falsepart )
  • IsNull(): 判断是否为空
  • DATEDIFF(): 计算两个日期之间的差:DateDiff ( 间隔,date1 和 date2 [, firstdayofweek] [, firstweekofyear] ),其中的间隔可以用yyyy(年),q(季度),m,y(年中的某一天),w(工作日),ww(z周),h,n,s

自己在处理查找access语句的时侯,有点扎死胡同,想用一条sql把所有的想要的结果查出来,后果是耗时多,且效果不理想。


MSSQL篇
  • CONVERT():CONVERT(varchar(100), [f_AttDate], 23).常用的几种代码为
    • CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
    • CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
    • CONVERT(varchar(100), GETDATE(), 24): 10:57:47
  • ISNULL():ISNULL(CONVERT(varchar(100),d.f_OnDuty1,24), ‘09:00:00’),第一个参数为判断,第二个是true所执行的结果。
  • cast()CAST (expression AS data_type) ,数据类型转换,将数据转为指定的类型。
  • 查找两个日期重合部门的数据
    and (('2017-10-01' > cast([f_Value] as datetime) AND '2017-10-01' < cast([f_Value2] as datetime ))
    OR ('2017-10-01' < cast([f_Value] as datetime) AND '2018-03-10' > cast([f_Value2] as datetime ))
    OR ('2018-03-10' > cast([f_Value] as datetime) AND '2018-03-10'< cast([f_Value2] as datetime) )
  • datename(weekday, getDate()): 判断今天是周几,同样的还有
    • DATENAME (day ,getdate())–当月几号
    • DATENAME (month ,getdate())–月份
    • DATENAME (dayofyear ,getdate())–一年中的第几天
    • DATENAME(week,GETDATE())–一年中第几周
    • DATENAME(hour,GETDATE())–当前几点,24小时制的
    • DATENAME(minute,GETDATE())–取当前分钟数

php篇
  • php连接mssql$conn=mssql_connect("ip,1433",&user,$pwd);,注意如果没有更改端口号,直接写ip就好了,更改了的可以写 ip,port以“,”为连接符号
  • php连接odbc数据源: 1.连接access数据库,可以在搜索-》管理工具中-》数据源管理中创建“系统DSN”,命名选择数据库所在的位置。如果遇到说什么体系不匹配可能是32,64位的问题,打开文件C:\Windows\SysWOW64\odbcad32.exe,在这个里面配置 系统DSN。2.也可以不配置数据源直接连接:
    $dsn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".iconv("utf-8","gbk","\\\\192.168.100.100\\考勤备份\\attBackup.mdb");
    $conn1 = odbc_connect($dsn,"","") or die("error");
    ,注意编码问题,DBQ部分可以写本地的路径。
  • 处理mssql_query()的结果

    for ($i=0; $i < mssql_num_rows($result); $i++)
    {
    $row = mssql_fetch_array($result);
    $name = $row[1];
    }
  • 处理odbc_exec( conn1, c o n n 1 , sql);查询的结果

    while(odbc_fetch_row($res))
    {
        for ($j = 1; $j <= odbc_num_fields($res); $j++)
        {        
             $field_name = iconv("GBK","UTF-8", odbc_field_name($res, $j));
             $ar[$field_name] = iconv("GBK","UTF-8", odbc_result($res, iconv("UTF-8","GBK",$field_name)));
        }
    
        $toReturn[$i] = $ar;
        $i++;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值