当前位置:编程学习 > VB >>

关于Access数据在datagrid界面上导出查询结果到excel里,可在excel里排版打印的问题

  *************关于Access数据在datagrid界面上导出查询结果到excel里,可在excel里排版打印的问题****************
   本人一个软件所使用数据库是ACCESS,下面的两段代码是我的两个窗体的代码,我想在窗体Frm_find里加一个按钮,可以实现把查询结果显示在datagrid里数据导出 到EXCEL里进行排版编辑等。其实这个按钮是存在的了,就是Command3,不过它只能把整个数据库里的一个表内容都打导出来了,不能实现只导出查询内容。,
    还有一个问题是:由于FrmSql窗体只是实现查询并返回的一个功能界面,能否把FrmSql窗体的查询功能界面合并在Frm_find窗体界面上一起显示?我试过了,但是老是调试不成功,接收有问题。
   不知有没有办法可以解决这两个问题呢,高手帮个忙不?给点提示或是改个代码什么的,呵,先谢了。



==============以下是Frm_find窗体代码===============================================
Private adoPrimaryRS  As ADODB.Recordset
Private blnIsSQL As Boolean
Private Sub Command1_Click()
   
            FrmSql.sqlado = "wzzl_v"
            FrmSql.intNumField = 9
            FrmSql.Show vbModal
            Select Case FrmSql.intNumField
                Case -1, -2
                    blnIsSQL = False
                   
                     If Not (adoPrimaryRS.EOF And adoPrimaryRS.BOF) Then
                     i = adoPrimaryRS.Bookmark
                     adoPrimaryRS.Filter = ""
                     adoPrimaryRS.Requery
                     format_table
                     adoPrimaryRS.Bookmark = i
                     Else
                     adoPrimaryRS.Filter = ""
                     adoPrimaryRS.Requery
                     format_table
                    End If
                       
                    'adoPrimaryRS.Filter = Me.DataGrid1.Columns.Item(0).DataField & "<>''"
                
                Case Else
                    blnIsSQL = True
                    adoPrimaryRS.Filter = Me.DataGrid1.Columns.Item(FrmSql.intNumField).DataField & FrmSql.strSqlField
            End Select
End Sub

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Command3_Click()
Dim conn As Connection
Dim rs As Recordset
Dim strcon As String
Dim sql As String
Dim xlapp As excel.Application
Dim xlsheet As excel.Worksheet
Dim xlbllk As excel.Workbook
Dim d1 As String
Dim d2 As String
Dim d3 As String
Dim d4 As String
Dim d5 As String
Dim d6 As String
Dim d7 As String
Dim d8 As String
Dim d9 As String


Set conn = New ADODB.Connection
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fullpath("ziliao.lbl")
conn.Open strcon
Set rs = New ADODB.Recordset
sql = "select 编号,文件名称,数量,类型,入库时间,编制单位,编制时间,存放位置,备注 from wzzl_v"
rs.Open sql, conn, adOpenDynamic, adLockOptimistic
Set xlapp = New excel.Application
Set xlapp = CreateObject("excel.application")
xlapp.Visible = True
Set xlbllk = xlapp.Workbooks.Add
Set xlsheet = xlbllk.Worksheets(1)

xlsheet.Rows(1).Font.Size = 18
xlsheet.Range("A1:I1").MergeCells = True
xlsheet.Range("A1:I1") = "全部《文件资料》列表"
 
xlsheet.Range("A1:I2").HorizontalAlignment = xlCenter '居中问题
xlsheet.Range("A1:I2").VerticalAlignment = xlCenter
xlsheet.Range("A1:I2").Font.Bold = True

xlsheet.Columns("A").HorizontalAlignment = xlCenter
xlsheet.Columns("A").VerticalAlignment = xlCenter

xlsheet.Columns("C").HorizontalAlignment = xlCenter
xlsheet.Columns("C").VerticalAlignment = xlCenter

xlsheet.Columns("E").HorizontalAlignment = xlCenter
xlsheet.Columns("E").VerticalAlignment = xlCenter

xlsheet.Columns("F").HorizontalAlignment = xlCenter
xlsheet.Columns("F").VerticalAlignment = xlCenter

xlsheet.Columns("G").HorizontalAlignment = xlCenter
xlsheet.Columns("G").VerticalAlignment = xlCenter

xlsheet.Columns("H").HorizontalAlignment = xlCenter
xlsheet.Columns("H").VerticalAlignment = xlCenter

xlsheet.Columns("I").HorizontalAlignment = xlCenter
xlsheet.Columns("I").VerticalAlignment = xlCenter



If IsNull(rs!编号) = False Then
   xlsheet.Cells(2, 1) = "编号"

End If
If IsNull(rs!文件名称) = False Then
   xlsheet.Cells(2, 2) = "文件名称"
End If
If IsNull(rs!数量) = False Then
   xlsheet.Cells(2, 3) = "数量"
End If
If IsNull(rs!类型) = False Then
   xlsheet.Cells(2, 4) = "类型"
End If
If IsNull(rs!入库时间) = False Then
   xlsheet.Cells(2, 5) = "入库时间"
End If
If IsNull(rs!编制单位) = False Then
   xlsheet.Cells(2, 6) = "编制单位"
End If
If IsNull(rs!编制时间) = False Then
   xlsheet.Cells(2, 7) = "编制时间"
End If
If IsNull(rs!存放位置) = False Then
   xlsheet.Cells(2, 8) = "存放位置"
End If

   xlsheet.Cells(2, 9) = "备注"


i = 3
Do While Not rs.EOF
d1 = rs.Fields("编号") & ""
d2 = rs.Fields("文件名称") & ""
d3 = rs.Fields("数量") & ""
d4 = rs.Fields("类型") & ""
d5 = rs.Fields("入库时间") & ""
d6 = rs.Fields("编制单位") & ""
d7 = rs.Fields("编制时间") & ""
d8 = rs.Fields("存放位置") & ""
d9 = rs.Fields("备注") & ""
xlsheet.Cells(i, 1) = d1
xlsheet.Cells(i, 2) = d2
xlsheet.Cells(i, 3) = d3
xlsheet.Cells(i, 4) = d4
xlsheet.Cells(i, 5) = d5
xlsheet.Cells(i, 6) = d6
xlsheet.Cells(i, 7) = d7
xlsheet.Cells(i, 8) = d8
xlsheet.Cells(i, 9) = d9

i = i + 1
rs.MoveNext
Loop
End Sub


Private Sub Command4_Click()
On Error GoTo Err23:

  
  Dim db As ADODB.Connection
  Set db = New ADODB.Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & fullpath("ziliao.lbl")

  Set adoPrimaryRS = New Recordset
  
  adoPrimaryRS.Open "select 自动,编号,文件名称,数量,类型,入库时间,编制单位,编制时间,存放位置,已借,备注 from wzzl_v order by 编号,自动 desc", db, adOpenStatic, adLockOptimistic
   
  
  Set DataGrid1.DataSource = adoPrimaryRS
  format_table
  
 
 Exit Sub
Err23:
    MsgBox Err.Description, vbCritical, "错误"
End Sub

Private Sub Command5_Click()
Call Form_Load
End Sub



Private Sub Form_Load()
On Error GoTo Err23:

  
  Dim db As ADODB.Connection
  Set db = New ADODB.Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & fullpath("ziliao.lbl")

  Set adoPrimaryRS = New Recordset
  
  adoPrimaryRS.Open "select 自动,编号,文件名称,数量,类型,入库时间,编制单位,编制时间,存放位置,已借,备注 from wzzl_v order by 自动 desc", db, adOpenStatic, adLockOptimistic
   
  
  Set DataGrid1.DataSource = adoPrimaryRS
  format_table
  
 
 Exit Sub
Err23:
    MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub format_table()
 DataGrid1.Columns(0).Width = 0
 DataGrid1.Columns(1).Width = 1200
 DataGrid1.Columns(2).Width = 3500
 DataGrid1.Columns(3).Width = 480
 DataGrid1.Columns(4).Width = 2600
 DataGrid1.Columns(5).Width = 1000
 DataGrid1.Columns(6).Width = 1400
 DataGrid1.Columns(7).Width = 850
 DataGrid1.Columns(8).Width = 900
 DataGrid1.Columns(9).Width = 480
 DataGrid1.Columns(10).Width = 1500
 
 DataGrid1.Columns(0).Caption = "自动"
 DataGrid1.Columns(1).Caption = "编号"
 DataGrid1.Columns(2).Caption = "            文件名称"
 DataGrid1.Columns(3).Caption = "数量"
 DataGrid1.Columns(4).Caption = "          类    型"
 DataGrid1.Columns(5).Caption = "入库时间"
 DataGrid1.Columns(6).Caption = "  编制单位"
 DataGrid1.Columns(7).Caption = "编制时间"
 DataGrid1.Columns(8).Caption = "存放位置"
 DataGrid1.Columns(9).Caption = "已借"
 DataGrid1.Columns(10).Caption = "备注"
 
 For i = 0 To 10
   DataGrid1.Columns(i).Alignment = dbgCenter
 Next i
   DataGrid1.Columns(2).Alignment = dbgLeft
 DataGrid1.AllowRowSizing = False
 DataGrid1.AllowUpdate = False
 End Sub
=============================================================== --------------------编程问答-------------------- 接上面:

=================以下是FrmSql窗体代码=======================
Public intNumField As Integer
Public strSqlField As String
Public sqlado As String
Dim a(30) As Integer

Private Sub CboField_Click()
  If a(CboField.ListIndex) <> 7 Then
      TxtSQL.Locked = False
      DTPicker1.Enabled = False
  Else
      TxtSQL.Locked = True
      DTPicker1.Enabled = True
      TxtSQL.Text = DTPicker1.Value
  End If
  Select Case a(CboField.ListIndex)
  Case 2, 3, 6, 7
    Combo1.Clear
    Combo1.AddItem "= ", 0
    Combo1.AddItem "> ", 1
    Combo1.AddItem ">= ", 2
    Combo1.AddItem "< ", 3
    Combo1.AddItem "<= ", 4
    Combo1.AddItem "<> ", 5
    Combo1.ListIndex = 0
  Case Else
    Combo1.Clear
    Combo1.AddItem "包含", 0
    Combo1.AddItem "> ", 1
    Combo1.AddItem ">= ", 2
    Combo1.AddItem "< ", 3
    Combo1.AddItem "<= ", 4
    Combo1.AddItem "<> ", 5
    Combo1.AddItem "= ", 6
    Combo1.ListIndex = 0
  End Select
End Sub

Private Sub CmdSql_Click(Index As Integer)
    Select Case Index
    Case 0
        If Me.TxtSQL.Text = "" Then
            intNumField = -1
        Else
            If Combo1.Text = "包含" Then
                 temp2 = "like "
                 temp3 = "*" & TxtSQL.Text & "*"
            Else
                 temp2 = Combo1.Text
                 temp3 = TxtSQL.Text
            End If
            Select Case a(CboField.ListIndex)
                   Case 2
                      strSqlField = " " & temp2 & temp3
                   Case 7
                      strSqlField = " " & temp2 & "#" & temp3 & "#"
                   Case Else
                      strSqlField = " " & temp2 & "'" & temp3 & "'"
            End Select
            intNumField = CboField.ListIndex
        End If
    Case 1
        intNumField = -2
    End Select
    Unload Me
End Sub

Private Sub DTPicker1_Change()
    TxtSQL.Text = DTPicker1.Value
End Sub

Private Sub Form_Load()
On Error GoTo err_1
  MakeWindow Me
  
  Dim db As ADODB.Connection
  Dim adoPrimaryRS  As ADODB.Recordset
  Set db = New ADODB.Connection
  db.CursorLocation = adUseClient
  db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & fullpath("ziliao.lbl")

  Set adoPrimaryRS = New Recordset
  adoPrimaryRS.Open "select * from " & sqlado, db, adOpenStatic, adLockOptimistic
  Dim intTmp As Integer
  For intTmp = 0 To intNumField - 1
      Me.CboField.AddItem adoPrimaryRS.Fields(intTmp).Name
      a(intTmp) = adoPrimaryRS.Fields(intTmp).Type
  Next
  CboField.ListIndex = 0
  adoPrimaryRS.Close
  db.Close
  DTPicker1.Value = Date
Exit Sub
err_1:
  MsgBox Err.Description, vbCritical
End Sub

Private Sub imgTitleClose_Click()
    intNumField = -2
    Unload Me
End Sub

Private Sub imgTitleLeft_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoDrag Me
End Sub

Private Sub imgTitleMain_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoDrag Me
End Sub

Private Sub imgTitleMinimize_Click()
    Me.WindowState = 1
End Sub

Private Sub imgTitleRight_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoDrag Me
End Sub

Private Sub lblTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    DoDrag Me
End Sub

===========================================
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,