• Tại sao Ado recordset inner join readonly
  • RE: Tại sao Ado recordset inner join readonly

    MTNQ > 31-10-15, 08:32 AM

    (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
  • RE: Tại sao Ado recordset inner join readonly

    Minh Tiên > 31-10-15, 01:09 PM

    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./.
  • RE: Tại sao Ado recordset inner join readonly

    tt1212 > 31-10-15, 09:04 PM

    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
  • RE: Tại sao Ado recordset inner join readonly

    thucgia > 01-11-15, 02:05 AM

    (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...
  • RE: Tại sao Ado recordset inner join readonly

    tt1212 > 01-11-15, 02:23 AM

    Đang bi 
    Mã PHP:
    =sum(thanhtien
    trong subfỏm giup mình với khong hieu sao no chăng tính cho
  • RE: Tại sao Ado recordset inner join readonly

    thucgia > 01-11-15, 02:45 AM

    (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...
  • RE: Tại sao Ado recordset inner join readonly

    Minh Tiên > 02-11-15, 11:36 AM

    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./.
  • RE: Tại sao Ado recordset inner join readonly

    thucgia > 02-11-15, 12:38 PM

    (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...
  • RE: Tại sao Ado recordset inner join readonly

    tt1212 > 03-11-15, 04:00 PM

    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
  • RE: Tại sao Ado recordset inner join readonly

    tt1212 > 04-11-15, 09:49 AM

    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