Cara untuk mengambil dan mengupdate kolom teks Server SQL yang menggunakan ADO

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 180368 - Melihat produk di mana artikel ini berlaku.
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan bagaimana untuk mengakses dan memperbarui bidang teks besar (Biner besar objek/BLOBS) menggunakan objek Data ActiveX (ADO). Hal ini dicapai dengan menggunakan GetChunk dan AppendChunk metode ADODB RecordSet bidang objek.

INFORMASI LEBIH LANJUT

Langkah demi langkah contoh proyek

  1. Membuka sebuah proyek baru. Form1 dibuat secara default.
  2. Dari Project menu, klik Referensi, dan mengatur referensi pada perpustakaan objek Data ActiveX Microsoft.
  3. Menambahkan modul standar baru untuk proyek Anda, dan paste berikut kode:
       Global cn As ADODB.Connection
       Global cmd1 As ADODB.Command
       Global rsset As ADODB.Recordset
    
       Const BLOCKSIZE As Long = 4096
    
       Public Sub ColumnToFile(Col As ADODB.Field, DiskFile As String)
        'Retrieves data from the database and puts it into a temp file on
        'the hard drive.
        'The size of the chunk is in the variable BLOCKSIZE (4096).
    
       Dim NumBlocks As Long  'Holds the number of chunks.
       Dim LeftOver As Long   '# of chars left over after last whole chunk.
       Dim strData As String
       Dim DestFileNum As Long
       Dim I As Long
       Dim ColSize As Long
    
       'Make sure that you aren't in an empty recordset.
        If Not rsset.EOF And Not rsset.BOF Then
        ColSize = Col.ActualSize
    
       'If filelength > 0, then it is soiled:
       ' throw away contents.
        If Len(Dir$(DiskFile)) > 0 Then
          Kill DiskFile
        End If
    
        DestFileNum = FreeFile
        Open DiskFile For Binary As DestFileNum
        NumBlocks = ColSize \ BLOCKSIZE
        LeftOver = ColSize Mod BLOCKSIZE
    
        'Now Write data to the file in chunks.
         For I = 1 To NumBlocks
         strData = String(BLOCKSIZE, 0)
         strData = Col.GetChunk(BLOCKSIZE)
         Put DestFileNum, , strData
         Next I
         strData = String(LeftOver, 0)
         strData = Col.GetChunk(LeftOver)
         Put DestFileNum, , strData
    
         Close DestFileNum
         End If
          End Sub
    
         Sub FileToColumn(Col As ADODB.Field, DiskFile As String)
         'Takes data from the temp file and saves it to the database.
    
           Dim strData As String
           Dim NumBlocks As Long
           Dim FileLength As Long
           Dim LeftOver As Long
           Dim SourceFile As Long
           Dim I As Long
    
           SourceFile = FreeFile
           Open DiskFile For Binary Access Read As SourceFile
           FileLength = LOF(SourceFile)
           If FileLength = 0 Then
            Close SourceFile
            MsgBox DiskFile & " Empty or Not Found."
           Else
            NumBlocks = FileLength \ BLOCKSIZE
            LeftOver = FileLength Mod BLOCKSIZE
            Col.AppendChunk Null
            strData = String(BLOCKSIZE, 0)
            For I = 1 To NumBlocks
             Get SourceFile, , strData
             Col.AppendChunk strData
            Next I
            strData = String(LeftOver, 0)
            Get SourceFile, , strData
            Col.AppendChunk strData
            rsset.Update
            Close SourceFile
           End If
          End Sub
    
          Public Sub FileToForm(DiskFile As String, SomeControl As Control)
           'Retrieves data from the temp file and puts it onto the control.
    
           Dim SourceFile As Long
           Dim FileLength As Long
           Dim strData As String
    
           SourceFile = FreeFile
           Open DiskFile For Binary Access Read As SourceFile
           FileLength = LOF(SourceFile)
           If FileLength = 0 Then
            Close SourceFile
            MsgBox DiskFile & " Empty or Not Found."
           Else
            strData = String(FileLength, 0)
            Get SourceFile, , strData
            SomeControl.Text = strData
            Close SourceFile
           End If
          End Sub
    
          Sub FormToFile(DiskFile As String, SomeControl As Control)
           'Saves data from the form into a temp file on the local hard drive.
    
           Dim DestinationFile As Long
           Dim FileLength As Long
           Dim strData As String
    
           If Len(Dir$(DiskFile)) > 0 Then
            Kill DiskFile
           End If
           DestinationFile = FreeFile
           Open DiskFile For Binary As DestinationFile
           strData = SomeControl.Text
           Put DestinationFile, , strData
           Close DestinationFile
          End Sub
  4. Menggunakan default Form1:
    1. Tambahkan RichTextBox kontrol, dan menetapkan yang Nama properti untuk "rtbText."
    2. Tambahkan CommandButton kontrol, dan menetapkan yang Nama properti untuk "cmdPrev" dan Keterangan properti untuk "Prev."
    3. Tambahkan CommandButton kontrol, dan menetapkan yang Nama properti untuk "cmdNext" dan Keterangan properti untuk "Berikutnya."
    4. Tambahkan CommandButton kontrol, dan menetapkan yang Nama properti untuk "cmdSave" dan Keterangan properti untuk "Update."
  5. Paste kode berikut ke dalam bentuk:
       Option Explicit
    
       Dim DiskFile As String
    
          Private Sub cmdNext_Click()
           If (rsset.RecordCount > 0) And (Not rsset.EOF) Then
            rsset.MoveNext
            If Not rsset.EOF Then
             rtbText.Text = ""
             ColumnToFile rsset.Fields("pr_info"), DiskFile
             FileToForm DiskFile, rtbText
            Else
             rsset.MoveLast
            End If
           End If
          End Sub
    
          Private Sub cmdPrev_Click()
           If (rsset.RecordCount > 0) And (Not rsset.BOF) Then
            rsset.MovePrevious
            If Not rsset.BOF Then
             rtbText.Text = ""
             ColumnToFile rsset.Fields("pr_info"), DiskFile
             FileToForm DiskFile, rtbText
            Else
             rsset.MoveFirst
            End If
           End If
          End Sub
    
          Private Sub cmdSave_Click()
           FormToFile DiskFile, rtbText
           FileToColumn rsset.Fields("pr_info"), DiskFile
          End Sub
    
          Private Sub Form_Activate()
           rtbText.Text = ""
           If rsset.RecordCount > 0 Then
            rsset.MoveFirst
            ColumnToFile rsset.Fields("pr_info"), DiskFile
            FileToForm DiskFile, rtbText
           End If
          End Sub
    
          Private Sub Form_Load()
    
           Dim ConnectString As String
           Dim anerror As ADODB.Error
           Dim Sql As String
    
           On Error GoTo handler
    
           DiskFile = App.Path & "\BLOB.txt"
    
           'Set the connect string to use pubs on your SQL server.
           ConnectString = _
           "Driver={SQL SERVER};Server=<yourserver>;Database=pubs;UID=sa;pwd=;"
           Sql = "SELECT pr_info FROM pub_info;"
           Set cn = New ADODB.Connection
           cn.ConnectionString = ConnectString
           cn.Open
           Set rsset = New ADODB.Recordset
           rsset.Open Sql, cn, adOpenKeyset, adLockOptimistic, adCmdText
          Exit Sub
    
          handler:
           For Each anerror In cn.Errors
            Debug.Print anerror.Number & ":  " & anerror.Description & _
            " - " & anerror.SQLState
           Next anerror
          End Sub
  6. Ubah ServerName di connectstring untuk nama server.
  7. Menjalankan contoh proyek. The RichTextBox akan berisi catatan pertama recordset.
  8. Klik Berikutnya. Perhatikan bahwa isiRichTextBox mengubah ke dokumen selanjutnya sampai Anda mencapai rekor terakhir. The Berikutnya tombol panggilan recordset MoveNext metode dan kemudian panggilan ColumnToFile dan FileToForm metode.
  9. Klik Prev. Perhatikan bahwa isiRichTextBox mengubah rekor sebelumnya sampai Anda mencapai yang pertama Catatan. The Prev tombol panggilan recordset MovePreviousmetode dan kemudian panggilan ColumnToFile dan FileToForm metode.
  10. Ketik sesuatu yang baru dalam kotak teks, dan kemudian klik Pemutakhiran untuk mengubah bidang teks di apa pun merekam Anda berada di. The Pemutakhiran tombol panggilanFormToFile dan FileToColumn metode, yang pada gilirannya panggilan recordset Pemutakhiran metode. Data baru harus diperbarui dalam database.

Properti

ID Artikel: 180368 - Kajian Terakhir: 22 Februari 2014 - Revisi: 2.0
Berlaku bagi:
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Office 97 Professional Edition
Kata kunci: 
kbnosurvey kbarchive kbdatabase kbhowto kbmt KB180368 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:180368

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com