Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Nov 2015
    Bài viết
    51

    Giúp đở đoạn code SQL trong VBA của Access

    Mã:
    Private Sub Command22_Click()
    Dim st1 As String, st2 As String
       
    st1 = " SELECT T_Sinhvien.MASV, T_Sinhvien.Holot, T_Sinhvien.TenSV, nghiemtrang([holot]) " & " " & " nghiemtrang([tensv]) AS hovaten, T_Sinhvien.MaLop, T_Sinhvien.Ngaysinh, T_Sinhvien.Gioitinh," & _
            "T_Sinhvien.Khoahoc, T_Sinhvien.SoCMND, T_Sinhvien.Diachi," & _
            "T_Sinhvien.Mahuyen, T_Sinhvien.Matinh, T_Sinhvien.Madantoc, T_Sinhvien.DienthoaiSV, T_Sinhvien.Email, " & _
            "T_Lop.Tenlop , T_huyen.Tenhuyen, T_Khoa.Tenkhoa, T_Tinh.Tentinh " & _
            "FROM (T_Khoa INNER JOIN T_Lop ON T_Khoa.[Makhoa] = T_Lop.[Makhoa]) INNER JOIN (T_Tinh INNER JOIN (T_huyen INNER JOIN T_Sinhvien ON T_huyen.[Mahuyen] = T_Sinhvien.[Mahuyen]) ON T_Tinh.[Matinh] = T_Sinhvien.[Matinh]) ON T_Lop.[MaLop] = T_Sinhvien.[MaLop]"
    
        Select Case FindOptions
            Case 1
                If IIf(IsNull(Txtmasv), "", Txtmasv) = "" Then
                    MsgBox " Ma so sinh vien chua nhap"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.masv='" & Txtmasv & "'"
                
             Case 2
                If IIf(IsNull(TxttenSV), "", TxttenSV) = "" Then
                    MsgBox " ten sinh vien chua nhap"
                    Exit Sub
                End If
                st2 = "where  (((nghiemtrang([holot]) " & " " & " nghiemtrang([tensv])) like '*" & TxttenSV & "*'"
             Case 3
                If IsNull(CbomaLop) Then
                    MsgBox " chua chon Lop ma Ku"
                    Exit Sub
                End If
               
                st2 = "where T_sinhvien.malop ='" & CbomaLop & "'"
              Case 4
                If IsNull(CboMahuyen) Then
                    MsgBox " chua chon Huyen ma Ku"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.mahuyen ='" & CboMahuyen & "'"
               Case 5
                If IsNull(Cbomatinh) Then
                    MsgBox " chua chon tinh ma Ku"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.matinh ='" & Cbomatinh & "'"
                
             End Select
             st1 = st1 & st2
             With SubCT
                If .SourceObject = "" Then
                    .SourceObject = "F_KQTKSinhvien"
                 End If
               .Form.RecordSource = st1
            End With
            
    End Sub
    khi thực hiện tìm kiếm thì báo lỗi ngay chỗ xem ảnh :


    do mình nối 1 khoảng trắng giữa họ lót và tên nên bị lỗi mà không biết phải làm thế nào? nhờ các bác fix dùm, em đang cần gấp. thanks

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Giúp đở đoạn code SQL trong VBA của Access




    Trích dẫn Gửi bởi xiketuan

    Mã:
    Private Sub Command22_Click()
    Dim st1 As String, st2 As String
       
    st1 = " SELECT T_Sinhvien.MASV, T_Sinhvien.Holot, T_Sinhvien.TenSV, nghiemtrang([holot]) " & " " & " nghiemtrang([tensv]) AS hovaten, T_Sinhvien.MaLop, T_Sinhvien.Ngaysinh, T_Sinhvien.Gioitinh," & _
            "T_Sinhvien.Khoahoc, T_Sinhvien.SoCMND, T_Sinhvien.Diachi," & _
            "T_Sinhvien.Mahuyen, T_Sinhvien.Matinh, T_Sinhvien.Madantoc, T_Sinhvien.DienthoaiSV, T_Sinhvien.Email, " & _
            "T_Lop.Tenlop , T_huyen.Tenhuyen, T_Khoa.Tenkhoa, T_Tinh.Tentinh " & _
            "FROM (T_Khoa INNER JOIN T_Lop ON T_Khoa.[Makhoa] = T_Lop.[Makhoa]) INNER JOIN (T_Tinh INNER JOIN (T_huyen INNER JOIN T_Sinhvien ON T_huyen.[Mahuyen] = T_Sinhvien.[Mahuyen]) ON T_Tinh.[Matinh] = T_Sinhvien.[Matinh]) ON T_Lop.[MaLop] = T_Sinhvien.[MaLop]"
    
        Select Case FindOptions
            Case 1
                If IIf(IsNull(Txtmasv), "", Txtmasv) = "" Then
                    MsgBox " Ma so sinh vien chua nhap"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.masv='" & Txtmasv & "'"
                
             Case 2
                If IIf(IsNull(TxttenSV), "", TxttenSV) = "" Then
                    MsgBox " ten sinh vien chua nhap"
                    Exit Sub
                End If
                st2 = "where  (((nghiemtrang([holot]) " & " " & " nghiemtrang([tensv])) like '*" & TxttenSV & "*'"
             Case 3
                If IsNull(CbomaLop) Then
                    MsgBox " chua chon Lop ma Ku"
                    Exit Sub
                End If
               
                st2 = "where T_sinhvien.malop ='" & CbomaLop & "'"
              Case 4
                If IsNull(CboMahuyen) Then
                    MsgBox " chua chon Huyen ma Ku"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.mahuyen ='" & CboMahuyen & "'"
               Case 5
                If IsNull(Cbomatinh) Then
                    MsgBox " chua chon tinh ma Ku"
                    Exit Sub
                End If
                st2 = "where T_sinhvien.matinh ='" & Cbomatinh & "'"
                
             End Select
             st1 = st1 & st2
             With SubCT
                If .SourceObject = "" Then
                    .SourceObject = "F_KQTKSinhvien"
                 End If
               .Form.RecordSource = st1
            End With
            
    End Sub
    khi thực hiện tìm kiếm thì báo lỗi ngay chỗ xem ảnh :


    do mình nối 1 khoảng trắng giữa họ lót và tên nên bị lỗi mà không biết phải làm thế nào? nhờ các bác fix dùm, em đang cần gấp. thanks
    Nên đưa cái nghiemtrang đó vào ytrong form nhập liệu và như vậy khi nhập dữ liệu vào Table, bạn đã có nghiemtrang rồi, khi đưa ra câu SQL không phải sử dụng nó nữa. Tôi chưa xem kỹ bài nhưng góp ý với bạn như thế. Bạn xem lại nha
    Thân

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Giúp đở đoạn code SQL trong VBA của Access

    cám ơn bạn đã trả lời, rốt cuộc mình đã sửa lại cột holot va ténv thành một cột hovaten trong table luôn cho khỏe.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Re: Ðề: Giúp đở đoạn code SQL trong VBA của Access

    Tại sao lại phải thế?
    Câu này bạn chỉ cần bỏ cái " " giữa nghiemtrang([holot]) " & " " & " nghiemtrang([tensv]) AS hovaten là OK thôi mà?
    nghiemtrang([holot]) " & " & ' ' & nghiemtrang([tensv]) AS hovaten như thế là được.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •