代码如下:Function Change(ByVal material As String)
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=Mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon
Dim MySqlStr As String
MySqlStr = "select mat from matdz where material='" + material + "'"
MyRs.Open MySqlStr
' MyRs.MoveFirst '保证只有一条记录
Change = Trim(MyRs("mat").Value) --获取对照表中的Mat字段值
Exit Function
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Function
Sub MatTotal()
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon MyRs.LockType = adLockBatchOptimistic
MyRs.CursorType = adOpenDynamic Dim MySqlStr As String
MySqlStr = "select * from mat"
MyRs.Open MySqlStr
MyRs.MoveFirst
Do While Not MyRs.EOF
MyRs("Material") = Change(trim(MyRs("Material").Value)) ----这个地方报的错误
'错误:多步操作产生错误,请检查每步的状态值!但是如果mat字段为<10位就正确。
'这个字段是 varchar(50)啊
MyRs.MoveNext
Loop请问各位,谁遇到过这个问题,应该怎么解决?
Set DataGrid1.DataSource = MyRs
DataGrid1.Refresh
DataGrid1.Columns(2).Width = 700
Exit Sub
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Sub
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=Mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon
Dim MySqlStr As String
MySqlStr = "select mat from matdz where material='" + material + "'"
MyRs.Open MySqlStr
' MyRs.MoveFirst '保证只有一条记录
Change = Trim(MyRs("mat").Value) --获取对照表中的Mat字段值
Exit Function
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Function
Sub MatTotal()
Dim MyCon As New ADODB.Connection
Dim MyRs As New ADODB.Recordset
Dim ConStr As String
ConStr = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa;PassWord=zhangzs;DataBase=mytest"
On Error GoTo Error:
MyCon.ConnectionString = ConStr
MyCon.CommandTimeout = 0
MyCon.Open
MyRs.CursorLocation = adUseClient
MyRs.ActiveConnection = MyCon MyRs.LockType = adLockBatchOptimistic
MyRs.CursorType = adOpenDynamic Dim MySqlStr As String
MySqlStr = "select * from mat"
MyRs.Open MySqlStr
MyRs.MoveFirst
Do While Not MyRs.EOF
MyRs("Material") = Change(trim(MyRs("Material").Value)) ----这个地方报的错误
'错误:多步操作产生错误,请检查每步的状态值!但是如果mat字段为<10位就正确。
'这个字段是 varchar(50)啊
MyRs.MoveNext
Loop请问各位,谁遇到过这个问题,应该怎么解决?
Set DataGrid1.DataSource = MyRs
DataGrid1.Refresh
DataGrid1.Columns(2).Width = 700
Exit Sub
Error:
MsgBox Err.Description, vbOKOnly, "error"
End Sub
MyCon.Close
我关闭也是如此,因为是,只要我的mat字段的值小于等于10位,就不会有错误,而只要大于10位就报上面的错误。这是怎么回事啊。我这个字段的值,应该是6--18位的都有。
你那报错的地方,程序进入CHANG子程序了么?是在进入前就报错了?
请楼上大侠帮忙看看哪的事,该怎么写?
MyRs("material").DefinedSize = 20 ?好象不行
因为我最长的也过不了20的,真是奇怪了。
lxjlz(事在人為) 所说,是不是MyRs中的各字段都有一个默认的长度呢?
那么这个长度应该怎么去更改呢?
use Mytest
go
alter table mat alter column material varchar(200)
go
Public Function Change(ByVal material As String) as string
試試