电话+V:192606-48052 ,欢迎咨询怎么剔除多余账号数据库,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
归档数据库的备份可以在Taglogging里面设置,如下图:
Wincc的归档时根据设置的大小或者时间进行片段保存的,如果要删除以前的历史归档,可以直接删除保存的归档片段(一般片段保存在项目中),如下:
但如果你要删除某个数据的一个时间段的数据的话西门子好像没有给出这个权限对数据库进行操作。要是想直接删除一个变量的归档可以把这个变量从归档中剔除。
SUBTOTAL(3,A2:A100)
相当于用COUNTA函数统计包括隐藏值中非空单元格的个数。
SUBTOTAL函数的参数包含的功能不包括COUNTIF函数。
SUBTOTAL函数返回列表或数据库中的分类汇总。通常,使用“数据”菜单中的“分类汇总”命令可以容易地创建带有分类汇总的列表。一旦创建了分类汇总,就可以通过编辑SUBTOTAL函数对该列表进行修改。
语法
SUBTOTAL(function_num,ref1,ref2,...)
Function_num为1到11(包含隐藏值)或101到111(忽略隐藏值)之间的数字,指定使用何种函数在列表中进行分类汇总计算。
Function_num
(包含隐藏值)Function_num
(忽略隐藏值)函数
1101AVERAGE
2102COUNT
3103COUNTA
4104MAX
5105MIN
6106PRODUCT
7107STDEV
8108STDEVP
9109SUM
10110VAR
11111VARP
Ref1,ref2,为要进行分类汇总计算的1到29个区域或引用。
说明
如果在ref1,ref2,中有其他的分类汇总(嵌套分类汇总),将忽略这些嵌套分类汇总,以避免重复计算。
当function_num为从1到11的常数时,SUBTOTAL函数将包括通过“格式”菜单的“行”子菜单下面的“隐藏”命令所隐藏的行中的值。当您要分类汇总列表中的隐藏和非隐藏值时,请使用这些常数。当function_num为从101到111的常数时,SUBTOTAL函数将忽略通过“格式”菜单的“行”子菜单下面的“隐藏”命令所隐藏的行中的值。当您只分类汇总列表中的非隐藏数字时,使用这些常数。
SUBTOTAL函数忽略任何不包括在筛选结果中的行,不论使用什么function_num值。
SUBTOTAL函数适用于数据列或垂直区域。不适用于数据行或水平区域。例如,当function_num大于或等于101时需要分类汇总某个水平区域时,例如SUBTOTAL(109,B2:G2),则隐藏某一列不影响分类汇总。但是隐藏分类汇总的垂直区域中的某一行就会对其产生影响。
如果所指定的某一引用为三维引用,函数SUBTOTAL将返回错误值#VALUE,。
【分享成果,随喜正能量】苦难,是每个人的必经之路,而吃苦,也是不可避免的。有些苦是被动受的,有些苦是主动吃的。主动吃的苦,不是真正的苦,被动吃的苦,才是真正的苦。人这一辈子,无论什么事情,被动做和主动做是不同的。主动吃苦,心甘情愿有毅力,被动吃苦,敷衍了事会放弃。如果吃不了自律的苦,最后必然要吃平庸的苦,唯有主动吃苦,坚持自律的人,才能靠毅力和勇气赢得好成绩。
《VBA数据库解决方案》教程是我推出第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
大家好,我们今日继续讲解VBA数据库解决方案的第26讲内容:利用VBA,把工作表中不存在的记录在数据表中批量删除。在前两讲中,我们讲了根据工作表的数据删除数据表数据的方法,大家要在工作中多利用,很多的知识点是非常灵活的,当你一旦利用了这些方法,工作中的数据处理就会得心应手,效率也会大大的提高,知识是用来利用的,VBA的每个知识点,利用好了都会收到很好的效果.
1应用场景的具体分析我们今天讲的内容是上面两讲内容的延伸:在处理数据的时候,我们往往会遇到很多情况,其中最常见的是数据的核对,比如我们的数据库中有很多的数据,是否准确呢?我们要定期核对.核对最基本的方法是导出数据,和现场逐一核对,然后在EXCEL表格中做成标识,没有的删除,这个时候如何把数据表中的数据也同步处理呢?今日我们需要解决的就是这个问题。
实例:如下的工作表数据,和数据库中相应的数据不是完全一致的,数据库中的数据肯定是比数据表中的数据多,要把数据库中多余的数据一次性删除.
该怎么处理呢?为了在之后的运行过程中验证数据,我们先把数据表中的数据导出看一下:
我们发现在数据库中多余的数据是100036、100040。下面我们着手解决。
2删除工作表不存在,数据表中存在多余记录的代码及代码解读代码:
Submynz_26()'第26讲工作表不存在,数据表中存在的多余记录删除
DimcnADO,rsADOAsObjectDimstrPath,strTable,strWhere,strSQL,strMsgAsStringSetcnADO=CreateObject("ADODB.Connection")SetrsADO=CreateObject("ADODB.Recordset")strPath=ThisWorkbook.Path"\mydata2.accdb"strTable="员工信息"
cnADO.Open"Provider=Microsoft.Ace.OLEDB.12.0;DataSource="strPathstrSQL="SELECT*FROM"strTablersADO.OpenstrSQL,cnADO,1,3'汇报给用户记录数
MsgBox"删除前记录数为:"rsADO.RecordCount
rsADO.ClosestrWhere="WHERENOTEXISTS(SELECT*FROM[Excel12.0;Database="ThisWorkbook.FullName"].["ActiveSheet.Name"$"_Range("a1").CurrentRegion.Address(0,0)"]WHERE员工编号="strTable".员工编号)"
strSQL="SELECT员工编号FROM"strTablestrWhere
rsADO.OpenstrSQL,cnADO,1,3IfrsADO.RecordCount>0ThenstrSQL="DELETEFROM"strTablestrWherecnADO.ExecutestrSQLMsgBoxrsADO.RecordCount"条记录被删除。",vbInformation,"提示"
ElseMsgBox"没有发现需要删除的记录。",vbInformation,"提示"
EndIfrsADO.ClosestrSQL="SELECT*FROM"strTablersADO.OpenstrSQL,cnADO,1,3'汇报给用户记录数
MsgBox"删除后记录数为:"rsADO.RecordCount
'释放内存
rsADO.ClosecnADO.CloseSetrsADO=NothingSetcnADO=NothingEndSub代码截图:
代码讲解:
1):strWhere="WHERENOTEXISTS(SELECT*FROM[Excel12.0;Database="ThisWorkbook.FullName"].["ActiveSheet.Name"$"_Range("a1").CurrentRegion.Address(0,0)"]WHERE员工编号="strTable".员工编号)"
strSQL="SELECT员工编号FROM"strTablestrWhere
rsADO.OpenstrSQL,cnADO,1,3IfrsADO.RecordCount>0ThenstrSQL="DELETEFROM"strTablestrWherecnADO.ExecutestrSQLMsgBoxrsADO.RecordCount"条记录被删除。",vbInformation,"提示"
ElseMsgBox"没有发现需要删除的记录。",vbInformation,"提示"
EndIfrsADO.Close上述代码描述了不在工作表中但存在数据表中的记录逻辑:表示为:"WHERENOTEXISTS(SELECT*FROM[Excel12.0;Database="ThisWorkbook.FullName"].["ActiveSheet.Name"$"_
Range("a1").CurrentRegion.Address(0,0)"]WHERE员工编号="strTable".员工编号)"
打开记录后然后删除。对于这种连接方式,我在后续的讲解中会的讲到,
下面我们看运行的效果,首先提示删除前的的记录数:
然后提示删除的记录数:
最后提示删除后的的记录数:
我们再次显示数据库中记录:
今日内容回向:
1如何做到工作表和数据表数据的统一?
2上述数据的处理是否还有其他的方案?
电话+V:192606-48052
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。