Kerry 发表于 2005-9-7 21:43:38

ADO问题

我已经考虑这个问题好几天了。有人能帮我解决这个问题吗?
我一直收到3265错误,但数据仍然存在。我可以删除ITM#或DESC(以及相关的SQL构建语法),并提取一个字段的数据,而不是两个字段的数据。过去,它是我的SQL。不过我已经在MDB中测试过了,所以我相当肯定不是这样。
下面是代码-
Private Sub UserForm_Initialize()
    Call Populate2ComboWhere(cmbValueLisT, "c:\edbs\edbs.mdb", "ITM#", "DESC", "JOB DETAIL LIST", "JOB", "00-0000")
End Sub
Public Sub Populate2ComboWhere(objCombo As ComboBox, strDBase As String, strField1 As String, strField2 As String, strTable As String, strControlField As String, strControlData As String)
Dim strSQL As String
Dim objConn As ADODB.Connection
Dim objRSet As ADODB.Recordset
Set objConn = New ADODB.Connection
objConn.ConnectionString = _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & strDBase & ";" & _
      "Persist Security Info=False"
With objConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.mode = adModeReadWrite
End With
objConn.Open
strSQL = "SELECT [" & strTable & "].[" & strField1 & _
                "],[" & strTable & "].[" & strField2 & _
                "] FROM [" & strTable & _
                "] WHERE [" & strTable & "].[" & strControlField & "]=""" & strControlData & _
                """ ORDER BY [" & strTable & "].[" & strField1 & "]"
Set objRSet = objConn.Execute(strSQL, , adCmdText)
Debug.Print strSQL
Do Until objRSet.EOF
    objCombo.AddItem objRSet.Fields(CStr(strField1) & "~" & strField2)
    objRSet.MoveNext
Loop
objRSet.Close
objConn.Close
End Sub

**** Hidden Message *****

kone 发表于 2005-9-7 21:47:29

字符串测试使用单引号而不是双引号,并以分号结束。
即Select * from tablename,其中fieldname = ' some value
/猜

豆花 发表于 2005-9-7 22:02:45

同样的结果。嗯...
这是我正在使用的修订版。基本接入2000 db BTW。
Private Sub UserForm_Initialize()
'    Call PopulateComboWhere(cmbValueLisT, "c:\edbs\edbs.mdb", "ITM#", "JOB DETAIL LIST", "JOB", "00-0000")
'    Call PopulateComboWhere(cmbValueLisT, "c:\edbs\edbs.mdb", "DESC", "JOB DETAIL LIST", "JOB", "00-0000")
    Call Populate2ComboWhere(cmbValueLisT, "c:\edbs\edbs.mdb", "ITM#", "DESC", "JOB DETAIL LIST", "JOB", "00-0000")
End Sub
Public Sub Populate2ComboWhere(objCombo As ComboBox, strDBase As String, strField1 As String, strField2 As String, strTable As String, strControlField As String, strControlData As String)
Dim strSQL As String
Dim objConn As ADODB.Connection
Dim objRSet As ADODB.Recordset
Set objConn = New ADODB.Connection
objConn.ConnectionString = _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & strDBase & ";" & _
      "Persist Security Info=False"
With objConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.mode = adModeReadWrite
End With
objConn.Open
strSQL = "SELECT [" & strTable & "].[" & strField1 & _
                "],[" & strTable & "].[" & strField2 & _
                "] FROM [" & strTable & _
                "] WHERE [" & strTable & "].[" & strControlField & "]='" & strControlData & _
                "' ORDER BY [" & strTable & "].[" & strField1 & "]"
Set objRSet = objConn.Execute(strSQL, , adCmdText)
Debug.Print strSQL
Do Until objRSet.EOF
    objCombo.AddItem objRSet.Fields(CStr(strField1) & "~" & strField2)
    objRSet.MoveNext
Loop
objRSet.Close
objConn.Close
End Sub
Public Sub PopulateComboWhere(objCombo As ComboBox, strDBase As String, strField1 As String, strTable As String, strControlField As String, strControlData As String)
Dim strSQL As String
Dim objConn As ADODB.Connection
Dim objRSet As ADODB.Recordset
Set objConn = New ADODB.Connection
objConn.ConnectionString = _
      "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & strDBase & ";" & _
      "Persist Security Info=False"
With objConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.mode = adModeReadWrite
End With
objConn.Open
strSQL = "SELECT [" & strTable & "].[" & strField1 & "] FROM [" & _
            strTable & "] WHERE [" & strTable & "].[" & strControlField & "]='" & _
            strControlData & "' ORDER BY [" & strTable & "].[" & strField1 & "]"
Set objRSet = objConn.Execute(strSQL, , adCmdText)
Debug.Print strSQL
Do Until objRSet.EOF
    objCombo.AddItem objRSet.Fields(strField1)
    objRSet.MoveNext
Loop
objRSet.Close
objConn.Close
End Sub

新歌 发表于 2005-9-8 02:40:22

怎么样:<pre>objCombo.AddItem CStr(objRSet.Fields(strField1)) & "~" & CStr(objRSet.Fields(strField2))

竞速随机 发表于 2005-9-20 12:51:17

简单回答我自己的问题。确保引用对于您正在工作的项目是正确的。:doh::丑:

story100 发表于 2005-9-21 06:29:07

嗨吉姆
只是想看看未来会怎样...
http://msdn.microsoft.com/netframework/future/linq/
C# 3.0 LINQ 在行动
C# 3.0 XLinq 在行动中
C# 3.0 DLinq 在行动中
,可能性的想法让我大吃一惊..
VB版本也可用,

唐家三少 发表于 2005-9-21 07:42:48


非常有趣,哈哈:“…Anders Hejlsberg,C#开发团队的首席随机化者…”

牛东文-艾 发表于 2005-9-27 12:12:27

酷东西!!!谢谢凯瑞!
页: [1]
查看完整版本: ADO问题