【发布时间】:2015-09-26 06:31:39
【问题描述】:
我一直在开发一个小工具,可以查询我们的数据库并返回一些参考资料。
我在将新查询的值添加到 Excel Sheet1 中现有值的下方时遇到问题。
Option Explicit
Public Ref As String
Const DWConnectString = "Provider=SQLOLEDB... "
Public Property Get rRef() As String
rRef = Me.TextBox1.Value
Ref = Trim(rRef)
End Property
Private Sub TextBox1_Change()
Dim rRef As String
rRef = Me.TextBox1.Value
End Sub
Private Sub ZoekRef_Click()
Dim cn As Object
Dim rs As Object
Dim cm As Object
Dim Ref As String
Dim StrSource As String
Dim startrow As Integer
Ref = rRef
Set cn = CreateObject("ADODB.Connection")
cn.Open DWConnectString
Set rs = CreateObject("ADODB.Recordset")
'rs = New ADODB.Recordset
StrSource = "Select CONSIGNMENT.CONSIGNMENT, CONSIGNMENT.DOCUMENT_REMARK_2, INVOICE_HIST.NET_AMOUNT, INVOICE_HIST.VAT_AMOUNT, INVOICE_HIST.INV_CURRENCY "
StrSource = StrSource & "from CONSIGNMENT left outer join INVOICE_HIST ON CONSIGNMENT.CONSIGNMENT=INVOICE_HIST.CONSIGNMENT "
StrSource = StrSource & "where DOCUMENT_REMARK_2 like '%"
StrSource = StrSource & Ref & "%'"
rs.Open StrSource, cn
If rs.EOF Then
MsgBox "Geen Resultaten"
Exit Sub
Else
Dim fieldNames, j
rs.MoveFirst
ReDim fieldNames(rs.Fields.Count - 1)
For j = 0 To rs.Fields.Count - 1
fieldNames(j) = rs.Fields(j).Name
Next
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, rs.Fields.Count)).Value = fieldNames
For j = 1 To rs.Fields.Count
Sheet1.Columns(j).AutoFit
Next
Sheet1.Cells.CopyFromRecordset rs
'fldcount2 = Sheets("sheet1").UsedRange.Rows.Count
Sheet1.Rows(1).Insert
Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(1, rs.Fields.Count)).Value = fieldNames
startrow = 3
Do Until rs.EOF
rs.MoveNext
startrow = startrow + 1
Loop
End If
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
我想过用这条线:
Do until trim(cells(startrow,1).Value) = ""
startrow = startrow + 1
Loop
在rs.Movenext 行之前,但这似乎是在测试记录集,而不是实际的 excel 文件。
我可以在添加新记录集之前测试我当前 Sheet1 的值,使其低于现有记录集吗?
感谢您的帮助。
【问题讨论】:
-
您只是想获取最后一行数据吗?有plenty of ways 这样做,我最喜欢的是
LastRow = Cells(Rows.Count, "A").End(xlUp).Row。 -
那么我应该在代码的哪一部分添加这一行 + 使用 lastrow 以便将我的 RS 复制到正确的位置?
-
我无法通过查看您的代码来判断,您是否要选择一系列行?还是您只是想在底部获取第一个打开的行,然后在其下方粘贴数据?
-
第一次打开,但别担心,我已经成功了!我的代码需要一些细化,我找到了一种方法来检查我在 excel 中的现有值。不过谢谢!
-
没问题!如果您回答了自己的问题,您能否在下面的答案中发布解决方案,然后接受您自己的答案?以防万一有人遇到类似问题。