excel透视表中将日期年月日格式转变为年、季、月、日或月日、年月、年季等组合模式。
透视表右键单击日期单元格,弹出快捷菜单中选中“组合”,弹出的二级菜单中出现“年”、“季”、“月”、“日”,单击选中一个或几个即可。
excel中身份证号码推导出周岁,或总月数、天数。
=DATEDIF(TEXT(MID(C15,7,8),"0000-00-00"),TODAY(),"m")/12
=DATEDIF(TEXT(MID(C15,7,8),"0000-00-00"),TODAY(),"m")
=DATEDIF(TEXT(MID(C15,7,8),"0000-00-00"),TODAY(),"y")
excel中CEILING()函数用途:核定经济补偿金年限。
工龄的小数部分:工龄不超半年按半年计算,超过半年按1年计算。
CEILING.MATH函数将数字向上舍到最接近的整数或最接近指定基数的倍数。
CEILING函数将数字向上舍到最接近的指定基数的倍数。
=CEILING(A1,0.5)或=CEILING.MATH(A1,0.5)
Word表格逆时针旋转90度的简单方法
分节操作。如果表格前后都有内容,并只想调整一个表格的方向,可以利用将Word文档分节的方式处理。具体操作:
(1)将光标放置在表格与前面文字间的适当位置,用鼠标依次点击“页面布局-分隔符-分节符-下一页”。
(2)将光标放置在表格与后面文字间的适当位置,用鼠标依次点击“页面布局-分隔符-分节符-下一页”。
(3)这样就将表格与前后内容分在不同节中。
(4)选中表格,再点选word的工具菜单栏——布局——纸张方向,横向即可。
将Word表格逆时针旋转90度的简单方法-百度经验 https://jingyan.baidu.com/article/3c343ff7d5f8480d377963e1.html
SQL SELECT DISTINCT 语句 https://www.w3school.com.cn/sql/sql_distinct.asp
《Access是否支持临时表?该如何建立?》-- access911.net 文章 http://access911.net/fixhtm/79FAB71E13DC.htm
如何在Access中执行SQL语句和access采用sql语句与sql的区别 - Tom的... http://www.360doc.com/content/10/1121/09/3970454_71085374.shtml
left join得到数据条数比左表原数据表多:
原因:左表、右表连接字段(如:用户id),在第二张表中出现了多条记录具有相同用户id,将导致结果表记录数比左表记录数多。
SELECT [emplyee_base_info 查询].NC编码, * INTO t_labordispute_NCCODE
FROM t_labordispute LEFT JOIN [emplyee_base_info 查询] ON t_labordispute.员工证号 = [emplyee_base_info 查询].证件号码;
不允许在select into 语句中使用多值字段
复合主键与联合主键
access
更新
UPDATE 原表劳动纠纷 SET 原表劳动纠纷.[员工编码] ='0002776' where 原表劳动纠纷.[申请人证号]='98410065039';
Option Compare Database
Sub mksjptable()
Dim s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10 As String
s0 = "SELECT 员工NC顺序码.NC编码, 离职a0.公司, 离职a0.姓名, 离职a0.证件号码, 离职a0.户籍地址, 离职a0.岗位分类, 离职a0.工龄核定起始日期, 离职a0.H2B时间, 离职a0.备注, 离职a0.进入集团日期, 离职a0.职务名称, 离职a0.职级名称, 离职a0.社保缴交地, 离职a0.档案编号 INTO 基本情况汇总表 FROM 离职a0 INNER JOIN 员工NC顺序码 ON 离职a0.人员编码 = 员工NC顺序码.NC编码;"
s1 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a1.公司, 离职a1.姓名, 离职a1.证件号码, 离职a1.户籍地址, 离职a1.岗位分类, 离职a1.工龄核定起始日期, 离职a1.H2B时间, 离职a1.备注, 离职a1.进入集团日期, 离职a1.职务名称, 离职a1.职级名称, 离职a1.社保缴交地, 离职a1.档案编号 FROM 离职a1 INNER JOIN 员工NC顺序码 ON 离职a1.人员编码 = 员工NC顺序码.NC编码;"
s2 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a2.公司, 离职a2.姓名, 离职a2.证件号码, 离职a2.户籍地址, 离职a2.岗位分类, 离职a2.工龄核定起始日期, 离职a2.H2B时间, 离职a2.备注, 离职a2.进入集团日期, 离职a2.职务名称, 离职a2.职级名称, 离职a2.社保缴交地, 离职a2.档案编号 FROM 离职a2 INNER JOIN 员工NC顺序码 ON 离职a2.人员编码 = 员工NC顺序码.NC编码;"
s3 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a3.公司, 离职a3.姓名, 离职a3.证件号码, 离职a3.户籍地址, 离职a3.岗位分类, 离职a3.工龄核定起始日期, 离职a3.H2B时间, 离职a3.备注, 离职a3.进入集团日期, 离职a3.职务名称, 离职a3.职级名称, 离职a3.社保缴交地, 离职a3.档案编号 FROM 离职a3 INNER JOIN 员工NC顺序码 ON 离职a3.人员编码 = 员工NC顺序码.NC编码;"
s4 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a4.公司, 离职a4.姓名, 离职a4.证件号码, 离职a4.户籍地址, 离职a4.岗位分类, 离职a4.工龄核定起始日期, 离职a4.H2B时间, 离职a4.备注, 离职a4.进入集团日期, 离职a4.职务名称, 离职a4.职级名称, 离职a4.社保缴交地, 离职a4.档案编号 FROM 离职a4 INNER JOIN 员工NC顺序码 ON 离职a4.人员编码 = 员工NC顺序码.NC编码;"
s5 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a5.公司, 离职a5.姓名, 离职a5.证件号码, 离职a5.户籍地址, 离职a5.岗位分类, 离职a5.工龄核定起始日期, 离职a5.H2B时间, 离职a5.备注, 离职a5.进入集团日期, 离职a5.职务名称, 离职a5.职级名称, 离职a5.社保缴交地, 离职a5.档案编号 FROM 离职a5 INNER JOIN 员工NC顺序码 ON 离职a5.人员编码 = 员工NC顺序码.NC编码;"
s6 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a6.公司, 离职a6.姓名, 离职a6.证件号码, 离职a6.户籍地址, 离职a6.岗位分类, 离职a6.工龄核定起始日期, 离职a6.H2B时间, 离职a6.备注, 离职a6.进入集团日期, 离职a6.职务名称, 离职a6.职级名称, 离职a6.社保缴交地, 离职a6.档案编号 FROM 离职a6 INNER JOIN 员工NC顺序码 ON 离职a6.人员编码 = 员工NC顺序码.NC编码;"
s7 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a7.公司, 离职a7.姓名, 离职a7.证件号码, 离职a7.户籍地址, 离职a7.岗位分类, 离职a7.工龄核定起始日期, 离职a7.H2B时间, 离职a7.备注, 离职a7.进入集团日期, 离职a7.职务名称, 离职a7.职级名称, 离职a7.社保缴交地, 离职a7.档案编号 FROM 离职a7 INNER JOIN 员工NC顺序码 ON 离职a7.人员编码 = 员工NC顺序码.NC编码;"
s8 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a8.公司, 离职a8.姓名, 离职a8.证件号码, 离职a8.户籍地址, 离职a8.岗位分类, 离职a8.工龄核定起始日期, 离职a8.H2B时间, 离职a8.备注, 离职a8.进入集团日期, 离职a8.职务名称, 离职a8.职级名称, 离职a8.社保缴交地, 离职a8.档案编号 FROM 离职a8 INNER JOIN 员工NC顺序码 ON 离职a8.人员编码 = 员工NC顺序码.NC编码;"
s9 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 离职a9.公司, 离职a9.姓名, 离职a9.证件号码, 离职a9.户籍地址, 离职a9.岗位分类, 离职a9.工龄核定起始日期, 离职a9.H2B时间, 离职a9.备注, 离职a9.进入集团日期, 离职a9.职务名称, 离职a9.职级名称, 离职a9.社保缴交地, 离职a9.档案编号 FROM 离职a9 INNER JOIN 员工NC顺序码 ON 离职a9.人员编码 = 员工NC顺序码.NC编码;"
s10 = "INSERT INTO 基本情况汇总表 ( NC编码, 公司, 姓名, 证件号码, 户籍地址, 岗位分类, 工龄核定起始日期, H2B时间, 备注, 进入集团日期, 职务名称, 职级名称, 社保缴交地, 档案编号 ) SELECT 员工NC顺序码.NC编码, 在职aa.公司, 在职aa.姓名, 在职aa.证件号码, 在职aa.户籍地址, 在职aa.岗位分类, 在职aa.工龄核定起始日期, 在职aa.H2B时间, 在职aa.备注, 在职aa.进入集团日期, 在职aa.职务名称, 在职aa.职级名称, 在职aa.社保缴交地, 在职aa.档案编号 FROM 在职aa INNER JOIN 员工NC顺序码 ON 在职aa.人员编码 = 员工NC顺序码.NC编码;"
DoCmd.RunSQL s0
DoCmd.RunSQL s1
DoCmd.RunSQL s2
DoCmd.RunSQL s3
DoCmd.RunSQL s4
DoCmd.RunSQL s5
DoCmd.RunSQL s6
DoCmd.RunSQL s7
DoCmd.RunSQL s8
DoCmd.RunSQL s9
DoCmd.RunSQL s10
End Sub
将Access表中的空字段值设置为0。
如果Access表中某一数字字段值为空,即Null,那么在对含有该字段的多个字段求和时,求合字段值也为Null。
此时需要对表中的Null值字段进行0值处理。
UPDATE t_labordispute SET 申请经济补偿金 =0 WHERE IsNull(申请经济补偿金);
或者当字段类型为“计算”,用于计算的某一字段为Null时,则可用如下:
IIf( IsNull( [裁定经济补偿金] ) ,0, [裁定经济补偿金] ) +IIf( IsNull( [裁定工资]) ,0, [裁定工资] ) +IIf( IsNull( [裁定加班工资]) ,0, [裁定加班工资] ) +IIf( IsNull( [裁定法定加班]) ,0, [裁定法定加班] ) +IIf( IsNull( [裁定年休假] ) ,0, [裁定年休假] ) +IIf( IsNull( [裁定无合同双倍工资]) ,0, [裁定无合同双倍工资] ) +IIf( IsNull( [裁定生活费] ) ,0, [裁定生活费] ) +IIf( IsNull( [裁定工伤待遇]) ,0, [裁定工伤待遇] ) +IIf( IsNull( [裁定赔偿金] ) ,0, [裁定赔偿金] ) +IIf( IsNull( [裁定社保费]) ,0, [裁定社保费] ) +IIf( IsNull( [裁定失业损失] ) ,0, [裁定失业损失] ) +IIf( IsNull( [裁定其他] ) ,0, [裁定其他] )
在access的查询中,不可采用如下格式,需要“逐条”语句执行,不能采用如下格式执行一次执行多条语句。
这一点与sql环境不同。
UPDATE t_labordispute SET 备注 = null WHERE 备注='(null)';
UPDATE t_labordispute SET 备注 = null WHERE 备注='None';
如果更新某个字段空值为新的内容,需要:
UPDATE t_labordispute SET 备注 = '新内容' WHERE 备注 Isnull;
如果更新某个字段空值为新的内容,需要:
UPDATE t_labordispute SET 申请生育津贴 = 0 WHERE 申请生育津贴 Is null;
Access表同一记录多个字段取最大值(或最小值),存入新字段。
通过自建函数:Access VBA新建模块,如下:
Function Minimum(ParamArray FieldArray() As Variant)
' Declare the two local variables.
Dim I As Integer
Dim currentVal As Variant
' Set the variable currentVal equal to the array of values.
If IsNull(FieldArray(0)) Then FieldArray(0) = 0
currentVal = FieldArray(0)
' Cycle through each value from the row to find the smallest.
For I = 0 To UBound(FieldArray)
If IsNull(FieldArray(I)) Then FieldArray(I) = 0
If FieldArray(I) < currentVal Then
currentVal = FieldArray(I)
End If
Next I
' Return the minimum value found.
If FieldArray(I) = 0 Then FieldArray(I) = Null
Minimum = currentVal
End Function
Function Maximum(ParamArray FieldArray() As Variant)
' Declare the two local variables.
Dim I As Integer
Dim currentVal As Variant
' Set the variable currentVal equal to the array of values.
If IsNull(FieldArray(0)) Then FieldArray(0) = 0
currentVal = FieldArray(0)
' Cycle through each value from the row to find the largest.
For I = 0 To UBound(FieldArray)
If IsNull(FieldArray(I)) Then FieldArray(I) = 110
If FieldArray(I) > currentVal Then
currentVal = FieldArray(I)
End If
Next I
' Return the maximum value found.
If currentVal = 110 Then currentVal = Null
Maximum = currentVal
Access表中,新建字段类型为计算,调用自建函数:Maxmium、Minmium。
最大日期: maximum([t_labordispute].[仲裁举证截止日期],[t_labordispute].[开庭日期],[t_labordispute].[结束日期],[法院一审].[申请立案日期],[法院一审].[开庭日期],[法院一审].[判决日期])
--复制表结构为新的表
select * into NewTable from OldTable where 1=2
--复制表结构及内容到新的表
select * into newtable from oldtable
--复制表结构内的某些字段为新的表
select title,type,price,notes ok into NewTable2 from titles where 1=2
--复制表结构及内容到新的表,可以选择字段
select title,type,price,pub_id-price ok into NewTable2 from titles
您也可以这样,先复制表结构(可以选一些字段为新的表),再插入内容
--复制表结构内的某些字段为新的表
select title y1,type y2,price y3 into yongfa365 from titles where 1=2
--向新的表里添加数据
insert into yongfa365 (y1,y2,y3) select title,type,price from titles
可以把(select * from table)形成一个表。
多表查询
SELECT t_labordispute.[员工姓名], t_labordispute.[档案号],t_labordispute.[裁判结果], t_labordispute.[是否选中], t_labordispute.[员工证号], t_labordispute.[申请经济补偿金], t_labordispute.[申请工资], t_labordispute.[申请效益奖], t_labordispute.[申请加班工资], t_labordispute.[申请法定加班], t_labordispute.[申请年休假], t_labordispute.[申请无合同双倍工资], t_labordispute.[申请生活费], t_labordispute.[申请工伤待遇], t_labordispute.[申请生育津贴], t_labordispute.[申请赔偿金], t_labordispute.[申请社保], t_labordispute.[申请失业金损失], t_labordispute.[申请其它], t_labordispute.[申请合计], t_labordispute.裁定合计, t_labordispute.仲裁庭外和解, 法院一审.裁定合计, 法院一审.一审庭后和解, 法院二审.裁定合计
FROM (t_labordispute LEFT JOIN 法院一审 ON t_labordispute.档案号 = 法院一审.同案码) LEFT JOIN 法院二审 ON t_labordispute.档案号 = 法院二审.同案码
where t_labordispute.申请日期 >= #2020/1/1# and t_labordispute.省份='河北省';
选中的表
SELECT t_labordispute.[档案号], t_labordispute.员工姓名, t_labordispute.[员工证号], t_labordispute.[裁判结果], t_labordispute.[申请日期], t_labordispute.[员工实际所在公司], t_labordispute.[申请经济补偿金], t_labordispute.[申请工资], t_labordispute.[申请效益奖], t_labordispute.[申请加班工资], t_labordispute.[申请法定加班], t_labordispute.[申请年休假], t_labordispute.[申请无合同双倍工资], t_labordispute.[申请生活费], t_labordispute.[申请工伤待遇], t_labordispute.[申请生育津贴], t_labordispute.[申请赔偿金], t_labordispute.[申请社保], t_labordispute.[申请失业金损失], t_labordispute.[申请其它], t_labordispute.[申请合计], t_labordispute.[申请附注], t_labordispute.[裁定经济补偿金], t_labordispute.[裁定工资], t_labordispute.[裁定生活费], t_labordispute.[裁定社保费], t_labordispute.[裁定生育津贴], t_labordispute.[裁定合计], t_labordispute.[仲裁庭外和解], t_labordispute.[预判结果]
FROM t_labordispute where 是否选中=true;
UPDATE t_labordispute SET 预判结果 = null WHERE 预判结果 IS NULL;
access里like的通配符不能用%,要用*
access里like的通配符用法是这样:
“?”表示任何单一字符; “*”表示零个或多个字符; “#”表示任何一个数字
例:UPDATE t_labordispute SET 裁判类别 = 'CC' WHERE 裁判结果 like 'C*';
语句:将裁判结果以C为首字母的记录,更改为裁判类别值为CC。
原来在SQL SERVER 里是用%%的,在ACCESS里是用**号的!
但如果在VS2005的TableAdapter里又要用%%
UPDATE t_labordispute SET 立案日期 = 申请日期 WHERE 裁判pp结果 like 'A*';
UPDATE t_labordispute SET 立案日期 = 申请日期 WHERE 立案日期 is null;