Tạo File, đọc và ghi dữ liệu vào File Access và SQLite

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,434
Được thích
4,053
Giới tính
Nam
ý tưởng từ bài số 10 chủ đề sau


1/ Tôi chia sẻ miễm phí không giới hạn cho bất cứ ai có như cầu thì dùng còn không thì thôi không cần thiết

2/ Quá trình sử dụng có lỗi phát sinh vui lòng mô ta lỗi chi tiết nếu được tôi sẻ viết lại và điều chỉnh code

3/ File úp phía dưới sử dụng tạo File Access và SQLite xong đọc và ghi dữ liệu vào file đã tạo trước đó sử dụng thuần FireDAC trên Delphi
( Không áp dụng cho đọc và ghi dữ liệu file Excel )

1/ Code tạo File

Mã:
Private Const DBsqlite As String = "C:\Database_Server\MyDatabase.sqlite"

Private Sub CreateNewDatabase_DBsqlite()
    Dim Result As Boolean
    Result = CreateNewDatabase(DBsqlite)
    If Result Then
        Debug.Print "Create New Database successfully."
    Else
        Debug.Print "Create New Database Failed"
    End If
End Sub

2/ Code tạo TableName
Mã:
Private Sub CreateTable_DBsqlite()
    Dim sqlCreateTable As Variant 'String
    Dim Result As Boolean
    Dim Tablename As Boolean
   
    sqlCreateTable = "CREATE TABLE MyTableName (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Age INTEGER);"
   
    Tablename = IsTableExists(DBsqlite, "MyTableName")
   
    If Not Tablename Then
        Result = ExecuteSQL(DBsqlite, sqlCreateTable)
       
        If Result Then
            Debug.Print "Table created successfully."
        Else
            Debug.Print "Failed to create table."
        End If
    End If
End Sub

3/ Code INSERT INTO

Mã:
Private Sub Test_InsertInto_MyTableName()
    Dim sqlInsertData As String
    Dim Result As Boolean
   
    Rem Câu lenh SQL de chèn du lieu vào bang
    sqlInsertData = "INSERT INTO MyTableName (Name, Age) VALUES ('John Doe', 30);"
   
    Rem Goi hàm ExecuteSQL de thuc thi câu lenh SQL
    Result = ExecuteSQL(DBsqlite, sqlInsertData)
   
    Rem Kiem tra ket qua và hien thi thông báo
    If Result Then
        Debug.Print "Data inserted successfully."
    Else
        Debug.Print "Failed to insert data."
    End If
   
    Sheet1.Select
    Call GetDataFrom_MyTableName
End Sub

4/ Code lấy dữ liệu đã chèn trước đó

Mã:
Private Sub GetDataFrom_MyTableName()
    Dim i As Long, j As Long
    Dim SQL As Variant
    Dim Data As Variant
    Rem Dim Data() As Variant là loi neu Data = Empty
    Dim base64Data As String

    SQL = "SELECT * FROM MyTableName"

    Rem Goi hàm DLL Delphi và nhan du lieu
    Data = LoadDataFromSQLToVariant(DBsqlite, SQL)
   
    If IsArray(Data) Then
        Cells.ClearContents
        Rem Gán du lieu lên Sheet cua Excel
        For i = LBound(Data, 1) To UBound(Data, 1)
            For j = LBound(Data, 2) To UBound(Data, 2)
                Rem Gán giá tri tu mang data vào ô tuong ung trên Sheet
                Sheet1.Cells(i + 1, j + 1).value = Data(i, j)
            Next j
        Next i
    End If
End Sub

5/ code xoá dữ liệu chèn trước đó

Mã:
Private Sub DeleteDataFrom_MyTableName()
    Dim sqlDeleteData As String
    Dim Result As Boolean
   
    Rem Câu lenh SQL de xóa t?t c? d? li?u t? b?ng
    Rem sqlDeleteData = "DELETE FROM MyTableName WHERE Name = 'John Doe';"
   
    sqlDeleteData = "DELETE FROM MyTableName;"
   
    If IsTableExists(DBsqlite, "MyTableName") Then ''xu lý loi khi MyTableName ko có mà Delete
       
        Rem Goi hàm ExecuteSQL de thuc thi câu lenh SQL
        Result = ExecuteSQL(DBsqlite, sqlDeleteData)
       
        Rem Kiem tra ket qua và hien thi thông báo
        If Result Then
            Debug.Print "Data deleted successfully."
        Else
            Debug.Print "Failed to delete data."
        End If
    End If
End Sub

6/ code DROP TABLE MyTableName đã tạo trước đó

Mã:
Private Sub DropTable_DataFromMyTableName()
    Dim sqlDeleteData As Variant 'String
    Dim Result As Boolean
   
    Rem Câu l?nh SQL d? xóa t?t c? d? li?u t? b?ng
    Rem sqlDeleteData = "DELETE FROM MyTableName WHERE Name = 'John Doe';"
    sqlDeleteData = "DROP TABLE MyTableName;"
   
    If IsTableExists(DBsqlite, "MyTableName") Then ''xu lý loi khi MyTableName ko có mà Delete
   
        Rem Goi hàm ExecuteSQL de thuc thi câu lenh SQL
        Result = ExecuteSQL(DBsqlite, sqlDeleteData)
       
        Rem Kiem tra ket qua và hien thi thông báo
        If Result Then
            Debug.Print "Data deleted successfully."
        Else
            Debug.Print "Failed to delete data."
        End If
    End If
End Sub

Áp dụng cho file Access tương tự như SQLite nhưng lưu ý có câu lệnh SQlite sử dụng chung cho Access tốt nhưng có câu lệnh sẻ lỗi làm đơ thoát Excel

Vì vậy trước khi thực hiện hãy tìm hiểu câu lệnh SQL cho Access và SQlite trước khi sử dụng

vui lòng không trích dẫn bài này vì tôi đang bận viết nhanh một chút úp cho ai đó tò mò thử ... rảnh xem lại bài viết lại cho chỉnh chu hơn

@A-T qua đây thử trước cái trên PC xem ... còn vẫn hàm đó cách sử dụng đó tôi thêm IP,Port vào là truy xuất qua Internet ầm ầm thôi
 

File đính kèm

  • FireMySQL.rar
    4.4 MB · Đọc: 6
Bài trên qua tuần rảnh tôi chỉnh sửa thêm sau ..

Giờ rảnh một tẹo bà tám gợi ý cho ai đó sử dụng hiệu quả hơn trong công việc của Mình

1/ Khi ta sử dụng Excel lưu dữ liệu lên tầm trên 2 MB là khi truy xuất dữ liệu hay mở lên thôi cũng mệt vãi mồ hôi hột ra ..

2/ khi từ bỏ mục số 1 chuyển qua lưu vào file Access thì ta cảm giác như 10 na9m chưa tắm nay tắm mát sạch sẻ thoáng mát thơm tho nhưng khổ nổi file Access Ms chỉ hổ trợ tối đa là 2 GB dữ liệu ( nhưng thực tế chỉ đạt khoãng 1.7 GB dữ liệu gì đó còn lại là các file hệ thông của nó chi chi đó )

3/ khi ta chuyển mục số 2 sang lưu trên Data.SQlite thì nó hổ trợ trên 1 Tỷ GB có nghĩa ta phải có trên 1 Tỷ GB ổ cứng xong lưu dữ liệu hết đời ta xong chuyển cho đời con cháu may ra hết chăng ???!!!

Thực tiễn và ứng dụng

1/ Tạo 1 File Data.SQlite ta lưu dữ liệu thô vì nó không hổ trợ cấu hình mà do lập trình tự viết trình hổ trợ giao diện cho nó xong xử lý trên nền của nó

2/ Tạo Một file Access sử dụng tạo các mối quan hệ tính toán và khi cần ta viết hàm trong các Query cho nó thực thi khi dữ liệu thay đổi thì nó lập tức tính toán cho ta


Ví Dụ:
1 / Tạo 2 bảng dữ liệu là
DataNhap và DataXuat vào file Data.SQlite xong ta lưu dữ liệu vào đó

2/ trên File Access ta tạo một bảng tạm keo
NhapXuatTon xong từ Excel là lưu dữ liệu thô vào DataNhap và DataXuat xong tính toán +-*/ xong lưu vào NhapXuatTon

vậy từ NhapXuatTon ta căn cứ vào đó tạo các mối quan hệ tiếp tính toán trên File Access
======> rất đơn giản ngon bổ rẻ lưu dữ liệu vài đời chưa hết


tạm vậy đi rảnh bà tám sau::?>>
 
Web KT
Back
Top Bottom