Public Sub textcg(tx As TextBox, mshgd As MSHFlexGrid, adoc As Adodc, tx2 As TextBox)On Error Resume Next
For i = 1 To mshgd.Cols - 1
slfied = slfied & mshgd.TextMatrix(0, i) & ","
Next i
slfied = Mid(slfied, 1, Len(slfied) - 2)
lent = Len(tx.Text)
If lent >= 2 Then '设置数据输入个数。。 'cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & mdbpath & ";Jet.OLEDB:"
If Asc(Mid$(tx.Text, 1, 1)) < 0 Or Asc(Mid$(tx, 1, 1)) > 255 Then
sqlfd = "select " & slfied & " from 基础信息 WHERE 物料名称 like '%" & tx.Text & "%'"
Else
sqlfd = "select " & slfied & " from 基础信息 where 物料名称拼音 like '%" & UCase(tx.Text) & "%' "
End If
'************************************
adoc.RecordSource = sqlfd
Set mshgd.DataSource = adoc
End If
adoc.Refresh
Call mshgalig(mshgd)
End Sub意思是录入文本框的数字,如果大于2,就提取数据库中数据,但是当提取到第三次的时候,就出现错误。
至少有一个参数没有被指定,奇怪了,咋的呢?
For i = 1 To mshgd.Cols - 1
slfied = slfied & mshgd.TextMatrix(0, i) & ","
Next i
slfied = Mid(slfied, 1, Len(slfied) - 2)
lent = Len(tx.Text)
If lent >= 2 Then '设置数据输入个数。。 'cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & mdbpath & ";Jet.OLEDB:"
If Asc(Mid$(tx.Text, 1, 1)) < 0 Or Asc(Mid$(tx, 1, 1)) > 255 Then
sqlfd = "select " & slfied & " from 基础信息 WHERE 物料名称 like '%" & tx.Text & "%'"
Else
sqlfd = "select " & slfied & " from 基础信息 where 物料名称拼音 like '%" & UCase(tx.Text) & "%' "
End If
'************************************
adoc.RecordSource = sqlfd
Set mshgd.DataSource = adoc
End If
adoc.Refresh
Call mshgalig(mshgd)
End Sub意思是录入文本框的数字,如果大于2,就提取数据库中数据,但是当提取到第三次的时候,就出现错误。
至少有一个参数没有被指定,奇怪了,咋的呢?
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\cdtest.mdb;Persist Security Info=False"
.CommandType = adCmdText
.RecordSource = "select * from 材料信息"
.Refresh
End With办法倒是有,重新绑定一次。但是这样视乎效率很低,速度大大降低了
slfied=""
On Error Resume Next
For i = 1 To mshgd.Cols - 1
slfied = slfied & mshgd.TextMatrix(0, i) & ","
,确实要改,但是不是这里。
For i = 1 To mshgd.Cols - 1
slfied = slfied & mshgd.TextMatrix(0, i) & ","
Next i
slfied = Mid(slfied, 1, Len(slfied) - 2) '@@@@@ 这里应该减 1 吧?slfied = Mid(slfied, 1, Len(slfied) - 1) @@@@
lent = Len(tx.Text)
If lent >= 2 Then '设置数据输入个数。。
'cnn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & mdbpath & ";Jet.OLEDB:"
If Asc(Mid$(tx.Text, 1, 1)) < 0 Or Asc(Mid$(tx, 1, 1)) > 255 Then
sqlfd = "select " & slfied & " from 基础信息 WHERE 物料名称 like '%" & tx.Text & "%'"
Else
sqlfd = "select " & slfied & " from 基础信息 where 物料名称拼音 like '%" & UCase(tx.Text) & "%' "
End If
'************************************
Debug.Print sqlfd '@@@@@@ 看一下你的sql @@@@@@@
adoc.RecordSource = sqlfd
Set mshgd.DataSource = adoc
End If
adoc.Refresh
Call mshgalig(mshgd)
End Sub
这个是slfied 的原代码,slfied = Mid(slfied, 1, Len(slfied) - 2)后是:
select 物料编码,规格型号,物料名 from 基础信息 where 物料名称拼音 like '%NJ%'
咋个去除了三个呢。
这三个都用在mid之外
改了,还是报错。select 物料编码,规格型号,物料名 from 基础信息 where 物料名称拼音 like '%NJB%'
方便嘛,不是adodc引起的,就是那个SQL语言,搞不懂了。
where后面有的字段名称前面必须有
Case 2
slfied = Mid(slfied, 1, Len(slfied) - 2)
Case Else
slfied = Mid(slfied, 1, Len(slfied) - 1)
End Select
这么约束下就OK了,嘿嘿,大清早的,麻烦了。。