• 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

Moderator: Điều hành

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Sun 30/05/2010 1:28 pm

chiponline89 wrote: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

Code: Select all

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.  
Attachments
Bao Cao.rar
(32.4 KiB) Downloaded 573 times


o0o--truongphu--o0o

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Wed 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
Posts: 1
Joined: Wed 02/06/2010 2:35 pm

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

Postby junior20 » Wed 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
Posts: 2
Joined: Thu 13/05/2010 4:45 pm

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

Postby nguyennhanlk » Wed 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------------------------

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Wed 02/06/2010 5:05 pm

junior20 wrote: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


-------
Attachments
Data1 Sum column.rar
(9.5 KiB) Downloaded 526 times
o0o--truongphu--o0o

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Wed 02/06/2010 5:07 pm

nguyennhanlk wrote: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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

DataReport Unicode

Postby truongphu » Thu 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


[vb]Public Function ToUni(str$) As String 'TrungDung1977
Dim ansi$, UNI$, i&, sTem$, sUni$, arrUNI() As String
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|"
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"
arrUNI = Split(UNI, ",")

For i = 1 To Len(str)
If IsNumeric(Mid(str, i + 1, 1)) = False Then
sUni = sUni & Mid(str, i, 1)
Else
sTem = IIf(IsNumeric(Mid(str, i + 2, 1)), Mid(str, i, 3), Mid(str, i, 2))
i = i + IIf(IsNumeric(Mid(str, i + 2, 1)), 2, 1)
If InStr(ansi, sTem) > 0 Then sTem = ChrW("&h" & arrUNI(InStr(ansi, sTem) \ 3))
sUni = sUni & sTem
End If
Next
ToUni = sUni
End Function
[/vb]
Attachments
Unicode DataReport.rar
(25.63 KiB) Downloaded 555 times
o0o--truongphu--o0o

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

ngovanthuc
Posts: 4
Joined: Wed 02/06/2010 8:02 am

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

Postby ngovanthuc » Thu 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
Posts: 2
Joined: Fri 04/06/2010 12:36 am

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

Postby toilaai745 » Fri 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?

Code: Select all

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Fri 04/06/2010 6:53 am

ngovanthuc wrote: in trang A5

  1. Printer.PaperSize = 11 'A5
o0o--truongphu--o0o

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Fri 04/06/2010 6:57 am

toilaai745 wrote:"select*from T_chucvu where macv='"

dấu * giữa 2 space
toilaai745 wrote: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

User avatar
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Posts: 88
Joined: Fri 19/03/2010 1:29 pm
Has thanked: 2 times
Been thanked: 2 times

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

Postby NXK1138 » Thu 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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Thu 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
Posts: 2
Joined: Fri 04/06/2010 12:36 am

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

Postby toilaai745 » Fri 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
Attachments
QLHH.rar
QLHH
(6.75 KiB) Downloaded 479 times

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

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

Postby truongphu » Sat 12/06/2010 8:19 am

toilaai745 wrote: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á!
.
Attachments
DBGrid và Data1.rar
(9.23 KiB) Downloaded 499 times
o0o--truongphu--o0o

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

User avatar
Domino
Posts: 4
Joined: Thu 10/06/2010 3:40 pm

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

Postby Domino » Wed 16/06/2010 11:24 pm

Image


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
Posts: 15
Joined: Tue 21/10/2008 1:51 pm

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

Postby giacmocuoicung » Thu 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.
Attachments
Pearl.zip
(1.94 KiB) Downloaded 540 times

User avatar
Domino
Posts: 4
Joined: Thu 10/06/2010 3:40 pm

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

Postby Domino » Sat 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 :(
Image
Attachments
QLHoctap.rar
Quan ly hoc tap
(53.09 KiB) Downloaded 697 times

nguyennhanlk
Posts: 2
Joined: Thu 13/05/2010 4:45 pm

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

Postby nguyennhanlk » Wed 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.

User avatar
Domino
Posts: 4
Joined: Thu 10/06/2010 3:40 pm

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

Postby Domino » Wed 23/06/2010 6:18 pm

nguyennhanlk wrote: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 .


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

Who is online

Users browsing this forum: No registered users and 2 guests