• 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

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: 509 time

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

Gửi bàigửi bởi truongphu » CN 30/05/2010 1:28 pm

chiponline89 đã viết:sửa dùm em , rồi giải thích hộ em luôn


1- Sửa: Toàn bộ project của bạn, từ ActiveX đến file DuLieu1.mdb đều quá cũ, access 97!! hic
không tương thích với các chuẩn code ADO hiện tại
do đó bạn ghi câu code

Mã: Chọn hết

hanghoa1.Open SQL, cn, 3, 3

Không chạy và báo lỗi là phải.
Cái nầy lần đầu tôi gặp. Bạn chơi quá ác

Giải quyết: Bỏ Project cũ với các cấu trúc code cũ đã khai
Làm lại với form mới, có tải MS Form 2.0 (nếu máy không cài office XP trở lên thì không chạy!)
File mdb: bỏ, làm lại với file db1.mdb (office 2002, máy không cài là thua à nghen)
các table và query đều giữ nguyên, kể cả các field có font 1 byte gì đó, rất khó chịu!
(xem như bạn nợ tôi một vấn đề lớn) :>

2- Giải thích hộ:
Chả có gì mà giải thích thêm, code đơn giản như của bạn, gọn
  1. Dim cn As New ADODB.Connection
  2. Dim rs As New ADODB.Recordset
  3.  
  4. Private Sub CommandButton1_Click()
  5.     If Not rs.EOF Then rs.MoveNext Else rs.MoveLast
  6.     If rs.AbsolutePosition = -3 Then rs.MoveLast
  7. End Sub
  8.  
  9. Private Sub CommandButton2_Click()
  10.     If Not rs.BOF Then rs.MovePrevious Else rs.MoveFirst
  11.     If rs.AbsolutePosition = -2 Then rs.MoveFirst
  12. End Sub
  13.  
  14. Private Sub CommandButton3_Click()
  15.     rs.MoveFirst
  16. End Sub
  17.  
  18. Private Sub CommandButton4_Click()
  19.     rs.MoveLast
  20. End Sub
  21.  
  22. Private Sub Form_Load()
  23.     cn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " _
  24.             & App.Path & "\db1.mdb"
  25.     rs.Open "Select * From T_hanghoa", cn, 3, 3
  26.     Set Text1.DataSource = rs
  27.         Text1.DataField = "mah"
  28.     Set Text2.DataSource = rs
  29.         Text2.DataField = "tenh"
  30.     Set Text3.DataSource = rs
  31.         Text3.DataField = "mancc"
  32. End Sub
  33.  
  34. Private Sub Text1_Change()
  35.     Label4.Caption = "Record thu': " & rs.AbsolutePosition
  36. End Sub
  37.  
Tập tin đính kèm
Bao Cao.rar
(32.4 KiB) Đã tải 479 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: 509 time

Dùng 2 vòng lặp duyệt một field của recordset

Gửi bàigửi bởi truongphu » T.Tư 02/06/2010 7:32 am

Dùng 2 vòng lặp duyệt một field của recordset

Code sau đây dò field thứ 3 (cột 4)
  1. Private Sub Command23_Click()
  2. Dim i%, rec2 As New ADODB.Recordset: Set rec2 = rec.Clone
  3. rec.MoveFirst
  4. Do While Not rec.EOF
  5.     rec2.MoveFirst
  6.     rec2.Move rec.AbsolutePosition
  7.     Do While Not rec2.EOF
  8.         If rec(3).Value = rec2(3).Value Then MsgBox "Có Trùng Ðây:   Field = '" & rec.Fields(3).Name & "'" & vbCrLf & _
  9.         "record thu' " & rec.AbsolutePosition & " trùng record thu' " & rec2.AbsolutePosition & vbCrLf & _
  10.         "Làm cái gì thì làm"
  11.         rec2.MoveNext
  12.     Loop
  13. rec.MoveNext
  14. Loop
  15. End Sub
o0o--truongphu--o0o

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

junior20
Bài viết: 1
Ngày tham gia: T.Tư 02/06/2010 2:35 pm

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

Gửi bàigửi bởi junior20 » T.Tư 02/06/2010 2:50 pm

Cho mÌnh Hỏi: Mình kết nối dữ liệu bằng DAO , mình muốn tính tổng Tiền Của 1 cột trong DBGrid , sau đó xuất ra text tương ứng trên form.
VD: Cột cần tính của mình là cột thứ 5 , với tên là giatri. Ai giúp mình với nha

nguyennhanlk
Bài viết: 2
Ngày tham gia: T.Năm 13/05/2010 4:45 pm

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

Gửi bàigửi bởi nguyennhanlk » T.Tư 02/06/2010 3:16 pm

chào các anh !
em cung moi tap tanh viết vb
em đang dự dịnh viết một phần mềm quản lý mà không biết phải bắt đầu từ đâu viết xong bi lỗi tùm lum . hiện em dang bí :D , mong các anh có suoce code nào không gửi cho em để em nghiên cứu với.
phần mềm em làm gồm : các nút thêm,sửu, xóa, update,huỷ. gồm 4 table kết nói bằng adodb, data gird. mong cac anh giúp đở
---------------------THANK------------------------

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: 509 time

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

Gửi bàigửi bởi truongphu » T.Tư 02/06/2010 5:05 pm

junior20 đã viết:Mình kết nối dữ liệu bằng DAO , mình muốn tính tổng Tiền Của 1 cột trong DBGrid


DBGrid quá xưa, máy tính của tôi không có, bạn lại dùng DAO quá xưa, tôi dám đoán bạn đang dùng Access 97!

-----
vì bạn nêu vấn đề, tôi minh họa DAO với Data1 với MSFlexgrid1
tính Sum 1 cột:
  1. Private Sub Command1_Click()
  2. Data1.RecordSource = "select SUM(ee) AS Sum_ee from table1"
  3. Data1.Refresh
  4. Text1 = Data1.Recordset.Fields("Sum_ee")
  5. Data1.RecordSource = "select * from table1"
  6. Data1.Refresh
  7. End Sub
  8.  
  9. Private Sub Form_Load()
  10. Data1.DatabaseName = App.Path & "\db1.mdb"
  11. End Sub

untitled.JPG


-------
Tập tin đính kèm
Data1 Sum column.rar
(9.5 KiB) Đã tải 436 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: 509 time

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

Gửi bàigửi bởi truongphu » T.Tư 02/06/2010 5:07 pm

nguyennhanlk đã viết:phần mềm em làm gồm : các nút thêm,sửu, xóa, update,huỷ.


Bạn chịu khó tìm, cũng trong đề mục ba mươi mấy trang nầy, có rất nhiều project mẫu, trên cơ sở đấy, bạn có thể sủ dụng...
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: 509 time

DataReport Unicode

Gửi bàigửi bởi truongphu » T.Năm 03/06/2010 4:27 am

DataReport hổ trợ Unicode
* TextBox: hổ trợ hoàn toàn
* Label: dùng function hổ trợ (vnitouni)

  1. Private Sub DataReport_Initialize()
  2.     With DataReport1.Sections("Section1").Controls
  3.     .Item("label1").Caption = ToUni("Ho5 va2 te6n")
  4.     .Item("label2").Caption = ToUni("Tuo63i")
  5.     End With
  6. End Sub


  1. Public Function ToUni(str$) As String 'TrungDung1977
  2.    Dim ansi$, UNI$, i&, sTem$, sUni$, arrUNI() As String
  3.     ansi = "a1|a2|a3|a4|a5|a6|a8|a61a62a63a64a65a81a82a83a84a85A1|A2|A3|A4|A5|A6|A8|A61A62A63A64A65A81A82A83A84A85e1|e2|e3|e4|e5|e6|e61e62e63e64e65E1|E2|E3|E4|E5|E6|E61E62E63E64E65i1|i2|i3|i4|i5|I1|I2|I3|I4|I5|o1|o2|o3|o4|o5|o6|o7|o61o62o63o64o65o71o72o73o74o75O1|O2|O3|O4|O5|O6|O7|O61O62O63O64O65O71O72O73O74O75u1|u2|u3|u4|u5|u7|u71u72u73u74u75U1|U2|U3|U4|U5|U7|U71U72U73U74U75y1|y2|y3|y4|y5|Y1|Y2|Y3|Y4|Y5|d9|D9|"
  4.     UNI = "E1,E0,1EA3,E3,1EA1,E2,103,1EA5,1EA7,1EA9,1EAB,1EAD,1EAF,1EB1,1EB3,1EB5,1EB7,C1,C0,1EA2,C3,1EA0,C2,102,1EA4,1EA6,1EA8,1EAA,1EAC,1EAE,1EB0,1EB2,1EB4,1EB6,E9,E8,1EBB,1EBD,1EB9,EA,1EBF,1EC1,1EC3,1EC5,1EC7,C9,C8,1EBA,1EBC,1EB8,CA,1EBE,1EC0,1EC2,1EC4,1EC6,ED,EC,1EC9,129,1ECB,CD,CC,1EC8,128,1ECA,F3,F2,1ECF,F5,1ECD,F4,1A1,1ED1,1ED3,1ED5,1ED7,1ED9,1EDB,1EDD,1EDF,1EE1,1EE3,D3,D2,1ECE,D5,1ECC,D4,1A0,1ED0,1ED2,1ED4,1ED6,1ED8,1EDA,1EDC,1EDE,1EE0,1EE2,FA,F9,1EE7,169,1EE5,1B0,1EE9,1EEB,1EED,1EEF,1EF1,DA,D9,1EE6,168,1EE4,1AF,1EE8,1EEA,1EEC,1EEE,1EF0,FD,1EF3,1EF7,1EF9,1EF5,DD,1EF2,1EF6,1EF8,1EF4,111,110"
  5.     arrUNI = Split(UNI, ",")
  6.    
  7.     For i = 1 To Len(str)
  8.         If IsNumeric(Mid(str, i + 1, 1)) = False Then
  9.             sUni = sUni & Mid(str, i, 1)
  10.         Else
  11.             sTem = IIf(IsNumeric(Mid(str, i + 2, 1)), Mid(str, i, 3), Mid(str, i, 2))
  12.             i = i + IIf(IsNumeric(Mid(str, i + 2, 1)), 2, 1)
  13.             If InStr(ansi, sTem) > 0 Then sTem = ChrW("&h" & arrUNI(InStr(ansi, sTem) \ 3))
  14.             sUni = sUni & sTem
  15.         End If
  16.     Next
  17.     ToUni = sUni
  18. End Function
  19.  
Tập tin đính kèm
Unicode DataReport.rar
(25.63 KiB) Đã tải 463 lần
o0o--truongphu--o0o

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

ngovanthuc
Bài viết: 2
Ngày tham gia: T.Tư 02/06/2010 8:02 am

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

Gửi bàigửi bởi ngovanthuc » T.Năm 03/06/2010 11:32 pm

Bạn có biết cách nào để in trang A5 trong datareport khi bam vao nut print co san tren bao cao khong

toilaai745
Bài viết: 2
Ngày tham gia: T.Sáu 04/06/2010 12:36 am

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

Gửi bàigửi bởi toilaai745 » T.Sáu 04/06/2010 12:44 am

Ai Cho Mình Hỏi . Mình kết nối dữ liệu bằng DAO ,mình muốn in báo cáo theo điều kiện mình tìm thấy ra datareport thì làm thế nào . Mình có làm nhưng mà cứ xuất ra tất cả , chứ không theo cái điều kiện mà mình tìm kiếm.



Mình có làm bằng cách này , nhưng nó báo lỗi . Vậy ai có thể chỉ giúp mình cách làm không?

Mã: Chọn hết

Private Sub Command1_Click()
Data1.RecordSource = "select*from T_chucvu where macv='" & Text1.Text & "'"
Data1.Refresh
DBGrid1.Refresh
End Sub

Private Sub Command2_Click()
Dim rs As DAO.Recordset
[color=#FFFF40]rs.OpenRecordset "select*from T_chucvu where macv='" & Text1.Text & "'"[/color]Báo Lỗi ở dòng này
Set DataReport1.DataSource = rs
DataReport1.Show
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: 509 time

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

Gửi bàigửi bởi truongphu » T.Sáu 04/06/2010 6:53 am

ngovanthuc đã viết: in trang A5

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: 509 time

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

Gửi bàigửi bởi truongphu » T.Sáu 04/06/2010 6:57 am

toilaai745 đã viết:"select*from T_chucvu where macv='"

dấu * giữa 2 space
toilaai745 đã viết:Set DataReport1.DataSource = rs

Nếu Recordset rs của ADODB thì câu lệnh trên là OK, tiếc rằng rs của DAO nên nó không hổ trợ

-> Muốn dùng datatReport, bạn nên chuyển qua ADO
o0o--truongphu--o0o

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

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

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

Gửi bàigửi bởi NXK1138 » T.Năm 10/06/2010 1:39 pm

Anh Phú giúp em kết nối dữ liệu SQL server 2000 trong mạng LAN thông qua địa chỉ IP với. Tức là kết nối từ một máy client (có địa chỉ IP 10.x.x.12) tới máy Server (có địa chỉ IP 10.x.x.34)
Hãy Sống để không hổ thẹn với lương tâm

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: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 10/06/2010 3:25 pm

(tên máy hay IP cũng như nhau, vì khi dùng tên thì cũng phân giải thành IP mà thôi).

  1. "Provider=SQLOLEDB.1;Password=<database password>;Persist Security Info=False;User ID=<user name>;Initial Catalog=<database name>;Data Source=<server name / IP>;Connect Timeout=15;"


câu hỏi nầy được trả lời rất nhiều lần
o0o--truongphu--o0o

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

toilaai745
Bài viết: 2
Ngày tham gia: T.Sáu 04/06/2010 12:36 am

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

Gửi bàigửi bởi toilaai745 » T.Sáu 11/06/2010 10:11 pm

Cho Mình Hỏi , Khi Mình Tìm Kiếm Tên Hàng , nó Hiện ra Số Lượng Hàng ở cột thứ 3 của DBgrid , vậy mình muốn tính tổng số lượng của cột đó khi mình tìm kiếm được và đưa kết quả tính đc vào text2 thì phải làm thế nào , các bạn giúp mình nhé . Thanks
Tập tin đính kèm
QLHH.rar
QLHH
(6.75 KiB) Đã tải 396 lần

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: 509 time

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

Gửi bàigửi bởi truongphu » T.Bảy 12/06/2010 8:19 am

toilaai745 đã viết:muốn tính tổng số lượng của cột đó khi mình tìm kiếm được và đưa kết quả tính đc vào text2


  1. Private Sub Command1_Click()
  2. Data1.RecordSource = "select SUM(sl) AS Tông from hang where tenh='" & Text1.Text & "'"
  3. Data1.Refresh
  4. Text2 = Data1.Recordset!Tông
  5.  
  6. Data1.RecordSource = "select * from hang where tenh='" & Text1.Text & "'"
  7. Data1.Refresh
  8. 'DBGrid1.Refresh
  9.  
  10. End Sub
  11.  
  12. Private Sub Form_Load()
  13. Data1.DatabaseName = App.Path & "\sh.mdb"
  14. Data1.RecordSource = "select * from hang"
  15. 'Data1.Refresh
  16. Data1.Visible = False
  17. End Sub


Ghi chú: Bạn nên cài Office ít ra 2002, Access của bạn xưa quá!
.
Tập tin đính kèm
DBGrid và Data1.rar
(9.23 KiB) Đã tải 416 lần
o0o--truongphu--o0o

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

Hình đại diện của người dùng
Domino
Bài viết: 4
Ngày tham gia: T.Năm 10/06/2010 3:40 pm

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

Gửi bàigửi bởi Domino » T.Tư 16/06/2010 11:24 pm

Hình ảnh


Thầy ơi cho em hỏi có cách nào để khi mình ấn các nút |< < > >| con trỏ của Datagrid cũng sẽ di chuyển theo ko , em cám ơn thầy .

giacmocuoicung
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Ba 21/10/2008 1:51 pm

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

Gửi bàigửi bởi giacmocuoicung » T.Năm 17/06/2010 12:26 am

Mình nghĩ cái này là ổn.
Nếu bạn muốn chính xác trong khi di chuyển thì có thể đặt thêm 1 biến phụ, và kết hợp với Rs.recordCount
Thỏa sức sáng tạo đi bạn.
Tập tin đính kèm
Pearl.zip
(1.94 KiB) Đã tải 453 lần

Hình đại diện của người dùng
Domino
Bài viết: 4
Ngày tham gia: T.Năm 10/06/2010 3:40 pm

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

Gửi bàigửi bởi Domino » T.Bảy 19/06/2010 8:58 pm

Cám ơn bạn mình đang làm được như bạn nói . Bạn có thể xem giúp mình cái lỗi này không, mình đã kiểm tra nhiều lần Parameter nhưng vẫn không fix được :(
Hình ảnh
Tập tin đính kèm
QLHoctap.rar
Quan ly hoc tap
(53.09 KiB) Đã tải 604 lần

nguyennhanlk
Bài viết: 2
Ngày tham gia: T.Năm 13/05/2010 4:45 pm

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

Gửi bàigửi bởi nguyennhanlk » T.Tư 23/06/2010 11:42 am

chao anh phu !
em co table km(STT;MACTY;TENCTY;SOKM). MACTY QUY ĐỊNH 5 ký tự , khi em thiết kế form có tẽt box lien kết. em nhập vào MACTY 6 ký tự thì nó báo lỗi có cách nào bẫy lổi hay giãi pháp nào ko anh em cám ơn anh nhiều.

Hình đại diện của người dùng
Domino
Bài viết: 4
Ngày tham gia: T.Năm 10/06/2010 3:40 pm

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

Gửi bàigửi bởi Domino » T.Tư 23/06/2010 6:18 pm

nguyennhanlk đã viết:chao anh phu !
em co table km(STT;MACTY;TENCTY;SOKM). MACTY QUY ĐỊNH 5 ký tự , khi em thiết kế form có tẽt box lien kết. em nhập vào MACTY 6 ký tự thì nó báo lỗi có cách nào bẫy lổi hay giãi pháp nào ko anh em cám ơn anh nhiều.


Trong thiết kế text box có thuộc tính Maxlenght mà bạn , muốn giới hạn bao nhiêu ký tự thì điền vào đây .


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