好的,我有这段代码
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Connection
Dim rs1, tempSQL1
Dim boxes
Connection = CreateObject("ADODB.Connection")
rs1 = CreateObject("ADODB.Recordset")
Connection.Open(CONNECTION STRING HERE)
tempSQL1 = "SELECT DISTINCT SOMETHING FROM SOMEWHERE"
rs1.Open(tempSQL1, Connection)
boxes = rs1.GetRows
rs1 = Nothing
Connection = Nothing
For Each box As String In boxes
With Me.CustomerSelect.Items
.Add(pmbformat(box))
End With
Next
End Sub
按预期工作,它向下拉框CustomerSelect添加3个项目,一个用于记录集中的每个不同条目。
但是,我想在项目中添加更多信息而不仅仅是盒子编号,所以我将每个循环更改为此
For Each box As String In boxes
With Me.CustomerSelect.Items
.Add(pmbformat(box) & " " & rsQuery("LASTNAME", box) & ", " & rsQuery("FIRSTNAME", box))
End With
Next
这是函数rsQuery
Function rsQuery(column As String, PMB As Integer)
Dim Connection2, rs2, tempSQL2
Dim myResult
Connection2 = CreateObject("ADODB.Connection")
rs2 = CreateObject("ADODB.Recordset")
Connection2.Open(CONNECTION STRING HERE)
tempSQL2 = "SELECT " & column & " FROM SOMEWHERE INNER JOIN SOMEWHERE-ELSE on SOMETHING=SOMETHING-ELSE WHERE SOMETHING-ELSE = " & PMB
MsgBox(tempSQL2)
rs2.Open(tempSQL2, Connection2)
myResult = rs2(column).Value
rs2 = Nothing
Connection2 = Nothing
Return myResult
End Function
这个工作一次。它会在选择框中添加一个项目(第一个项目),并包含所有请求的信息。
函数rsQuery中的消息框是一次调试尝试,它显示三次,一次显示第一条记录的姓氏,一次显示第一条记录的名字,一次显示第二条记录的姓氏。但它应该显示6次(第一次和最后一次为3条记录)。此外,由于msgbox确实显示第二条记录的姓氏,你会认为Sub会将该项添加到列表中,并省略名字,但它没有。该列表仅保留第一个选项。
我倾注了这个并且谷歌搜索到了无止境,无法找到解决办法。请帮忙!
感谢您查看此内容,并提前寻求帮助。
P.S。请原谅我掩盖我的sql语句和连接字符串,但我正在为第三方工作,他们不希望公开这些信息。根据我给出的信息,似乎连接字符串和sql语句是正确的。我也省略了函数pmbformat,因为这个函数正常工作。
答案 0 :(得分:0)
显然第二个PMB没有客户记录,因此导致某种异常停止了处理。添加
If not rstemp.EOF
前
myResult = rs2(column).Value
它会绕过导致异常的代码。
这总是让我感到很简单的事情。 : - )