• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

ADODB với Access, DataGrid, DataReport, DE, DAO

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Điều hành viên: Điều hành

halogencr
Bài viết: 2
Ngày tham gia: T.Bảy 24/10/2009 11:20 am

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi halogencr » T.Sáu 30/10/2009 10:45 am

boy1234 đã viết:Chùi giờ này vẫn còn kiểu xin Project như vầy nữa! Bạn nên làm theo cách hiểu biết của mình đi! Đến đâu khó khăn thi hỏi! Có thể tham khảo 1 số mã nguồn có trong forum. Chứ kêu làm dùm chắc không ai làm dùm đâu bạn nhé!



Mình không biết làm thế nào để lấy dữ liệu từ file text rồi gán cho nó các giá trị. Nếu ai đã từng làm qua thì hướng dẫn giúp sẽ nhanh hơn chứ mình không yêu cầu viết giúp cả project. Cảm ơn bạn nhé



mrdeeds88
Bài viết: 4
Ngày tham gia: T.Hai 05/10/2009 10:42 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi mrdeeds88 » T.Sáu 13/11/2009 1:20 am

# '......
# If Adodc1.Recordset.EOF Then
# MsgBox "chu'a có"
# ' Hãy ghi vào Ði
# '.....
# Else
# MsgBox "có rô`i"
# 'Thôi Ðu'`ng ghi nu'a
# Exit sub
# end if

Đây là đoạn code mà bác truongphu có giúp 1 bạn về việc kiểm tra việc trùng dữ liệu!
Trước hết thanks bác nhiều!
Tuy nhiên,mình có làm như trên nhưng mà mặc dù nhập ko trùng nó có nhập nhưng lại hiện ô báo có rồi.Trong khi đáng ra nó phải ghi chưa có!
Ngoài ra,em nhập trùng,nó báo trùng,xong rồi nó vẫn nhập vào=.='.
Đại loại là lúc nào nó cũng báo trùng và nhập luôn,bất kể điều kiên!
Bác xem qua code giùm em nhé ^^! sắp thi rùi :D!hì hì thanks bác trước!
a = MsgBox("Ban co muon cap nhap du lieu ?", vbYesNo)
If a = vbYes Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find "masv='" & Text1.Text & "'"

If Adodc1.Recordset.EOF Then
MsgBox "Thong tin nhap hop le va chua trung!"
Adodc1.Recordset.Update
Else
MsgBox "Ma sinh vien nay da duoc nhap roi,Hay kiem tra lai!"
Adodc1.Recordset.CancelBatch
Exit Sub
End If
End If

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Tư 18/11/2009 8:18 pm

Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. a = MsgBox("Ban co muon cap nhap du lieu ?", vbYesNo)
  3. If a = vbYes Then
  4. Adodc1.Recordset.MoveFirst
  5. Adodc1.Recordset.Find "masv='" & Text1.Text & "'"
  6.  
  7. If Adodc1.Recordset.EOF Then
  8. MsgBox "Thong tin nhap hop le va chua trung!"
  9. Thêm
  10. Else
  11. MsgBox "Ma sinh vien nay da duoc nhap roi,Hay kiem tra lai!"
  12. Adodc1.Recordset.CancelBatch
  13. Exit Sub
  14. End If
  15. End If
  16. End Sub
  17.  
  18. Private Sub Thêm()
  19. Adodc1.Recordset.AddNew
  20. Adodc1.Recordset.Fields("masv") = Text1
  21. Adodc1.Recordset.Fields("tenSV") = Text2
  22. Adodc1.Recordset.Update
  23. End Sub
Tập tin đính kèm
ADODC1 find.rar
(8.14 KiB) Đã tải 548 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Code mẫu về kết nối CSDL

Gửi bàigửi bởi truongphu » T.Tư 18/11/2009 8:24 pm

Mã: Chọn hết

  1. Dim datPrimaryRS As New Connection
  2.  
  3. Private Sub Form_Load()
  4. sConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data.mdb"
  5. datPrimaryRS.ConnectionString = sConnectString
  6. datPrimaryRS.Open
  7.  
  8. End Sub
Tập tin đính kèm
New Folder.rar
(7.19 KiB) Đã tải 455 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
HINCUTIN
Thành viên chính thức
Thành viên chính thức
Bài viết: 18
Ngày tham gia: T.Hai 16/11/2009 8:53 pm
Has thanked: 3 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi HINCUTIN » T.Sáu 20/11/2009 5:18 pm

Xin hỏi đây là lỗi j` : (Tui muốn hiện dữ liệu từ access vào datagrid ) :
Option Explicit
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub Form_Load()
If cnn.State = adStateOpen Then cnn.Close
cnn.CursorLocation = adUseClient
cnn.Provider = "Microsoft.Jet.0ledb.4.0"
cnn.ConnectionString = "data source =" & App.Path & "data\db1.mdb"
cnn.Open
rs.LockType = adLockOptimistic
rs.CursorType = adOpenStatic
rs.Open "SINHVIEN", cnn
Set DataGrid1.DataSource = rs

End Sub
khi chạy chương trình thì nó toàn báo " provider cannot be found " là sao nhỉ ?
khai báo thư viện ADO 2.6 rồi
Đời sinh viên có 2 điều đáng nhớ.
Thứ 1 là AOE.
Thứ 2 là cô bạn lớp bên.

boy1234
Guru
Guru
Bài viết: 448
Ngày tham gia: T.Hai 13/10/2008 3:12 pm
Đến từ: Dĩ An - Bình Dương
Been thanked: 32 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi boy1234 » T.Sáu 20/11/2009 5:27 pm

Up cái Project lên luôn đi! Chứ hỏi kiểu này khó đoán lỗi gì? Vì có thể bị lỗi chổ khác!
Dạo này nghiện honda SS50

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Sáu 20/11/2009 5:41 pm

HINCUTIN đã viết:cnn.Provider = "Microsoft.Jet.0ledb.4.0"

sửa lại:

Mã: Chọn hết

  1. cnn.Provider = "Microsoft.Jet.Oledb.4.0"
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Tư 25/11/2009 10:07 am

datagird chỉ hiện thị 1 cột
gửi bởi tieubavuong » T.Ba 17/11/2009 12:51 pm

trong câu lệnh sql em muốn select tất cả(*) ,nhưng trong datagirl e muốn nó chỉ hiển thị 1 cột,hoac vài cột cần thiết.
ai bit bảo e với
thank

p/s : data.Columns(0).Visible = False. ---> tu minh lam van tot hon.hihi
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

DataReport với Recordset có Group By

Gửi bàigửi bởi truongphu » T.Tư 09/12/2009 4:06 pm

DataReport với Recordset có Group By

Một số bạn lúng túng:
Mất gần 1 tuần tìm ra hướng(code) làm báo cáo theo Group mà không dùng DataEnvironment.


Sau đây là code (vài dòng) để thể hiện Recordset có Group By ( Sum của số sách theo Khách)
  1. Private Sub Command1_Click()
  2. Set con = CreateObject("ADODB.Connection")
  3. Set rec = CreateObject("ADODB.Recordset")
  4. con.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\db1.mdb"
  5. rec.Open "Select Khách, Sum(Sách) As KKK From Thuê GROUP BY Khách", con, 3, 3
  6. Set DataReport1.DataSource = rec
  7. DataReport1.Show
  8. End Sub


Cũng chẳng có gì lạ phải không? Đúng thế, cũng bình thường. Kèm project:
Tập tin đính kèm
DataReport with Group.rar
(34.39 KiB) Đã tải 570 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Tư 09/12/2009 7:26 pm

DataReport với DataEnvironment có Group By

và đây là dataenvironment có group by
tất cả chỉ thiết kế (design) không cần code
Tập tin đính kèm
DataReport with Group Bô Sung.rar
(38.85 KiB) Đã tải 571 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Heal_the_world
Bài viết: 7
Ngày tham gia: CN 03/08/2008 5:25 pm

Re: 789 câu hỏi & trả lời về file MDB. Cập nhật thường xuyên

Gửi bàigửi bởi Heal_the_world » T.Năm 10/12/2009 9:32 am

truongphu đã viết:91- Xuất dữ liệu từ datagrid ra excel
gửi bởi hoangtukasi vào ngày Thứ 3 04/03/2008 6:21 pm
Mình có một vấn đề này nhé. Mình có một datagrid và một combobox
Bây giờ mình muốn export ra excel những dữ liệu có trong datagrid nó. mình viết bằng vb.


gửi bởi thuat vào ngày Thứ 7 15/03/2008 9:16 pm
Khi bạn chọn lớp thì bạn phải thực hiện một câu lệnh SQL để lấy về số học sinh của lớp được hiển thị ở cblop về một Recordset rồi đưa số học sinh đó từ Recordeset vào datagrid. Để đưa dữ liệu trong datagrid ra Excel thì bạn chỉ việc đưa dữ liệu trong Recordset đó ra Excel mà thôi.



hịc hịc anh ơi , em không hiểu lắm ,anh cho em xin 1 cái thí dụ nhỏ... đưa dữ liệu từ datagrid ra excel .

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Năm 10/12/2009 9:59 am

DataGrid sang Excel

1- DataGrid là bảng kê thụ động, chúng thể hiện tất cả những gì có trong Recordset; do đó ta nói DataGrid sang Excel thì thực chất là chuyển các dữ liệu từ Recordset sang Excel

2- Để Recordset sang Excel; ta có rất nhiều cách; ví dụ gợi ý:
a- làm thủ công: sử dụng VBA/Excel,
xem bài viết "Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6"
viewtopic.php?f=22&t=10177&start=0

lần lượt duyệt Recordset từng Field và đưa giá trị nầy qua file Xls

b- sử dụng hàm: Dùng câu SQL SELECT * INTO (dấu * là tương ứng với những gì có trên DataGrid) để tạo một bảng Backup
Dùng hàm Access2Excel để tạo ngay một file Excel có đủ dữ liệu nêu trên
Hàm Access2Excel tôi viết, cũng trong Topic nầy, trang 2 hay 3 gì đó...
tại đấy có Project thí dụ, bạn cứ down về dùng

Cũng dễ, phải không?
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

haquocquan
Thành viên chính thức
Thành viên chính thức
Bài viết: 12
Ngày tham gia: T.Năm 26/11/2009 10:53 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi haquocquan » T.Bảy 12/12/2009 10:52 pm

Các pác cho em hỏi: em không biết kết nối ODBC với file FoxPro.
Các pác cho em xin code nhé: kết nối và lấy dữ liệu từ file DBF vào một table ACCESS luôn. (máy em đã được cài sẵn ODBC)

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » CN 13/12/2009 8:28 am

1- Góc trên trái mọi trang web của Forum có "Tìm kiếm" và "Tìm kiếm nâng cao"
Hầu như mọi câu hỏi đều được Tìm kiếm thỏa mãn trong đa số...
Vậy thì, trước tiên bạn phải Search đã chứ
2-
haquocquan đã viết:em không biết kết nối ODBC với file FoxPro

cũng trong Topic nầy, thuytrang2542000 đã hướng dẫn cụ thể:
viewtopic.php?f=7&t=3942&p=29065&hilit=ODBC+foxpro#p29065
3-
haquocquan đã viết:kết nối và lấy dữ liệu từ file DBF vào một table ACCESS luôn

các bài viết có liên quan cũng có trong Topic nầy, giờ thì bạn phải tập search, dzậy mới là cách học của SV chứ!
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Truy vấn số thứ tự trong access

Gửi bàigửi bởi truongphu » T.Bảy 19/12/2009 7:50 pm

Truy vấn số thứ tự trong access
Đây là đề tài khó! trước giờ chưa giải quyết được, trong khi các hệ CSDL khác thì đã giải quyết

Giả sử ta có field SBD dạng rời rạc như sau:
MA001, MA002, MA0012, MA0017, MA0021, MA0031, MA0033

Lệnh truy vấn sắp xếp dữ liệu theo SBD quá dễ:

Mã: Chọn hết

"SELECT * FROM table1 ORDER BY SBD"

Đặt tên cho Recordset trên là yy

Mã: Chọn hết

"SELECT * FROM table1 AS yy ORDER BY SBD"

Câu truy vấn số thứ tự từ yy sẽ là:

Mã: Chọn hết

(Select Count(SBD) From table1 as xx WHERE xx.SBD<= yy.SBD) AS STT)


Kết quả:
  1. rec.Open "Select (Select Count(SBD) From table1 as xx WHERE xx.SBD<= yy.SBD) AS STT,* from table1 as yy ORDER BY SBD"


OK? :>
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » CN 20/12/2009 10:54 am

truongphu đã viết:Truy vấn số thứ tự trong access
Đây là đề tài khó! trước giờ chưa giải quyết được, trong khi các hệ CSDL khác thì đã giải quyết

Giả sử ta có field SBD dạng rời rạc như sau:
MA001, MA002, MA0012, MA0017, MA0021, MA0031, MA0033


Tôi đã test với các field khác: chỉ cần số liệu không giống nhau là OK tuốt, integer, string... vv

Thêm nữa: Độ rộng của mỗi cột trên dataGrid có thể khai khi thiết kế, nhưng nếu Recordset mở thêm cột mới thì lộn xộn, ta có thể khai bằng code, thay đổi độ rộng lúc runtime thì chắc hơn

Sau đây là Project test: STT dưa trên các trường lần lượt: ABD, Ho ten, ngay sinh, noi sinh, trường, lop, số tiền
Và kỹ thuật điều chỉnh độ rộng của cột

Hay Không? :>
Tập tin đính kèm
STT và Col width.rar
(9.61 KiB) Đã tải 497 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

tony86
Bài viết: 7
Ngày tham gia: CN 06/09/2009 12:33 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi tony86 » T.Năm 25/02/2010 8:28 am

Chú TruongPhu có thể add nick yahoo <hieutt86> của cháu được không ạh :x Có vấn đề không thể giải quyết mà post lên đây chắc không đủ. :D

Hình đại diện của người dùng
click_once
Thành viên chính thức
Thành viên chính thức
Bài viết: 17
Ngày tham gia: T.Năm 08/10/2009 11:03 am
Liên hệ:

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi click_once » T.Năm 25/02/2010 4:38 pm

mọi người ơi mình không biết tí nào về SQL server cả? nhưng bây giờ phải làm đề tài thực tập sử dụng vb6+sql server 2000. mình mới cài sql server 2000 vào nhưng trong phần SQL server Group chỉ có mỗi cái (local)(Windows NT) thôi. giờ mình muốn tạo thêm Group mới và thêm vài INSTANCE(hình như còn được gọi là SERVER nữa thì phải) nữa thì làm thế nào? mình tạo vài cái nhưng nó toàn báo cái mình vừa tạo không tồn tại?
Ai biết xin giúp đỡ với
cám ơn nhiều!chúc mọi người vui vẻ!!!!!!!!!!!!!!
mail: superlazy198x@gmail.com
Đời là bể khổ mà chúng sinh thì chả ai biết bơi...........

tony86
Bài viết: 7
Ngày tham gia: CN 06/09/2009 12:33 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi tony86 » T.Sáu 26/02/2010 10:00 am

Tình hình là thế này, mình có 1 cái CSDL Access, sau khi query dữ liệu xong thì cho vào DataGridView, sau đó xuất 1 vài thông tin trên DataGridView ra file Text, bây giờ mình muốn đọc cái file text đó roy nạp vào giống như là lúc trước khi xuất thông tin ra.

File Text nó chỉ đơn giản bao gồm nhiều dòng, mỗi dòng là 1 dãy mã, <ký hiệu Tab> và 1 con số
ví dụ:
0909333444<vbTab>5
01234567890<vbTab>3

Mình dùng StreamReader xài ReadToEnd roy cắt cái chuỗi nó ra thành từng chuỗi tương ứng với từng dòng trong file text, cho nó vào mảng chuỗi 1 chiều.

Sau đó cứ với mỗi chuỗi mình lại tách ra thành 2 phần, phần đầu là dãy mã A, phần sau là con số B.
Đến đây mình query lại CSDL và đặt lên DataGridView, mình dùng vòng lặp để kiểm tra dãy mã A với column "MaHH" trên datagridview, nếu mà trùng khớp thì điền con số B vào column "SL" tương ứng.

Nhưng mà khi chạy thì nó chỉ điền con số B của dòng mã đầu tiên. Dùng breakpoint để xem thì vòng lặp i đầu tiên (vòng lặp dãy mã) khi kiểm tra với trên DataGridView thì nó điền vào khi tới dòng j tương ứng.

Nhưng mà tới vòng lặp i thứ 2 trở đi, dù nó chạy tới dòng j tương ứng nó vẫn bị bỏ wa ???

Thật sự là mình bí cái chỗ này roai, có ai giúp mình được không?
Dim s1 As StreamReader
Dim strData As String()

Try
s1 = New StreamReader(Me.lvListHD.SelectedItems(0).SubItems(1).Text _
& Me.lvListHD.SelectedItems(0).SubItems(2).Text & ".txt")
Catch ex As Exception
MessageBox.Show("")
Exit Sub
End Try

'Đọc hết và tách ra thành dãy chuỗi
strData = s1.ReadToEnd().Split(CChar(vbNewLine))

Me.groupboxEdit.Visible = False

Dim a As Integer = 0
Dim strTmp As String
strTmp = Me.lvListHD.SelectedItems(0).SubItems(2).Text
a = strTmp.Length

Me.txtSoHD.Text = strTmp.Substring(Me.txtNCC.Text.Length + 5, a - Me.txtNCC.Text.Length - 6)

Call btnCreate_Click(btnCreate, Nothing)

For i = 0 To strData.Length - 1
If strData(i).Length > 3 Then
strTmp = strData(i).Substring(0, strData(i).IndexOf(CChar(vbTab)))
a = CInt(strData(i).Substring(strData(i).IndexOf(CChar(vbTab)) _
, strData(i).Length - strData(i).IndexOf(CChar(vbTab))))

For j = 0 To Me.dgvMain.RowCount - 1
If StrComp(Me.dgvMain.Rows(j).Cells("MaHH").Value.ToString, strTmp) = 0 Then
Me.dgvMain.Rows(j).Cells("SL").Value = a
End If
Next j
End If
Next i
End Sub

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 510 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Sáu 26/02/2010 1:11 pm

tony86 đã viết:Đến đây mình query lại CSDL và đặt lên DataGridView, mình dùng vòng lặp để kiểm tra dãy mã A với column "MaHH" trên datagridview, nếu mà trùng khớp thì điền con số B vào column "SL" tương ứng.


1- Với VB6, để edit giá trị của một field, bạn chỉ cần dùng câu query:
  1. Recordset.Open "Update table1 SET SL = '5' Where MaHH = '0909333444'"


2- Tuy nhiên bạn đang viết trên ngôn ngữ vb.net, do đó bạn nên gởi câu hỏi nầy tại box Net:

Kết nối SQLserver+VB.net+Crystal Report (toàn bộ hỏi ở đây)

Kết nối CSDL Access trong VB.Net..
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “Ứng dụng Quản lý và Cơ sở dữ liệu”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách