正文

MDB之Table输出到Word     2005-10-11 20:53:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5927.html

分享到:

  一个简单的MDB之Table输出到Word的vb小程序,包括简单的查询、排序和分组功能。 欢迎批评交流cwxiao888@163.com Option ExplicitDim DataType(100) As IntegerDim SqlString As StringDim OrderStr As StringDim TalNaStr As StringDim i As IntegerDim MacroName As StringPrivate WordApp As Word.ApplicationPrivate doc As Word.DocumentPrivate se1 As Word.SelectionPrivate db As DatabasePrivate rs As Recordset Private Sub CmdQuery_Click()'On Error Resume NextTalNaStr = Data1.Caption'queryprintfrm.Data1.DatabaseName = datalistfrm.Text1.Text'queryprintfrm.Data1.RecordSource = datalistfrm.Combo1.Text'queryprintfrm.Data1.DatabaseName = datalistfrm.Text1.Textqueryprintfrm.Data1.RecordSource = datalistfrm.Combo1.Text queryprintfrm.Data1.Refresh If Me.Exp1.Text = "Like" ThenOrderStr = FindField.Textqueryprintfrm.Data1.RecordSource = "select * from" + " " + TalNaStr + " " + "where" + " " + Me.FindField.Text + " " + "like" + " " + "'" + Me.Range1.Text + "'" + " " + "order by " + " " + OrderStrMe.Data1.RefreshMe.DBGrid1.RefreshMe.RefreshEnd If If Me.Exp1.Text = "In" ThenOrderStr = FindField.Textqueryprintfrm.Data1.RecordSource = "select * from" + " " + TalNaStr + " " + "where" + " " + Me.FindField.Text + " " + "In" + " " + "(" + "'" + Me.Range1.Text + "'" + ")" + " " + "order by " + " " + OrderStrMe.Data1.RefreshMe.DBGrid1.RefreshMe.RefreshEnd IfOn Error Resume NextSelect Case Data1.Recordset.Fields(ComFind.ListIndex).TypeCase 1, 4, 5SqlString = "select*from" + TalNaStr + " where " + FindField.Text + " " + Exp1.Text + " " + Range1.TextCase 10SqlString = "select*from " + TalNaStr + " where " + FindField.Text + "" + Exp1.Text + "" + "'" + Range1.Text + "'"Case 8SqlString = "select*from " + TalNaStr + " where " + FindField.Text + Exp1.Text + "CDate(" + "'" + Range1.Text + "')" End SelectOrderStr = FindField.TextQueryData SqlString, OrderStr End Sub   Private Sub Combo1_Click()On Error Resume NextTalNaStr = Data1.CaptionData1.RecordSource = "select" + " " + Combo1.Text + " " + "from" + " " + TalNaStr + " " + "group by " + " " + Combo1.Text'Data1.RecordSource = "select *from  order by name"Data1.RefreshDBGrid1.RefreshData1.Recordset.MoveLastMe.Label8.Caption = Me.Data1.Recordset.RecordCountMe.RefreshEnd Sub Private Sub ComFind_Click()FindField.Text = ComFind.TextRange1.Text = ""ComSort.Text = ComFind.TextMe.RefreshEnd Sub Private Sub Command1_Click()On Error Resume Next         For i = 0 To List1.ListCount - 1 Step 1         If List1.Selected(i) Then            List2.AddItem List1.Text            List1.RemoveItem (List1.ListIndex)            Exit Sub            End If            Next                        List1.SetFocus            List1.Text = List1.List(0)                        If List1.List(0) = "" Then            List2.SetFocus            List2.Text = List2.List(0)            End IfEnd Sub Private Sub Command10_Click()Dim sfile As String     With dlgCommonDialog         .DialogTitle = "打开数据库文件"        .CancelError = False        'ToDo: 设置 common dialog 控件的标志和属性        .Filter = "所有数据库文件*.mdb|*.mdb|"        .ShowOpen        If Len(.FileName) = 0 Then            Exit Sub        End If        sfile = .FileName               Data1.Caption = .FileTitle    End With'        Data1.Database = Label3.Caption         Data1.DatabaseName = sfile'        Data1.RecordSource ='         On Error Resume Next                          Data1.Refresh'        Form1.MSFlexGrid1.Refresh        Form1.DBGrid1.Refresh        Form1.RefreshEnd Sub Private Sub Command2_Click() 'Set db = OpenDatabase(datalistfrm.Text1.Text)'Set rs = db.OpenRecordset(datalistfrm.Combo1.Text)Set db = Data1.DatabaseSet rs = Data1.RecordsetData1.Refresh Set WordApp = New Word.ApplicationWordApp.Documents.AddSet doc = WordApp.ActiveDocumentSet se1 = WordApp.Selection       With doc.PageSetup            .LineNumbering.Active = False            .Orientation = wdOrientLandscape            .TopMargin = CentimetersToPoints(2)            .BottomMargin = CentimetersToPoints(2)            .LeftMargin = CentimetersToPoints(2)            .RightMargin = CentimetersToPoints(2)            .Gutter = CentimetersToPoints(0)            .HeaderDistance = CentimetersToPoints(1.5)            .FooterDistance = CentimetersToPoints(1.75)            .PageWidth = CentimetersToPoints(29.7)            .PageHeight = CentimetersToPoints(21)            .FirstPageTray = wdPrinterDefaultBin            .OtherPagesTray = wdPrinterDefaultBin            .SectionStart = wdSectionNewPage            .OddAndEvenPagesHeaderFooter = False            .DifferentFirstPageHeaderFooter = False            .VerticalAlignment = wdAlignVerticalTop            .SuppressEndnotes = False            .MirrorMargins = False            .TwoPagesOnOne = False            .GutterPos = wdGutterPosLeft            .LayoutMode = wdLayoutModeLineGrid        End With    se1.TypeText Text:="20" & CStr(Date) & " " & CStr(Time())If List2.ListCount = 0 Then    Call Command6_ClickEnd If doc.Tables.Add Range:=se1.Range, numrows:=1, numcolumns:=List2.ListCount        For i = 0 To List2.ListCount - 1Screen.MousePointer = 11'se1.TypeText Text:=rs.Fields(i).Namese1.TypeText Text:=List2.List(i)se1.MoveRight unit:=12Next 'se1.TypeText Text:="产品名称"'se1.MoveRight unit:=12 Do Until rs.EOF For i = 0 To List2.ListCount - 1 On Error Resume Next' se1.TypeText Text:=rs.Fields(i).Value se1.TypeText Text:=rs.Fields(List2.List(i)).Value se1.MoveRight unit:=12 Next'se1.TypeText Text:=rs!产品名称'se1.MoveRight unit:=12 'se1.TypeText Text:=rs!中止'se1.MoveRight unit:=12 rs.MoveNext   LoopWordApp.Run MacroName:="AutoFitContent"                       se1.InsertBreak     se1.Delete Count:=List2.ListCount            se1.Sections(1).Footers(1).PageNumbers.Add PageNumberAlignment:= _    wdAlignPageNumberRight, FirstPage:=True      WordApp.Visible = True   ' WordApp.Run MacroName:="InsertDateTime"Set WordApp = NothingScreen.MousePointer = 1 End Sub Private Sub Command3_Click()'CrystalReport1.End Sub Private Sub Command4_Click()Unload queryprintfrmEnd Sub Private Sub Command5_Click()EndEnd Sub Private Sub Command6_Click()For i = 0 To List1.ListCount - 1 Step 1    List2.AddItem List1.List(i)    Next    List1.Clear    List2.SetFocus    List2.Text = List2.List(0)End Sub Private Sub Command7_Click()On Error Resume Next         For i = 0 To List2.ListCount - 1 Step 1         If List2.Selected(i) Then            List1.AddItem List2.Text            List2.RemoveItem (List2.ListIndex)            Exit Sub            End If            Next                        List2.SetFocus            List2.Text = List2.List(0)                        If List2.List(0) = "" Then            List1.SetFocus            List1.Text = List1.List(0)            End If End Sub Private Sub Command8_Click()For i = 0 To List2.ListCount - 1 Step 1    List1.AddItem List2.List(i)    Next    List2.Clear    List1.SetFocus    List1.Text = List1.List(0)End Sub Private Sub Command9_Click()On Error Resume Next'On Error GoTo Errlist:'Errlist:'     If MsgBox("没有选定字段或所选字段不合要求,请重新选择字段再浏览!", vbOKOnly) = vbOK Then Exit Sub    Dim ListStr As StringIf List2.ListCount <> 0 Then   For i = 0 To List2.ListCount - 1 Step 1       If (i <> List2.ListCount - 1) Then          ListStr = ListStr + List2.List(i) + ","          Else          ListStr = ListStr + List2.List(i)          End If        Next    End If    Me.Data1.RecordSource = "select" + " " + ListStr + " " + "from" + " " + Data1.Caption    Me.Data1.Refresh    Me.DBGrid1.Refresh    Me.Refresh End Sub Private Sub ComSort_Click()OrderStr = ComSort.TextQueryData SqlString, OrderStrEnd Sub   Function QueryData(ByVal SqlString As String, ByVal OrderStr As String) As StringOn Error Resume NextSqlString = SqlString + "order by " + " " + OrderStrData1.RecordSource = SqlString'Data1.RecordSource = "select *from  order by name"Data1.RefreshDBGrid1.RefreshMe.RefreshEnd Function   Private Sub Form_Load()On Error Resume Next queryprintfrm.Data1.DatabaseName = datalistfrm.Text1.Textqueryprintfrm.Data1.RecordSource = datalistfrm.Combo1.Textqueryprintfrm.Caption = datalistfrm.Combo1.Textqueryprintfrm.Data1.Refresh'Me.Data1.RecordSource = datalistfrm.Combo1.Text'Me.Caption = datalistfrm.Combo1.Text'Me.Data1.RefreshFor i = 0 To Data1.Recordset.Fields.Count - 1 Step 1queryprintfrm.ComFind.AddItem Data1.Recordset.Fields(i).Namequeryprintfrm.ComSort.AddItem Data1.Recordset.Fields(i).NameMe.List1.AddItem Data1.Recordset.Fields(i).Name'Me.List2.AddItem Data1.Recordset.Fields(i).NameMe.Combo1.AddItem Data1.Recordset.Fields(i).NameNextqueryprintfrm.RefreshFor i = 0 To Data1.Recordset.Fields.Count - 1DataType(i) = Data1.Recordset(i).TypeNext 'error:'MsgBox "数据库文件出错,请重新选择数据库!" End Sub Private Sub List1_DblClick()Call Command1_Click End Sub   Private Sub List2_DblClick()Call Command7_ClickEnd Sub Private Sub open_Click()   Call Command10_ClickEnd Sub

阅读(6460) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册