数据添加错误求解!

xy2438709 2010-03-15 11:57:18
我的错误出现环境为:
有表 A B
1、我先要按条件把表A 的数据查找出来写进新建的临时表 B。代码如下:
Adodc7.RecordSource = "select * into tb_temp from tb_gz where 部门 = '" & DataCombo1.Text & "' and 工资月份 = '" & Month(DateAdd("m", -1, DTPicker1.Value)) & "'"
Adodc7.Refresh

代码意思是 把tb_gz 表里的 数据按部门名称 和 当前日期的月 - 1 提取出来写入 新建临时表 tb_temp
但是运行程序显示错误: 提示 “对象关闭时,不允许操作” 提示指示 Adodc7.Refresh (临时表里已经正确的输入了数据,但是提示错误后,下面的代码无法执行。)

2、数据写入了临时表后,我要修改临时表里的数据再写回源表。代码如下:
Adodc5.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\dbs\db1.mdb;Persist Security Info=False"
Adodc5.RecordSource = "select * from tb_temp"
Adodc5.Refresh
For i = 0 To Adodc5.Recordset.RecordCount
Adodc5.RecordSource = "insert into tb_gz (序号,部门,工资月份,姓名,基本工资,岗位津贴,应发工资,代扣养老
金,代扣医疗险,代扣失业金,代扣公积金,输入日期,其他,通讯费,高温费,实发工资,合计实发金额)" & _
"values (' + aid + 1 + ','" + Adodc5.Recordset!部门.Value + "',' + Month(DTPicker1.Value)
+ ','" + Adodc5.Recordset!姓名.Value + "','" + Adodc5.Recordset!基本工资.Value + "','" +
Adodc5.Recordset!岗位津贴.Value + "', '" + Adodc5.Recordset!应发工资.Value + "','" +
Adodc5.Recordset!代扣养老金.Value + "','" + Adodc5.Recordset!代扣医疗险.Value + "','" +
Adodc5.Recordset!代扣失业金.Value + "','" + Adodc5.Recordset!输入日期.Value + "', '" +
Adodc5.Recordset!其他.Value + "','" + Adodc5.Recordset!通讯费.Value + "','" +
Adodc5.Recordset!高温费.Value + "','" + Adodc5.Recordset!实发工资.Value + "','" +
Adodc5.Recordset!合计实发金额.Value + "')"
Adodc5.Recordset.MoveNext
Next i
MsgBox "添加成功!", 48, "信息提示"
修改添加数据回源表,可能还有些错误。希望高手给我指正一下。谢谢!
...全文
112 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
是的。已经连接好数据库的。
king06 2010-03-15
  • 打赏
  • 举报
回复
请问Adodc7.ConnectionString设置好的吗
饮水需思源 2010-03-15
  • 打赏
  • 举报
回复
如果仅仅是为了计算则无需要用到临时表
贝隆 2010-03-15
  • 打赏
  • 举报
回复
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
回复 8楼

AID 是最大序号的变量

我已经成功添加了1条了。比如我提取出来了4条数据 表里共有10条数据。
添加的1条数据是 第4条提取出来的数据,写回的数据序号为 11 其他都正确的,就是只写入了1条,还有3条没有写入。。。。。
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
顺便再问一下,我的dtpicker控件 在form_load()里写了如下代码:
dtpicker1.value = now
为什么运行的时候dtpicker1.value 值还是我原来的值,没有和时间同步呢?
饮水需思源 2010-03-15
  • 打赏
  • 举报
回复
For i = 0 To Adodc5.Recordset.RecordCount - 1
adodc1.recordset.addrow
Adodc1.Recordset!序号 = aid + 1
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
我 后来不建临时表,直接用2个ADO控件。 但是只写入查找出来的最后1条记录!!! 已经把查找出来的数据弄到第一条了,还是不行。不知道为什么循环写入,就是指写最后一条,而不是把我查找出来的n条数据全部写入,希望高手帮忙。
控件1 把符合条件的数据查找出来代码如下:
Adodc5.RecordSource = "select * from tb_gz where 部门 = '" & DataCombo1.Text & "' and
工资月份 = '" & Month(DateAdd("m", -1, DTPicker1.Value)) & "'"
Adodc5.Refresh
Adodc5.Recordset.MoveFirst

控件2 把数据修改后写回表,代码如下:
.AddNew
For i = 0 To Adodc5.Recordset.RecordCount - 1
Adodc1.Recordset!序号 = aid + 1
Adodc1.Recordset.Fields("部门") = Adodc5.Recordset.Fields("部门").Value
Adodc1.Recordset!工资月份 = Month(DTPicker1.Value)
Adodc1.Recordset.Fields("姓名") = Adodc5.Recordset.Fields("姓名").Value
Adodc1.Recordset.Fields("基本工资") = Adodc5.Recordset.Fields("基本工资").Value
Adodc1.Recordset.Fields("岗位津贴") = Adodc5.Recordset.Fields("岗位津贴").Value
Adodc1.Recordset.Fields("应发工资") = Adodc5.Recordset.Fields("应发工资").Value
Adodc1.Recordset.Fields("代扣养老金") = Adodc5.Recordset.Fields("代扣养老金").Value
Adodc1.Recordset.Fields("代扣医疗险") = Adodc5.Recordset.Fields("代扣医疗险").Value
Adodc1.Recordset.Fields("代扣失业金") = Adodc5.Recordset.Fields("代扣失业金").Value
Adodc1.Recordset.Fields("代扣公积金") = Adodc5.Recordset.Fields("代扣公积金").Value
Adodc1.Recordset.Fields("输入日期") = DTPicker1.Value
Adodc1.Recordset.Fields("其他") = Adodc5.Recordset.Fields("其他").Value
Adodc1.Recordset.Fields("通讯费") = Adodc5.Recordset.Fields("通讯费").Value
Adodc1.Recordset.Fields("高温费") = Adodc5.Recordset.Fields("高温费").Value
Adodc1.Recordset.Fields("实发工资") = Adodc5.Recordset.Fields("实发工资").Value
Adodc1.Recordset.Fields("合计实发金额") = Adodc5.Recordset.Fields("合计实发金额").Value
Adodc1.Recordset.Update
Adodc5.Recordset.MoveNext
Next i
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
部门的值没有null的,我加了判断的。
饮水需思源 2010-03-15
  • 打赏
  • 举报
回复
1,给你一个SQL语句的增行写法:
strsql=" insert into 表名(字符字段,数值字段) values('"& 字符变量 &"',"& 数值变量 &")"
2,在上述SQL语句中要注意变量值(Adodc5.Recordset!部门.Value)的内容是否有NULL
xy2438709 2010-03-15
  • 打赏
  • 举报
回复
回复 1楼

我也想不建临时表,开始我是这样想的。
1、在源表里把符合条件的数据提取出来。然后直接修改写入源表。代码如下:
For i = 0 To Adodc1.Recordset.RecordCount
Adodc1.RecordSource = "insert into tb_gz (序号,部门,工资月份,姓名,基本工资,岗位津贴,应发工资,代扣养老
金,代扣医疗险,代扣失业金,代扣公积金,输入日期,其他,通讯费,高温费,实发工资,合计实发金额)" & _
"values (' + aid + 1 + ','" + Adodc5.Recordset!部门.Value + "',' + Month(DTPicker1.Value)
+ ','" + Adodc5.Recordset!姓名.Value + "','" + Adodc5.Recordset!基本工资.Value + "','" +
Adodc5.Recordset!岗位津贴.Value + "', '" + Adodc5.Recordset!应发工资.Value + "','" +
Adodc5.Recordset!代扣养老金.Value + "','" + Adodc5.Recordset!代扣医疗险.Value + "','" +
Adodc5.Recordset!代扣失业金.Value + "','" + Adodc5.Recordset!输入日期.Value + "', '" +
Adodc5.Recordset!其他.Value + "','" + Adodc5.Recordset!通讯费.Value + "','" +
Adodc5.Recordset!高温费.Value + "','" + Adodc5.Recordset!实发工资.Value + "','" +
Adodc5.Recordset!合计实发金额.Value + "')"
Adodc5.Recordset.MoveNext
Next i

注:(ADOdc5 改为 adodc1)
不知道这样可以不? 好像我试了一下是不可以的。

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧