关于循环写入数据库的问题

shortppsy 2005-10-27 04:25:46

麻烦大家看看错在哪里
程序提示 多步操作产生错误,请检查每一步的状态值。

Dim str As String
Dim j As Integer
Dim i As Integer
Dim ret As Long
Dim buff As String
Dim a(60)
Dim b(60)
Dim c(60)
Dim d(60)
Dim e(60)

For i = 1 To list.Text
'读取考勤时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "考勤时间", a(i), buff, 256, App.Path & "\temp\temp.ini")
a(i) = buff
'读取员工编号
buff = String(255, 0)
ret = GetPrivateProfileString(i, "员工编号", b(i), buff, 256, App.Path & "\temp\temp.ini")
b(i) = buff
'读取状态
buff = String(255, 0)
ret = GetPrivateProfileString(i, "状态", c(i), buff, 256, App.Path & "\temp\temp.ini")
c(i) = buff
'读取上班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "上班时间(早)", d(i), buff, 256, App.Path & "\temp\temp.ini")
d(i) = buff
'读取下班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "下班时间(晚)", e(i), buff, 256, App.Path & "\temp\temp.ini")
e(i) = buff
Next i



Dim rs1 As ADODB.Recordset
SqlTxt = "select*from 考勤状态"
Set rs1 = ExecuteSQL(SqlTxt)

rs1.MoveLast
rs1.AddNew

For j = 1 To list.Text
rs1.Fields("考勤时间") = Trim("" & a(j))
rs1.Fields("员工编号") = Trim("" & b(j))
rs1.Fields("状态") = Trim("" & c(j))
rs1.Fields("上班时间(早)") = Trim("" & d(j))
rs1.Fields("下班时间(晚)") = Trim("" & e(j))
rs1.Fields("备注") = "无"
Next j

End Sub
...全文
156 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cool_man 2005-10-27
  • 打赏
  • 举报
回复
错误在 rs1("考勤时间") = Trim("" & a(j))

a(j)看一下这个A(J)的值,是不是日期类型的,如果你数据库字段的类型是日期,而a(j)不是日期格式的话会报错!
faysky2 2005-10-27
  • 打赏
  • 举报
回复
估计错误与ExecuteSQL过程有关,把你的ExecuteSQL过程代码贴出来看看
shortppsy 2005-10-27
  • 打赏
  • 举报
回复
赫赫
是 数组中产生很多后缀空格的问题

多谢mndsoft

'
Public Function LPSTRToVBString$(ByVal s$)
Dim nullpos&
nullpos& = InStr(s$, Chr$(0))
If nullpos > 0 Then
LPSTRToVBString = Left$(s$, nullpos - 1)
Else
LPSTRToVBString = ""
End If
End Function
shortppsy 2005-10-27
  • 打赏
  • 举报
回复
错误在 rs1("考勤时间") = Trim("" & a(j))
程序提示 多步操作产生错误,请检查每一步的状态值。
上官云峰 2005-10-27
  • 打赏
  • 举报
回复
你的错误出现在那里,指出来,而且你不要用adodc控件,只要引用一个ado就可以了,要控件干什么
cool_man 2005-10-27
  • 打赏
  • 举报
回复
Dim rs1 As ADODB.Recordset '定义ADO记录集rs


Dim StrConnect As String '定义
StrConnect = App.Path
If Right(StrConnect, 1) <> "\" Then StrConnect = StrConnect + "\"
StrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & StrConnect & "\data\kq.mdb"


DIM Conn AS new Connection
conn.open strConnect
set rs1=new recordset
rs1.open "SELECT * FROM [考勤状态]",1,3


For j = 1 To list.Text
rs1.AddNew
rs1("考勤时间") = Trim("" & a(j))
rs1("员工编号") = Trim("" & B(j))
rs1("状态") = Trim("" & c(j))
rs1("上班时间(早)") = Trim("" & d(j))
rs1("下班时间(晚)") = Trim("" & e(j))
rs1("备注") = "无"
rs1.Update
Next j
end sub
shortppsy 2005-10-27
  • 打赏
  • 举报
回复
现在用adodc来写数据,还上不行
Sub data_save()

Dim str As String
Dim j As Integer
Dim i As Integer
Dim ret As Long
Dim buff As String
Dim a(60)
Dim B(60)
Dim c(60)
Dim d(60)
Dim e(60)

For i = 1 To list.Text
'读取考勤时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "考勤时间", a(i), buff, 256, App.Path & "\temp\temp.ini")
a(i) = buff
'读取员工编号
buff = String(255, 0)
ret = GetPrivateProfileString(i, "员工编号", B(i), buff, 256, App.Path & "\temp\temp.ini")
B(i) = buff
'读取状态
buff = String(255, 0)
ret = GetPrivateProfileString(i, "状态", c(i), buff, 256, App.Path & "\temp\temp.ini")
c(i) = buff
'读取上班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "上班时间(早)", d(i), buff, 256, App.Path & "\temp\temp.ini")
d(i) = buff
'读取下班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "下班时间(晚)", e(i), buff, 256, App.Path & "\temp\temp.ini")
e(i) = buff
Next i

Dim conn As ADODB.Connection '定义ADO链接conn
Dim rs1 As ADODB.Recordset '定义ADO记录集rs


Dim StrConnect As String '定义
StrConnect = App.Path
If Right(StrConnect, 1) <> "\" Then StrConnect = StrConnect + "\"
StrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & StrConnect & "\data\kq.mdb"
Adodc1.ConnectionString = StrConnect
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "SELECT * FROM [考勤状态]"
Adodc1.Refresh


For j = 1 To list.Text
Adodc1.Recordset.MoveLast
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("考勤时间") = Trim("" & a(j))
Adodc1.Recordset.Fields("员工编号") = Trim("" & B(j))
Adodc1.Recordset.Fields("状态") = Trim("" & c(j))
Adodc1.Recordset.Fields("上班时间(早)") = Trim("" & d(j))
Adodc1.Recordset.Fields("下班时间(晚)") = Trim("" & e(j))
Adodc1.Recordset.Fields("备注") = "无"
Adodc1.Recordset.Update
Next j
end sub
wjhtz 2005-10-27
  • 打赏
  • 举报
回复
Dim rs1 As new ADODB.Recordset
cool_man 2005-10-27
  • 打赏
  • 举报
回复
ExecuteSQL(SqlTxt) 函数是什么样的?贴出来看一下.估计问题出在这里
bbhere 2005-10-27
  • 打赏
  • 举报
回复
关注
shortppsy 2005-10-27
  • 打赏
  • 举报
回复
回楼上的,还是出错
再贴全一点

Sub data_save()

Dim str As String
Dim j As Integer
Dim i As Integer
Dim ret As Long
Dim buff As String
Dim a(60)
Dim B(60)
Dim c(60)
Dim d(60)
Dim e(60)

For i = 1 To list.Text
'读取考勤时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "考勤时间", a(i), buff, 256, App.Path & "\temp\temp.ini")
a(i) = buff
'读取员工编号
buff = String(255, 0)
ret = GetPrivateProfileString(i, "员工编号", B(i), buff, 256, App.Path & "\temp\temp.ini")
B(i) = buff
'读取状态
buff = String(255, 0)
ret = GetPrivateProfileString(i, "状态", c(i), buff, 256, App.Path & "\temp\temp.ini")
c(i) = buff
'读取上班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "上班时间(早)", d(i), buff, 256, App.Path & "\temp\temp.ini")
d(i) = buff
'读取下班时间
buff = String(255, 0)
ret = GetPrivateProfileString(i, "下班时间(晚)", e(i), buff, 256, App.Path & "\temp\temp.ini")
e(i) = buff
Next i



Dim rs1 As ADODB.Recordset
SqlTxt = "select*from 考勤状态"
Set rs1 = ExecuteSQL(SqlTxt)



For j = 1 To list.Text
rs1.AddNew
rs1.Fields("考勤时间") = Trim("" & a(j))
rs1.Fields("员工编号") = Trim("" & B(j))
rs1.Fields("状态") = Trim("" & c(j))
rs1.Fields("上班时间(早)") = Trim("" & d(j))
rs1.Fields("下班时间(晚)") = Trim("" & e(j))
rs1.Fields("备注") = "无"
rs1.Update
Next j
End Sub
上官云峰 2005-10-27
  • 打赏
  • 举报
回复
Dim rs1 As ADODB.Recordset
SqlTxt = "select*from 考勤状态"
Set rs1 = ExecuteSQL(SqlTxt)


For j = 1 To list.Text

rs1.AddNew
rs1.Fields("考勤时间") = Trim("" & a(j))
rs1.Fields("员工编号") = Trim("" & b(j))
rs1.Fields("状态") = Trim("" & c(j))
rs1.Fields("上班时间(早)") = Trim("" & d(j))
rs1.Fields("下班时间(晚)") = Trim("" & e(j))
rs1.Fields("备注") = "无"
rs1.update
Next j

End Sub
上官云峰 2005-10-27
  • 打赏
  • 举报
回复
首先你要看看j等于几
如果是j=1那么就是你的程序这样写法不对
如果j<>1那么就是对字段赋值有问题
你先要搞懂到底是那里错了
shortppsy 2005-10-27
  • 打赏
  • 举报
回复
现在再修改了一下,还是不行
For j = 1 To list.Text
Adodc1.Recordset.MoveLast
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("考勤时间") = Trim("" & Format(a(j), "yyyy-mm-dd"))
Adodc1.Recordset.Fields("员工编号") = Trim("" & Val(b(j)))
Adodc1.Recordset.Fields("状态") = Trim("" & "1")
Adodc1.Recordset.Fields("上班时间") = Trim("" & Format(d(j), "hh:mm:ss"))
Adodc1.Recordset.Fields("下班时间") = Trim("" & Format(e(j), "hh:mm:ss"))
Adodc1.Recordset.Fields("备注") = "无"
Adodc1.Recordset.Update
Next j

1,216

社区成员

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

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