- Tham gia
- 30/5/06
- Bài viết
- 1,798
- Được thích
- 4,706
- Giới tính
- Nam
Mã hóa các thông tin nhạy cảm
Với ví dụ trên các bạn sẽ thấy rằng việc lưu thông tin nhạy cảm như:
_Tên người truy nhập.
_Mật khẩu.
Chúng ta không hề có mã hóa.
Do đó nếu các bạn có yêu cầu cao hơn chúng ta phải dùng các thuật toán mã hóa.
Đối với các ứng dụng như thế này, thông thường sau khi thao tác trích rút dữ liệu chúng ta có một recordset lấy về. Chúng ta muốn xuất dữ liệu từ đây ra MS.Excel thì sao? Chúng ta có thể dùng thủ tục sau:
Đoạn mã trên tôi tham khảo tại trang web của M$.
Chúc các bạn cuối tuần vui vẻ.
Xin các bạn góp ý về levanduyet@yahoo.com
Lê Văn Duyệt
Với ví dụ trên các bạn sẽ thấy rằng việc lưu thông tin nhạy cảm như:
_Tên người truy nhập.
_Mật khẩu.
Chúng ta không hề có mã hóa.
Do đó nếu các bạn có yêu cầu cao hơn chúng ta phải dùng các thuật toán mã hóa.
Đối với các ứng dụng như thế này, thông thường sau khi thao tác trích rút dữ liệu chúng ta có một recordset lấy về. Chúng ta muốn xuất dữ liệu từ đây ra MS.Excel thì sao? Chúng ta có thể dùng thủ tục sau:
Mã:
Sub RecordsetToRange(rst As ADODB.Recordset, wsName As String)
Dim xlWb As Workbook
Dim xlWs As Worksheet
Dim fldCount As Long, recCount As Long
Dim iCol As Integer, iRow As Long
Dim recArray As Variant
If rst Is Nothing Then 'i.e You did not initial the variance
MsgBoxUni VNI("Baïn chöa khôûi taïo recordset." & _
"Baïn xem laïi!"), vbOKOnly, VNI("Thoâng baùo")
Exit Sub
End If
If rst.RecordCount = 0 Then
MsgBoxUni VNI("Khoâng coù döõ lieäu ñeå xuaát"), vbOKOnly, VNI("Thoâng baùo")
Exit Sub
Else
MsgBoxUni VNI("Soá record laø: " & rst.RecordCount), vbOKOnly, VNI("Thoâng baùo")
End If
'Check the worksheet
If Not SheetExists(wsName) Then
MsgBoxUni VNI("Worksheet khoâng toàn taïi." & vbCrLf & _
"Xin kieåm tra laïi."), vbOKOnly, VNI("Thoâng baùo")
Exit Sub
End If
Set xlWb = Application.ThisWorkbook
Set xlWs = xlWb.Worksheets(wsName)
'Delete before export data
xlWs.Cells.Clear 'Delete data on this worksheet first
' Copy field names to the first row of the worksheet
fldCount = rst.Fields.Count
For iCol = 1 To fldCount
xlWs.Cells(1, iCol).Value = rst.Fields(iCol - 1).Name
Next
' Check version of Excel
If Val(Mid(Application.Version, 1, InStr(1, Application.Version, ".") - 1)) > 8 Then
'EXCEL 2000,2002,2003, or 2007: Use CopyFromRecordset
' Copy the recordset to the worksheet, starting in cell A2
xlWs.Cells(2, 1).CopyFromRecordset rst
'Note: CopyFromRecordset will fail if the recordset
'contains an OLE object field or array data such
'as hierarchical recordsets
Else
'EXCEL 97 or earlier: Use GetRows then copy array to Excel
' Copy recordset to an array
recArray = rst.GetRows
'Note: GetRows returns a 0-based array where the first
'dimension contains fields and the second dimension
'contains records. We will transpose this array so that
'the first dimension contains records, allowing the
'data to appears properly when copied to Excel
' Determine number of records
recCount = UBound(recArray, 2) + 1 '+ 1 since 0-based array
' Check the array for contents that are not valid when
' copying the array to an Excel worksheet
For iCol = 0 To fldCount - 1
For iRow = 0 To recCount - 1
' Take care of Date fields
If IsDate(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = Format(recArray(iCol, iRow))
' Take care of OLE object fields or array fields
ElseIf IsArray(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = "Array Field"
End If
Next iRow 'next record
Next iCol 'next field
' Transpose and Copy the array to the worksheet,
' starting in cell A2
xlWs.Cells(2, 1).Resize(recCount, fldCount).Value = _
TransposeDim(recArray)
End If
' Auto-fit the column widths and row heights
With xlWs.Cells
.Columns.AutoFit
.Rows.AutoFit
End With
' Close ADO objects
rst.Close
Set rst = Nothing
' Release Excel references
Set xlWs = Nothing
Set xlWb = Nothing
End Sub
Đoạn mã trên tôi tham khảo tại trang web của M$.
Chúc các bạn cuối tuần vui vẻ.
Xin các bạn góp ý về levanduyet@yahoo.com
Lê Văn Duyệt