Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Tại sao Ado recordset inner join readonly
#21
(30-10-15, 07:16 AM)tt1212 Đã viết: Xin hỏi  mattroinguquen đoạn code này mình muốn lưu   subform thì làm sao bạn?
Mã PHP:
Private Sub cmdLuu_Click()
...
 
End Sub 

Đây là nút lưu trên fom chính vậy muốn nhấn mút lưu trên fom chinh ma subfom lưu thi làm sao bạn? nhờ bạn chỉ mình mới

1- Bác thay Private Sub bằng Public Sub (Public Sub cmdLuu_Click())
2- Trên form chính gọi:  Call Me.frmDanhsachkhachhang.Form.cmdLuu_Click là OK
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn tt1212
#22
Chào tt1212 & MTNG !

1. Cái vụ giải quyết xung đột dữ liệu, theo mình nghỉ nên dùng Unbound trên Main, tạo table Tạm gắn và Sub khi lưu đỗ dữ liệu vào Data lưu là ồn (Ai lưu trước cấp mã trước, ai lưu sau cấp sau).
2. Mình chưa hiểu ý bạn lắm. Có phải bạn muốn dự liệu subform (hiển thị dạng Continuous) và hiển thị theo text box trên Mainform không ?
Nếu đúng thế: Sao không thay textbox bằng combobox. Khi Open Form nạp dự liệu cho Cbo. Khi thay đổi cbo thì load lại Subform theo điều kiện của Cbo.

Thân./.
Reply
Những người đã cảm ơn
#23
1. Cái vụ giải quyết xung đột dữ liệu, theo mình nghỉ nên dùng Unbound trên Main, tạo table Tạm gắn và Sub khi lưu đỗ dữ liệu vào Data lưu là ồn (Ai lưu trước cấp mã trước, ai lưu sau cấp sau).
2. Mình chưa hiểu ý bạn lắm. Có phải bạn muốn dự liệu subform (hiển thị dạng Continuous) và hiển thị theo text box trên Mainform không ?
Nếu đúng thế: Sao không thay textbox bằng combobox. Khi Open Form nạp dự liệu cho Cbo. Khi thay đổi cbo thì load lại Subform theo điều kiện của Cbo.
Nói
Vấn đề vướng mắc là thế này:

Tạo form chi tiết bán hàng cdang conterniufom để hiển thị nhiều dòng
Trong đố có hai ô textbox mã hàng, tên hàng chẳng hạn tại thuộc tính Name mình để [mahang], [tenhang] nhưng thuộc tinh  source  nếu để [mahang], [tenhang] thì sẽ hiển thị các hàng dữ liệu như trong bảng là đúng,
 Nhưng nếu thuộc tính source để trống có nghĩa là Unbound thi khi gõ vào 1 dóng là tất cả các dóng đều giống nhau! Vậy giải quyết thế nào để nhập các dòng cho đúng
Chữ ký của tt1212 Present Nhận viết phần mềm, hỗ trợ viết phần mềm, hợp tác viết phần mềm trên nên Microsoft Access mọi phiên bản Liên hệ: Mr Đức -989276236. Email: Tantriviet.vnn@gmail.com website:http://www.tantrivietsoft.com/
Reply
Những người đã cảm ơn
#24
(31-10-15, 09:04 PM)tt1212 Đã viết: 1. Cái vụ giải quyết xung đột dữ liệu, theo mình nghỉ nên dùng Unbound trên Main, tạo table Tạm gắn và Sub khi lưu đỗ dữ liệu vào Data lưu là ồn (Ai lưu trước cấp mã trước, ai lưu sau cấp sau).
2. Mình chưa hiểu ý bạn lắm. Có phải bạn muốn dự liệu subform (hiển thị dạng Continuous) và hiển thị theo text box trên Mainform không ?
Nếu đúng thế: Sao không thay textbox bằng combobox. Khi Open Form nạp dự liệu cho Cbo. Khi thay đổi cbo thì load lại Subform theo điều kiện của Cbo.
Nói
Vấn đề vướng mắc là thế này:

Tạo form chi tiết bán hàng cdang conterniufom để hiển thị nhiều dòng
Trong đố có hai ô textbox mã hàng, tên hàng chẳng hạn tại thuộc tính Name mình để [mahang], [tenhang] nhưng thuộc tinh  source  nếu để [mahang], [tenhang] thì sẽ hiển thị các hàng dữ liệu như trong bảng là đúng,
 Nhưng nếu thuộc tính source để trống có nghĩa là Unbound thi khi gõ vào 1 dóng là tất cả các dóng đều giống nhau! Vậy giải quyết thế nào để nhập các dòng cho đúng

Đừng để source các field trống cứ giữ nguyên hiện trạng (Bởi vì nếu bạn xóa bạn phải tốn công viết lại nó trong sự kiện open frm), chỉ xóa cái source của form thôi

Bước 1 : Bạn cứ thiết kế như trước giờ vẫn làm,(auto frm... thoải mái đi), xem tới xem lui cho vừa ý đi.
Bước 2 : trong sự kiện open form : load cái danh sach ADO vào me.recordset
Bước 3 : Trong sự kiện close form : set nothing cái me.recordset

Xong, save 1 cái, mở form thì cái list mới ADO được load lên thôi... Đây gọi là Bình cũ nhưng rượu mới, rất tiết kiêm công sức...


Làm bằng ADo bạn phải quan niệm thế này
- Các table khi relink chỉ là tạm bợ, vì khi làm xong tất cả bạn sẽ delete nó đi, chỉ còn cái chuỗi kết nối nằm trong code thôi.
- Tên field đặt trùng tên với tên source cũng là rất hay, cứ tận dụng luôn (lừa gió bẻ măng)
- Thậm chí các combo box bạn cũng phải cắt cái nguồn table của nó đi, cũng load nó bằng ADO luôn, chuyển sang dạng value list
Bạn cứ làm cách này, mình nghĩ là đơn giản nhất, các ngôn ngữ khác nó làm cũng chuối lắm, nào là load danh sách nào là gán source từa lưa luôn....Bản thân cái thằng visual studio C# bạn muốn đưa cái combo multi column như access không phải là chuyện đơn giản...
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#25
Đang bi 
Mã PHP:
=sum(thanhtien
trong subfỏm giup mình với khong hieu sao no chăng tính cho
Chữ ký của tt1212 Present Nhận viết phần mềm, hỗ trợ viết phần mềm, hợp tác viết phần mềm trên nên Microsoft Access mọi phiên bản Liên hệ: Mr Đức -989276236. Email: Tantriviet.vnn@gmail.com website:http://www.tantrivietsoft.com/
Reply
Những người đã cảm ơn
#26
(01-11-15, 02:23 AM)tt1212 Đã viết: Đang bi 
Mã PHP:
=sum(thanhtien
trong subfỏm giup mình với khong hieu sao no chăng tính cho

Đúng, nó không cho và bạn phải viết lại hàm sum
Để mình lấy cái ví dụ cho bạn.

1, bạn đã có một ds recorset, vậy viết hàm tính tổng cho nó

Mã:
Function sum_field(rs As ADODB.Recordset, fld As String) As Double
   Dim kq As Double
   Dim f As ADODB.Field
   kq = 0
   If rs.RecordCount <= 0 Then
       sum_field = 0
       Exit Function
   End If
   rs.MoveFirst
   Do While Not rs.EOF
       For Each f In rs.Fields
           If f.name = fld Then
               kq = kq + CDbl(f.value)
           End If
       Next f
       rs.MoveNext
   Loop
   sum_field = kq
End Function

2, Bạn sẽ gọi nó ở đâu

Mã:
Private Sub Form_Open(Cancel As Integer)
   If Not IsNull(Me.OpenArgs) Then
       Me.RibbonName = Me.OpenArgs
   End If
   Set Me.Recordset = ado2_view.Lay_nhatky_xuatnhap
   Call ado2_view.load_listbox_dongia_bq(Me.list_dgbq)
   Call ado2_view.load_listbox_td_nx_tc(Me.list_td_nx_tc)
   Call ado2_view.load_listbox_hang(Me.list_hang)
   Me.txt_ton.value = ado2_view.sum_field(Me.Recordset, "tc")
End Sub

Đây là cách mình làm và cũng có thể "chuối lắm" nhưng xài được, aem có cách nào hay hơn xin góp ý
Và khi làm với ADO bạn sẽ phải chuẩn bị tinh thần bỏ một số tiện nghi của truyền thống...
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#27
Nếu dùng Record Source trực tiếp thì bạn dùng Sum([Thanhtien]) Ok.
Nhưng nếu dùng ADO load Record thì bạn dùng ADO để tính và Update thành tiền. Ngoài cách của "thucgia" bạn cũng có thể dùng Code ADO:
Mã:
Dim rs As New ADODB.Recordset, sql As String
          sql = "SELECT sum(Thanhtien) as CongThanhtien "
          sql = sql & "FROM tableName Where ..."
          Set rs = fGetRecordset(sql)
           If rs.RecordCount > 0 Then
                myForm.txtThanhtien.Value = rs!CongThanhtien
            Else
                myForm.txtThanhtien.Value.Value = 0
           End If
        Set rs=Nothing
          
Thân./.
Reply
Những người đã cảm ơn
#28
(02-11-15, 11:36 AM)Minh Tiên Đã viết: Nếu dùng Record Source trực tiếp thì bạn dùng Sum([Thanhtien]) Ok.
Nhưng nếu dùng ADO load Record thì bạn dùng ADO để tính và Update thành tiền. Ngoài cách của "thucgia" bạn cũng có thể dùng Code ADO:
Mã:
Dim rs As New ADODB.Recordset, sql As String
          sql = "SELECT sum(Thanhtien) as CongThanhtien "
          sql = sql & "FROM tableName Where ..."
          Set rs = fGetRecordset(sql)
           If rs.RecordCount > 0 Then
                myForm.txtThanhtien.Value = rs!CongThanhtien
            Else
                myForm.txtThanhtien.Value.Value = 0
           End If
        Set rs=Nothing
          
Thân./.

thk, quả nhiên làm ADO vất vả thật rồi, phải bỏ rất nhiều tiện nghi so với truyền thống...
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#29
Cuối cùng mình cũng đã thành công Ado và có thể kết nối Access với tất cả các loại dữ liêu
Chữ ký của tt1212 Present Nhận viết phần mềm, hỗ trợ viết phần mềm, hợp tác viết phần mềm trên nên Microsoft Access mọi phiên bản Liên hệ: Mr Đức -989276236. Email: Tantriviet.vnn@gmail.com website:http://www.tantrivietsoft.com/
Reply
Những người đã cảm ơn
#30
Cuối cùng mình cũng đã thành công về ADO và có thể kết nối Acces với tất cả các loại data
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] Tại sao ado recordset không cho sửa thucgia 5 635 15-10-15, 11:46 PM
Bài mới nhất: thucgia

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ