一个关于在VB中将Recordset 读出的内容放到一个数组变量中的问题!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于在VB中将Recordset 读出的内容放到一个数组变量中的问题!!相关的知识,希望对你有一定的参考价值。

动态数组a,还有数据集rs,如何把rs中的数据传到数组a中,已经试过getrow但是不行

Dim oc As Object, rs As Object, a()
Set oc = CreateObject("adodb.connection")
oc.open "provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\\tmp\\db2.mdb"
Set rs = CreateObject("adodb.recordset")
rs.open "select * from tek", oc, 1, 1
a = rs.getrows
MsgBox "记录集rs已被读入数组a中" & vbCrLf & "共" & UBound(a, 1) + 1 & "列 " & UBound(a, 2) + 1 & "行"
rs.Close
Set rs = Nothing
oc.Close
Set oc = Nothing


以上代码我测试过是可行的。有几点要注意:

1、数组a的类型一定要是Variant型(不定类型),而不能指定具体的类型,如String、Integer等;

2、是getrows,不是getrow;

3、数组a赋值后会是个二维数组,其第一维是列数(就是数据表中的字段数),第二维是行数(也就是数据表中的记录数)。

参考技术A 1、首先检测数据表的字段数,存储在变量中,例如X变量。
X = RS.Fields.Count
2、声明动态变量数组a():
ReDim a(1 To X)
3、赋值:
For I = 0 To X
a(I + 1) = RS.Fields(I)
Next I
参考技术B a(i)=rs.files(0)
类似这样的语句就可以了
参考技术C a = rs.GetRows(1)本回答被提问者采纳

如何在 VB.NET 中将 DataGridView 导出为 Excel 格式

【中文标题】如何在 VB.NET 中将 DataGridView 导出为 Excel 格式【英文标题】:How to export a DataGridView to Excel format in VB.NET 【发布时间】:2010-12-21 08:36:42 【问题描述】:

我正在使用 OLE 连接到使用 VB.NET 的数据库,并在 DataGridView 中显示结果。 我想将 DataGridView 中的数据导出为 Excel 格式文件,即 用户可以将 DataGridView 的内容保存为 MS Excel 文件。

【问题讨论】:

【参考方案1】:

我发现 copyfromrecordset 是最快的方法。

Dim xlApp As New Excel.Application
    Dim xlWBook As Excel.Workbook = xlApp.Workbooks.Add
    Dim XlSheet As Excel.Worksheet = CType(xlWBook.Worksheets("Sheet1"), Excel.Worksheet)
    With XlSheet
         'insert column names
        For i = 2 To dt.Columns.Count - 1
            .Cells(1, i).value = dt.Columns(i - 1).ColumnName
        Next
        'insert the actual data
        .Range("A2").CopyFromRecordset(datset)

    End With

【讨论】:

【参考方案2】:

最简单的方法是使用 microsoft.visualbasic.fileio (msdn link) 中的 textfieldparser 类。伪代码是:

创建一个 textfieldparser 对象,将文件设置为打开 (*.csv),并进行解码。

写列标题

遍历 datagridview 或其数据源 打印到文本文件

用户现在可以在 excel 中打开文件。

这是我的快速回答,我会看看是否有更好的方法。

【讨论】:

【参考方案3】:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 Button1.Click DATAGRIDVIEW_TO_EXCEL((DataGridView1)) ' 参数:你的 DATAGRIDVIEW 结束子

Private Sub DATAGRIDVIEW_TO_EXCEL(ByVal DGV As DataGridView) 尝试 Dim DTB = 新数据表,RWS 作为整数,CLS 作为整数

    For CLS = 0 To DGV.ColumnCount - 1 ' COLUMNS OF DTB
        DTB.Columns.Add(DGV.Columns(CLS).Name.ToString)
    Next

    Dim DRW As DataRow

    For RWS = 0 To DGV.Rows.Count - 1 ' FILL DTB WITH DATAGRIDVIEW
        DRW = DTB.NewRow

        For CLS = 0 To DGV.ColumnCount - 1
            Try
                DRW(DTB.Columns(CLS).ColumnName.ToString) = DGV.Rows(RWS).Cells(CLS).Value.ToString
            Catch ex As Exception

            End Try
        Next

        DTB.Rows.Add(DRW)
    Next

    DTB.AcceptChanges()

    Dim DST As New DataSet
    DST.Tables.Add(DTB)
    Dim FLE As String = "" ' PATH AND FILE NAME WHERE THE XML WIL BE CREATED (EXEMPLE: C:\REPS\XML.xml)
    DTB.WriteXml(FLE)
    Dim EXL As String = "" ' PATH OF/ EXCEL.EXE IN YOUR MICROSOFT OFFICE
    Shell(Chr(34) & EXL & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus) ' OPEN XML WITH EXCEL

Catch ex As Exception
    MsgBox(ex.ToString)
End Try

结束子

【讨论】:

【参考方案4】:

我测试了它并为我工作。

Dim xlApp As Microsoft.Office.Interop.Excel.Application
    Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
    Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
    Dim misValue As Object = System.Reflection.Missing.Value
    Dim i As Integer
    Dim j As Integer

    Try

        xlApp = New Microsoft.Office.Interop.Excel.Application
        xlApp.Application.DisplayAlerts = False
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets.Add()
        xlWorkSheet.Name = "MysqlSheet"

        For i = 0 To Form2.DataGridView2.RowCount - 1
            For j = 0 To Form2.DataGridView2.ColumnCount - 1
                For k As Integer = 1 To Form2.DataGridView2.Columns.Count
                    xlWorkSheet.Cells(1, k) = Form2.DataGridView2.Columns(k - 1).HeaderText
                    xlWorkSheet.Cells(i + 2, j + 1) = Form2.DataGridView2(j, i).Value
                Next
            Next
        Next

        xlWorkSheet.SaveAs("c:\")  'Where u want to save
        xlWorkBook.Close()
        xlApp.Quit()




    Catch ex As Exception
        MsgBox(ex.Message)
    Finally

    End Try

【讨论】:

以上是关于一个关于在VB中将Recordset 读出的内容放到一个数组变量中的问题!!的主要内容,如果未能解决你的问题,请参考以下文章

关于 AutoCompleteCustomSource 的问题(VB.NET)

VB6 ADODB.Recordset RecordCount 属性总是返回 -1

VB怎么将ADODB.Recordset取的表付到本地变量里

vb连接SQL数据库后制作一个登陆界面。

办公用品管理系统VB——模块

VB combobox怎么实现可多选下拉列表中的内容?