vb6.0操作access选择性复制数据库中数据
小弟菜鸟,望各路高手不吝赐教。1.一张表,列名分别为a1,a3,a4,b1,b2,b3,b4,c1……2.a1为年度,例如2013;a3为年度+编号,例如20130002...
小弟菜鸟,望各路高手不吝赐教。
1.一张表,列名分别为a1,a3,a4,b1,b2,b3,b4,c1……
2.a1为年度,例如2013;a3为年度+编号,例如20130002,a4为唯一识别标志,例如20130002第一家企业,其余同为记录该企业的信息,分为固定信息(比如企业基本资料)和动态信息(比如历年的纳税记录)。
3.我的目的,是在本表中新增记录,新增的记录实际上时修改后的已有记录。就是在一张表中复制该企业的固定信息,但是其中一部分要有所变化。
比如我要把2013年所有企业的基本信息复制到2014年,
原纪录是:
a1=2013,a3=20130002,a4=20130002第一家企业,b1=三产,b2=N,b3=省……(后面的列不复制)
我复制后需要达到的效果是:
a1=2014,a3=20140002,a4=20140002第一家企业,b1=三产,b2=N,b3=省……(后面的列不复制)
暂时没啥思路,请大家点拨点拨。最好给出代码,我可以好好学习下。非常感谢大家伙。
语言表达能力欠佳,附图说明。
复制前的样子:
复制后的样子:
又想起一点,通过我的这个简单说明大家应该已经知道我想干啥了。那么我这种把不同企业不同年度的信息放在一个表里的做法是不是很低级呢?
我自己的理解,表格是二维平面的,只能存放不同企业的不同信息(横坐标是一家企业的各个类别信息,纵坐标是不同的企业)。我还想加进去一条时间轴,就是要记录不同企业在不同年度的不同信息,感觉就是三维的了,是不是有更好的记录办法呢?
当然可以通过新建表,比如我这张表叫guocheng,我再弄个表叫guocheng2,但实际上仍然还是需要解决复制的问题。大家有啥好办法呢? 展开
1.一张表,列名分别为a1,a3,a4,b1,b2,b3,b4,c1……
2.a1为年度,例如2013;a3为年度+编号,例如20130002,a4为唯一识别标志,例如20130002第一家企业,其余同为记录该企业的信息,分为固定信息(比如企业基本资料)和动态信息(比如历年的纳税记录)。
3.我的目的,是在本表中新增记录,新增的记录实际上时修改后的已有记录。就是在一张表中复制该企业的固定信息,但是其中一部分要有所变化。
比如我要把2013年所有企业的基本信息复制到2014年,
原纪录是:
a1=2013,a3=20130002,a4=20130002第一家企业,b1=三产,b2=N,b3=省……(后面的列不复制)
我复制后需要达到的效果是:
a1=2014,a3=20140002,a4=20140002第一家企业,b1=三产,b2=N,b3=省……(后面的列不复制)
暂时没啥思路,请大家点拨点拨。最好给出代码,我可以好好学习下。非常感谢大家伙。
语言表达能力欠佳,附图说明。
复制前的样子:
复制后的样子:
又想起一点,通过我的这个简单说明大家应该已经知道我想干啥了。那么我这种把不同企业不同年度的信息放在一个表里的做法是不是很低级呢?
我自己的理解,表格是二维平面的,只能存放不同企业的不同信息(横坐标是一家企业的各个类别信息,纵坐标是不同的企业)。我还想加进去一条时间轴,就是要记录不同企业在不同年度的不同信息,感觉就是三维的了,是不是有更好的记录办法呢?
当然可以通过新建表,比如我这张表叫guocheng,我再弄个表叫guocheng2,但实际上仍然还是需要解决复制的问题。大家有啥好办法呢? 展开
2个回答
展开全部
感觉你的表设计上还是有些问题的。。
1、首先,a1、a3、a4列中的数据明显重复。这对于几行、几百行数据来说也许不算什么,但是随着数据量的增大,会使得文件过于臃肿。
2、如果b1、b2、b3……等列的数据不变的话,每年增加一次,也会使得文件过于臃肿。
因此,建议你把表设计为两张表。。
1、企业基本信息表,框架为:
企业ID 此列是企业的唯一标识(主键),以数字为宜(可以按行业进行分类等);
企业名称 不应该用“20130002第一家企业”,而应该用“第一家企业”、“第二家企业”……
后面的基本信息列延续使用你原来的b1、b2、b3……等。
这样,这张表对于每家企业来说只需录入一次信息即可。。
2、企业动态信息表,框架为:
企业ID 此列和上表中的企业ID相同,录入时可以用组合框,数据来源是上表中的企业ID和企业名称
年度 2012,2013,2014等
纳税 这里可以把每年有变化的内容分类放入不同的列,比如“纳税”为一列
3、至此,两个表就算建立完成了!这样,会节省很大的空间,速度就会得到提升。。。
4、表数据的录入和查询:
1)企业基本信息表数据的录入和查询很好做,没啥好说的;
2)在做企业动态信息表的数据录入和查询时,通过结合企业基本信息表,就会做到一目了然了。
比如数据录入时,当你在窗体中选择了企业ID,可以通过代码来得到对应此企业ID的企业名称和其他基本信息。
5、再回到你开始提出的问题。
1)建立一个名称为“企业年度批量升级”的窗体,窗体包含:
文本框控件1个,分别为“开始年度”、“升级年度”;按钮控件1个,名称为“批量升级”。
批注:窗体及控件名称可以自定,关键是让用户容易识别。。
2)按钮控件的单击事件中代码大致如下:
' 检查窗体中“开始年度”、“升级年度”是否输入了数据,没有则给出提示
If 开始年度 = "" Or 升级年度 = "" Then
MsgBox "【开始年度】和【升级年度】不能为空!请输入......", 16 + 0 + 4096, "停止"
Exit Sub
End If
' 建立企业动态信息表中年度(字段)值为窗体中开始年度的查询记录集
' 查询的前提是你已经与数据库建立了名称为cnn的连接
Dim rst As New ADODB.Recordset
rst.Open "SELECT * FROM 企业动态信息表 WHERE 年度='" & 开始年度 & "'", cnn, 3, 3
' 遍历rst记录集,增加年度升级记录
If rst.RecordCount > 0 Then
rst.MoveFirst
Do Until rst.EOF
cnn.Execute "INSERT INTO 企业动态信息表 (企业ID, 年度) VALUES ('" & rst(0) & "', '" & Me.升级年度 & "')"
rst.MoveNext
Loop
MsgBox "企业年度批量升级完毕。", 64 + 0 + 4096, "提示"
Else
MsgBox "数据表中未找到关于开始年度的任何信息!请核对开始年度是否正确?", 16 + 0 + 4096, "错误"
End If
批注:上面的代码可以实现全部符合条件的记录进行年度升级。但是,有时我们只需要部分符合条件的记录进行年度升级(比如某个单位因破产不需要升级),这时候我们该怎么办?
此时,你可以在窗体中加入查询记录集rst的数据表,并在每条记录前面添加一个复选框,通过全选按钮选中全部记录,然后再去掉不需要升级的记录。。
当然,这样做就需要把上面的“批量升级”按钮事件更改为:每读取一条选定的记录,然后进行一次年度升级。
由于这样做代码太复杂,而且我也没时间去做相应的代码,故此,只能在这里给你一个思路了。
写在最后的话,学习的过程也许枯燥,但成功的心情却充满了喜悦!努力吧。。。
1、首先,a1、a3、a4列中的数据明显重复。这对于几行、几百行数据来说也许不算什么,但是随着数据量的增大,会使得文件过于臃肿。
2、如果b1、b2、b3……等列的数据不变的话,每年增加一次,也会使得文件过于臃肿。
因此,建议你把表设计为两张表。。
1、企业基本信息表,框架为:
企业ID 此列是企业的唯一标识(主键),以数字为宜(可以按行业进行分类等);
企业名称 不应该用“20130002第一家企业”,而应该用“第一家企业”、“第二家企业”……
后面的基本信息列延续使用你原来的b1、b2、b3……等。
这样,这张表对于每家企业来说只需录入一次信息即可。。
2、企业动态信息表,框架为:
企业ID 此列和上表中的企业ID相同,录入时可以用组合框,数据来源是上表中的企业ID和企业名称
年度 2012,2013,2014等
纳税 这里可以把每年有变化的内容分类放入不同的列,比如“纳税”为一列
3、至此,两个表就算建立完成了!这样,会节省很大的空间,速度就会得到提升。。。
4、表数据的录入和查询:
1)企业基本信息表数据的录入和查询很好做,没啥好说的;
2)在做企业动态信息表的数据录入和查询时,通过结合企业基本信息表,就会做到一目了然了。
比如数据录入时,当你在窗体中选择了企业ID,可以通过代码来得到对应此企业ID的企业名称和其他基本信息。
5、再回到你开始提出的问题。
1)建立一个名称为“企业年度批量升级”的窗体,窗体包含:
文本框控件1个,分别为“开始年度”、“升级年度”;按钮控件1个,名称为“批量升级”。
批注:窗体及控件名称可以自定,关键是让用户容易识别。。
2)按钮控件的单击事件中代码大致如下:
' 检查窗体中“开始年度”、“升级年度”是否输入了数据,没有则给出提示
If 开始年度 = "" Or 升级年度 = "" Then
MsgBox "【开始年度】和【升级年度】不能为空!请输入......", 16 + 0 + 4096, "停止"
Exit Sub
End If
' 建立企业动态信息表中年度(字段)值为窗体中开始年度的查询记录集
' 查询的前提是你已经与数据库建立了名称为cnn的连接
Dim rst As New ADODB.Recordset
rst.Open "SELECT * FROM 企业动态信息表 WHERE 年度='" & 开始年度 & "'", cnn, 3, 3
' 遍历rst记录集,增加年度升级记录
If rst.RecordCount > 0 Then
rst.MoveFirst
Do Until rst.EOF
cnn.Execute "INSERT INTO 企业动态信息表 (企业ID, 年度) VALUES ('" & rst(0) & "', '" & Me.升级年度 & "')"
rst.MoveNext
Loop
MsgBox "企业年度批量升级完毕。", 64 + 0 + 4096, "提示"
Else
MsgBox "数据表中未找到关于开始年度的任何信息!请核对开始年度是否正确?", 16 + 0 + 4096, "错误"
End If
批注:上面的代码可以实现全部符合条件的记录进行年度升级。但是,有时我们只需要部分符合条件的记录进行年度升级(比如某个单位因破产不需要升级),这时候我们该怎么办?
此时,你可以在窗体中加入查询记录集rst的数据表,并在每条记录前面添加一个复选框,通过全选按钮选中全部记录,然后再去掉不需要升级的记录。。
当然,这样做就需要把上面的“批量升级”按钮事件更改为:每读取一条选定的记录,然后进行一次年度升级。
由于这样做代码太复杂,而且我也没时间去做相应的代码,故此,只能在这里给你一个思路了。
写在最后的话,学习的过程也许枯燥,但成功的心情却充满了喜悦!努力吧。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询