• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    VB系統(tǒng)開發(fā)中數(shù)據(jù)轉(zhuǎn)換技術(shù)的研究與實(shí)現(xiàn)

    2011-10-12 03:06:26唐淑玲
    中國科技信息 2011年4期
    關(guān)鍵詞:窗體字段控件

    唐淑玲

    大連職業(yè)技術(shù)學(xué)院

    VB系統(tǒng)開發(fā)中數(shù)據(jù)轉(zhuǎn)換技術(shù)的研究與實(shí)現(xiàn)

    唐淑玲

    大連職業(yè)技術(shù)學(xué)院

    當(dāng)前各系統(tǒng)數(shù)據(jù)之間的轉(zhuǎn)換已成為各類用戶所關(guān)心的問題,文章以大連職業(yè)技術(shù)學(xué)院實(shí)踐教學(xué)及其設(shè)備實(shí)時(shí)管理系統(tǒng)開發(fā)為背景,簡要敘述了VB訪問數(shù)據(jù)庫的特點(diǎn),主要探討了如何利用VB實(shí)現(xiàn)Excel數(shù)據(jù)與Access數(shù)據(jù)之間的相互轉(zhuǎn)換,具有較強(qiáng)的實(shí)用性,減少了工作量,從而進(jìn)一步推動(dòng)了數(shù)據(jù)庫技術(shù)和辦公自動(dòng)化技術(shù)的有機(jī)結(jié)合。

    數(shù)據(jù)庫;VB;EXCEL;ACCESS;ADO技術(shù);數(shù)據(jù)轉(zhuǎn)換

    1 前言

    課題《實(shí)踐教學(xué)及其設(shè)備實(shí)時(shí)管理系統(tǒng)研究》是2009年度遼寧省教育科學(xué)規(guī)劃立項(xiàng)課題,該課題以實(shí)踐教學(xué)資源的科學(xué)合理規(guī)劃、實(shí)施和管理為研究內(nèi)容,以實(shí)踐教學(xué)設(shè)備管理為研究對象,其主要目標(biāo)是充分利用現(xiàn)有的軟硬件資源,提高已有設(shè)備的利用率,強(qiáng)化高職學(xué)生的職業(yè)技能訓(xùn)練。

    在對該系統(tǒng)進(jìn)行規(guī)劃時(shí),我們考慮到實(shí)訓(xùn)設(shè)備的原始資料、各實(shí)訓(xùn)車間的基本資料、實(shí)習(xí)教學(xué)計(jì)劃、各實(shí)訓(xùn)室的教學(xué)時(shí)間安排等原始資料大多數(shù)是以Excel文件形式存在的。為了充分利用原始數(shù)據(jù),減少數(shù)據(jù)錄入的麻煩,實(shí)現(xiàn)數(shù)據(jù)共享,我們設(shè)計(jì)了一個(gè)數(shù)據(jù)導(dǎo)入導(dǎo)出模塊,主要是將實(shí)訓(xùn)計(jì)劃、實(shí)習(xí)時(shí)間安排等Excel文件導(dǎo)入到系統(tǒng)數(shù)據(jù)庫中來,然后將系統(tǒng)處理完成的數(shù)據(jù)資料再導(dǎo)出到Excel文件中去,以方便輸出格式靈活的各種數(shù)據(jù)報(bào)表。為實(shí)現(xiàn)這一功能,我們決定在Visual Basic6.0、Microsoft Access2003及Excel2003環(huán)境下進(jìn)行系統(tǒng)開發(fā)。

    2 數(shù)據(jù)轉(zhuǎn)換關(guān)鍵技術(shù)

    2.1 AD0技術(shù)

    在VB中實(shí)現(xiàn)Excel與Access之間的數(shù)據(jù)轉(zhuǎn)換,依靠的是ADO技術(shù)。ADO(Activex Data Object)對象是DAO/RDO的后繼產(chǎn)物,很多開發(fā)工具都支持這個(gè)對象,比如Visual Basic、ASP。它是Microsoft公司專門為適應(yīng)網(wǎng)絡(luò)數(shù)據(jù)庫開發(fā)和客戶端需求而推出的一種跨平臺遠(yuǎn)程數(shù)據(jù)庫訪問技術(shù)。ADO擴(kuò)展了DAO和RDO所使用的對象模型,它包含較少的對象、更多的屬性、方法和事件,這使得ADO對象更容易使用。ADO通過OLEDB所提供的高性能數(shù)據(jù)訪問方法,可以方便快速地對各種數(shù)據(jù)進(jìn)行訪問和操作。ADO可訪問的數(shù)據(jù)源包括關(guān)系或非關(guān)系型數(shù)據(jù)庫、電子郵件和文件系統(tǒng)、文本和圖形、自定義業(yè)務(wù)對象,比如SQL-Server、Access、數(shù)據(jù)庫,Excel、word文檔等。

    2.2 使用ADO訪問數(shù)據(jù)庫的兩種方式

    在VB中,使用ADO訪問數(shù)據(jù)主要有兩種方式,一種是非編程訪問方式,使用ADO Data控件方式,通過對控件的綁定來訪問數(shù)據(jù)庫中的數(shù)據(jù);另一種是ADO對象模型編程訪問方式,通過定義對象和編寫代碼來實(shí)現(xiàn)對數(shù)據(jù)的訪問。

    2.3 ADO兩種訪問方式比較

    使用ADO Data控件在連接數(shù)據(jù)庫時(shí),不需要?jiǎng)?chuàng)建連接對象和記錄集對象,直接設(shè)置相關(guān)屬性就可以了,簡化了編程,但在功能上有所限制,對數(shù)據(jù)庫的連接在程序運(yùn)行時(shí)難以改變,在訪問大型數(shù)據(jù)庫時(shí)效率比較低。如果通過對象模型編程方式連接數(shù)據(jù)庫時(shí),則對數(shù)據(jù)庫的操作非常靈活,效率上也會(huì)大大提高。本系統(tǒng)采用的是編程方式。

    3 數(shù)據(jù)轉(zhuǎn)換方法與步驟

    3.1 主窗體設(shè)計(jì)

    3.1.1 界面設(shè)計(jì)

    主窗體上主要包括一個(gè)標(biāo)簽label1和兩個(gè)命令按鈕command1、command2控件,如圖1所示。

    圖1 主窗體

    3.1.2 窗體主要代碼

    Private Sub Command1_Click()

    Form2.Show

    Me.Hide

    End Sub

    Private Sub Command2_Click()

    Form4.Show

    Me.Hide

    End Sub

    3.1.3 公共變量及模塊

    首先要引用“Microsoft ActiveX Data Objects2.6 Library” 和“Microsoft Excel 11.0 Object Library”系統(tǒng)庫。

    公共變量及模塊設(shè)置如下:

    Public fn As String

    Public fn1 As String

    Public fncount As Integer

    Public fn1count As Integer

    Public conn As New ADODB.Connection

    Public cn As New ADODB.Connection

    Public Sub mdbcon()

    conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & fn &";persist security info=false"

    conn.CursorLocation =adUseClient

    End Sub

    Public Sub xlscon()

    Set cn = New ADODB.Connection

    With cn

    .Provider = "microsoft.jet.oledb.4.0;"

    .ConnectionString = "data source=" & fn1 & " ;" & "extended properties= excel 8.0;"

    .CursorLocation = adUseClient

    .Open

    End With

    End Sub

    3.2 Excel數(shù)據(jù)轉(zhuǎn)換成Access數(shù)據(jù)設(shè)計(jì)

    3.2.1 打開Excel文件的窗體設(shè)計(jì),如圖2所示。

    圖2 打開Excel文件窗體

    3.2.1.1 該窗體包括的主要控件有:文本框控件(text1)用于顯示所選文件路徑;圖像控件(Image1)用于打開對話框;對話框控件(cdl1)、組合框控件(combo1)用于顯示表的名稱;網(wǎng)格控件(dg1)用于顯示Excel表中的記錄;命令按鈕(cmd1)用于調(diào)用下一個(gè)窗體。

    3.2.1.2 主要代碼:

    Private Sub Image1_Click()

    Label3.Visible = False

    combo1.Clear

    Dim rsxls As New ADODB.Recordset

    cdl1.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"

    cdl1.CancelError = True

    cdl1.DialogTitle = "打開Excel文件"

    cdl1.ShowOpen

    fn1 = cdl1.FileName

    Text1.Text = cdl1.FileName

    If cn.State = adStateOpen Then

    conn.Close

    End If

    Call xlscon

    If fn1 = "" Then

    MsgBox "請重新選擇Excel文件!", vbInformation + vbOKOnly,"溫馨提示"

    End If

    Set rsxls = cn.OpenSchema(adSchemaTables)

    Do Until rsxls.EOF

    combo1.AddItem rsxls!table_name

    rsxls.MoveNext

    Loop

    rsxls.Close

    Set rsxls = Nothing

    End Sub

    Private Sub Combo1_Click()

    Dim i As Integer

    Set dg1.DataSource = Nothing

    dg1.Refresh

    Label3.Visible = True

    Dim oRS As New ADODB.Recordset

    oRS.Open "Select * from [" &combo1.Text & "]", cn, adOpenStatic,adLockOptimistic

    oRS.Update

    i = oRS.RecordCount

    fn1count = oRS.Fields.Count

    Label3.Caption = "共有" & i& "條記錄"

    Label4.Caption = "共有" & oRS.Fields.Count & "個(gè)字段"

    Set dg1.DataSource = oRS

    dg1.Refresh

    Cmd1.Enabled = True

    End Sub

    Private Sub Cmd1_Click()

    Form3.Show

    Me.Hide

    End Sub

    3.2.2 打開Access文件的窗體設(shè)計(jì),如圖3所示。

    圖3 打開Access文件窗體

    3.2.2.1 該窗體包括的主要控件有:文本框控件(text1)用于顯示所選文件路徑;圖像控件(Image1)用于打開對話框;對話框控件(cdl2)、組合框(com1)用于顯示表的名稱; 網(wǎng)格控件(msg1)用于顯示Access數(shù)據(jù)庫中表的結(jié)構(gòu)信息(字段名稱、字段大小、字段類型):命令按鈕(cmd1)用于執(zhí)行“導(dǎo)入”命令。

    3.2.2.2 主要代碼:

    Private Sub Image1_Click()

    Dim rs As New ADODB.Recordset

    cd1.Filter = "Access文件(*.mdb)|*.mdb|所有文件(*.*)|*.*"

    cd1.CancelError = True

    cd1.DialogTitle = "打開Access文件"

    cd1.ShowOpen

    fn = cd1.FileName

    Text1.Text = fn

    If fn = "" Then

    MsgBox "請重新選擇Access文件!", vblnformation + vbOKOnly

    End If

    If conn.State = adStateOpen Then

    conn.Close

    com1.Clear

    End If

    Call mdbcon

    Set rs = conn.OpenSchema(adSchemaTables)

    Do Until rs.EOF

    If Left(rs!table_name, 4) <>"MSys" Then

    com1.AddItem rs!table_name

    End If

    rs.MoveNext

    Loop

    rs.Close

    Set rs = Nothing

    End Sub

    Private Sub com1_Click()

    Dim P As Integer

    Dim sr As New ADODB.Recordset

    sr.Open com1.Text, conn,adOpenKeyset, adLockOptimistic

    Label3.Visible = True

    Label3.Caption = "共有" & sr.Fields.Count & "個(gè)字段"

    fncount = sr.Fields.Count

    With msg1

    .Rows = sr.Fields.Count + 1

    For P = 1 To sr.Fields.Count

    .TextMatrix(P, 1) = P

    .TextMatrix(P, 2) = sr.Fields(P- 1).Name

    .TextMatrix(P, 3) = sr.Fields(P- 1).Type

    .TextMatrix(P, 4) = sr.Fields(P- 1).DefinedSize

    Next P

    End With

    sr.Close

    Set sr = Nothing

    Cmd1.Enabled = True

    End Sub

    Private Sub Cmd2_Click()

    Dim i As Integer

    Dim S As Integer

    Dim rst As New ADODB.Recordset

    Dim rs As New ADODB.Recordset

    If fnlcount > fncount Then

    rst.Open "Select * from [" &Form2.combo1.Text & "]", cn,adOpenDynamic

    rs.Open "select * from " &com1.Text & " ", conn,adOpenDynamic, adLockOptimistic

    rs.MoveLast

    i = rst.RecordCount

    Do While Not rst.EOF

    On Error Resume Next

    rs.AddNew

    For S = 0 To fn1count - 1

    rs.Fields(S) = rst.Fields(S)

    Next S

    rs.MoveNext

    rst.MoveNext

    i = i - 1

    If i = 0 Then

    Form3.Caption = "數(shù)據(jù)導(dǎo)入完畢!"

    rs.Update

    MsgBox "已成功導(dǎo)入" & rst.RecordCount & "條記錄!",vblnformation, "溫馨提示"

    Cmd2.Caption = "關(guān)閉"

    Else

    Form3.Caption = "數(shù)據(jù)正在導(dǎo)入,請稍候........"

    End If

    Loop

    Else

    MsgBox "Excel表數(shù)據(jù)字段數(shù)大于Access表數(shù)據(jù)字段數(shù)!",vbExclamation, " 溫馨提示"

    End If

    rs.Close

    rst.Close

    Set rs = Nothing

    Set rst = Nothing

    Cmd1.Enabled = False

    End Sub

    3.3 Access數(shù)據(jù)轉(zhuǎn)換成Excel數(shù)據(jù)設(shè)計(jì)

    3.3.1 界面設(shè)計(jì),如圖4所示。

    圖4 Access數(shù)據(jù)轉(zhuǎn)換成Excel數(shù)據(jù)窗體

    3.3.2 該窗體包括的主要控件有:文本控件(text1)用于顯示所選文件路徑;圖像控件(image1)用于打開對話框;對話框控件(cmdg1)、組合框(combo1)用于顯示表的名稱;列表框控件(1ist1)用于顯示Access數(shù)據(jù)庫中表的字段名稱;命令按鈕(cmd1)用于執(zhí)行“導(dǎo)出” 命令。

    3.3.3 主要代碼:

    Private Sub Image1_Click()

    Dim rsl As New ADODB.Recordset

    Cmdg1.Filter = "Access文件(*.mdb)|*.mdb|所有文件|*.*"

    Cmdg1.CancelError = True

    Cmdg1.DialogTitle = "打開Access文件"

    Cmdg1.ShowOpen

    fn = Cmdg1.FileName

    Text1.Text = Cmdg1.FileName

    If fn = "" Then

    MsgBox "請重新選擇Access文件!", vblnformation + vbOKOnly

    End If

    If conn.State = adStateOpen Then

    conn.Close

    Combo1.Clear

    End If

    Call mdbcon

    Set rs1 = conn.OpenSchema(adSchemaTables)

    Do Until rs1.EOF

    If Left(rs1!table_name, 4) <>"MSys" Then

    Combo1.AddItem rs1!table_name

    End If

    rs1.MoveNext

    Loop

    rs1.Close

    Set rs1 = Nothing

    End Sub

    Private Sub Cmd1_Click()

    Dim rst As New ADODB.Recordset

    rst.Open "select " & Left(Trim(Text1.Text), Len(Trim(Text1.Text))- 1) & " from " & Combo1.Text &" ", conn, adOpenDynamic,adLockOptimistic

    Dim xlsapp As Excel.Application

    Dim xlsbook As Excel.Workbook

    Dim xlsSheet As Excel.Worksheet

    Dim i, j As Long

    Set xlsapp = CreateObject("excel.application")

    Set xlsbook = xlsapp.Workbooks.Add

    Set xlsSheet = xlsbook.Worksheets(1)

    On Error Resume Next

    j = 1

    Do Until rst.EOF

    For i = 1 To rst.Fields.Count

    xlsSheet Cells(j, i) = rst.Fields(i - 1)

    Next i

    rst.MoveNext

    j = j + 1

    Loop

    xlsapp.Visible = True

    xlsbook.SaveAs App.Path & "導(dǎo)出數(shù)據(jù).xls"

    Set xlsapp = Nothing

    rst.Close

    conn.Close

    Set rst = Nothing

    Set conn = Nothing

    Unload Me

    Unload fm

    End Sub

    Private Sub Combo1_Click()

    Dim i As Integer

    Dim srs As New ADODB.Recordset

    List1.Clear

    srs.Open Combo1.Text, conn,adOpenKeyset, adLockOptimistic

    i = srs.Fields.Count

    For i = O To srs.Fields.Count- 1

    List1.AddItem srs.Fields(i).Name

    Next i

    srs.Close

    Set srs = Nothing

    End Sub

    4 結(jié)束語

    從上面的研究中可以看出,利用VB實(shí)現(xiàn)Excel數(shù)據(jù)與Access數(shù)據(jù)之間的相互轉(zhuǎn)換,代碼簡單,容易實(shí)現(xiàn),減少了工作量。Access數(shù)據(jù)轉(zhuǎn)換成Excel數(shù)據(jù)時(shí),可通過列表框控件選取需要導(dǎo)出的信息; Excel數(shù)據(jù)轉(zhuǎn)換成Access數(shù)據(jù)時(shí),Excel表中的字段順序要和Access表中的字段順序一致,不能更改Access表中字段的順序。

    10.3969/j.issn.1001-8972.2011.04.047

    本文是省級立項(xiàng)課題《實(shí)踐教學(xué)及其設(shè)備實(shí)時(shí)管理系統(tǒng)研究》研究論文課題審批單位:遼寧省教育科學(xué)規(guī)劃領(lǐng)導(dǎo)小組辦公室

    課題批準(zhǔn)號:JG09DB288

    唐淑玲(1972—),女,遼寧大連人,大連職業(yè)技術(shù)學(xué)院,講師,研究方向?yàn)橛?jì)算機(jī)應(yīng)用。

    猜你喜歡
    窗體字段控件
    圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
    試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
    檔案天地(2019年5期)2019-06-12 05:12:02
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    CNMARC304字段和314字段責(zé)任附注方式解析
    無正題名文獻(xiàn)著錄方法評述
    基于LayeredWindow的異形窗體局部刷新
    中文信息(2014年2期)2014-03-06 23:49:14
    關(guān)于CNMARC的3--字段改革的必要性與可行性研究
    巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
    就這樣玩會(huì)VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    WinCE.net下圖形用戶界面的開發(fā)
    马山县| 孝义市| 辽宁省| 赤水市| 贵定县| 阳曲县| 安龙县| 绥棱县| 惠水县| 葵青区| 海原县| 鄂托克前旗| 定陶县| 石嘴山市| 皋兰县| 景洪市| 天津市| 子长县| 乐业县| 菏泽市| 邢台市| 体育| 万山特区| 汕头市| 绥棱县| 儋州市| 抚顺县| 贡觉县| 利川市| 康保县| 姚安县| 枣庄市| 北京市| 文昌市| 永靖县| 合山市| 河津市| 江陵县| 彭阳县| 南京市| 上蔡县|