Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 14

Chủ đề: Code visual basic

  1. #1
    Tham gia
    12-12-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts

    Code visual basic

    Em dang co bai tap quan li diem thpt nhung cai cho tinh diem tb kho wa. Co pac nao bit ko. Giup E voi
    Quote Quote

  2. #2
    Tham gia
    02-07-2008
    Location
    Bụng mẹ
    Bài viết
    98
    Like
    0
    Thanked 2 Times in 1 Post
    Nếu CSDL là Access thì bạn làm 1 cái Query rồi thêm trường ĐTB, dựa vào công thức tính điểm trung bình mà tính thôi.
    VD:
    Code:
     DTB:([dm1]+[dm2]+...+[dmn])/n
    Thế là xong.
    Trong VB bạn SELECT như sau:
    Code:
    SELECT * FROM query_name
    rồi truy xuất như bình thường.

  3. #3
    Tham gia
    12-12-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Thank pac kylobytes nhe.

    [=========> Bổ sung bài viết <=========]

    Pac co the jup em them dc ko?. E co csdl nhu sau.
    diem(mahs,mamon,hocki,diemhs1,diemhs2,diemthi)
    trong do diemhs1&diemhs2 E de kieu text. khi nhap diem e se nhap vai diem vao cac diem hs1 va hs2. sau do em dinh dung vb de tach va tinh diem. Nhung lai mac o cho la khi minh tinh rui thi ko bit lam the nao de du no vao csdl
    Được sửa bởi Chip7 lúc 09:39 ngày 19-04-2009 Reason: Bổ sung bài viết

  4. #4
    Tham gia
    16-03-2008
    Location
    Hà nội
    Bài viết
    109
    Like
    0
    Thanked 17 Times in 13 Posts
    Điều này có thể làm được mà bạn, bạn sử dụng câu query sau, khi mà nhập điểm thì bạn cũng đã có mahs và mamon rồi phải không
    Code:
    "update diem set diemhs1="& diemhs1 &",diemhs2=" & diemhs2 &" where mahs=" & mahs &" and mamon="& mamon
    Với các diemhs1,diemhs2 bạn đã tính và mahs, mamon đã có.
    Thân
    Devil 2 Angel
    Empty

  5. #5
    Tham gia
    02-07-2008
    Location
    Bụng mẹ
    Bài viết
    98
    Like
    0
    Thanked 2 Times in 1 Post
    Xời. Sao lại để diemhs1,2 kiểu text. Integer chứ. Có mã môn rồi, nhập làm chi nhiều lần. Mỗi môn có 1 điểm hs1 và 1 điểm hs2 thôi chứ. Tính điểm thì dùng Query như mình nói. ở http://ddth.com/showthread.php?t=267006

  6. #6
    Tham gia
    12-12-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Diem hs1 cung co nhieu diem chu pac. vi du nhu diem hs1 se có điểm miệng, điểm 15'... và điểm hs2 cũng vậy mà.
    Nhưng cái này em đã xử lí dc rùi. Như pac nói thì tính diểm như vậy sẽ chỉ làm đựoc khi mỗi môn chỉ có một điểm hs1 và hs2. Khi nào rảnh
    E post len các pác xem thử nhé.

  7. #7
    Tham gia
    02-07-2008
    Location
    Bụng mẹ
    Bài viết
    98
    Like
    0
    Thanked 2 Times in 1 Post
    OK thôi. Có gì tham khảo cái luôn.

  8. #8
    Tham gia
    12-12-2008
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin đây là modul để xử lí. các pac xem thế nào.

    Option Explicit

    'Chon cach tinh diem cac mon hoc
    Global Ch As Integer

    Function hs(so) As Integer
    Dim s As String
    Dim X As String
    Dim i, n, d, L, s1

    If IsNull(so) Then
    hs = 0
    Else
    s = so
    n = Len(s)
    d = 0
    L = 0
    For i = 1 To n
    L = L + 1
    X = Mid(s, L, 1)
    If Asc(X) = 32 Then d = d + 1
    Next
    d = d + 1
    hs = d
    End If
    End Function
    Function Cong(xv) As Integer
    Dim s As String
    Dim X As String
    Dim i, n, d, L, d1, tg1
    Dim tg
    tg1 = xv
    If IsNull(tg1) Then
    Cong = 0
    Else
    s = xv
    n = Len(s)
    End If
    d = 0
    L = 0
    'Vong lap tinh diem
    For i = 1 To n
    L = L + 1
    X = Mid(s, L, 1)
    If X <> "" Then
    tg = Asc(X)
    'Kiem tra x=1 ?
    If (tg = 49) And (L <> n) Then
    L = L + 1
    X = Mid(s, L, 1)
    If X <> "" Then
    tg = Asc(X)

    'Kiem tra x=0 ?
    If (tg = 48) Then
    d1 = d1 + 10
    L = L + 1
    Else
    'Kiem tra x = Dau cach
    If (tg = 32) Then
    d1 = d1 + 1
    L = L - 1
    End If
    End If

    End If

    Else
    If Asc(X) = 49 Then d = d + 1
    If Asc(X) = 50 Then d = d + 2
    If Asc(X) = 51 Then d = d + 3
    If Asc(X) = 52 Then d = d + 4
    If Asc(X) = 53 Then d = d + 5
    If Asc(X) = 54 Then d = d + 6
    If Asc(X) = 55 Then d = d + 7
    If Asc(X) = 56 Then d = d + 8
    If Asc(X) = 57 Then d = d + 9
    End If
    End If

    Next
    Cong = d + d1
    End Function

    Function DTB(dhs1, dhs2)
    Dim HSC As Integer
    Dim Hs1 As Integer
    Dim Hs2 As Integer
    Dim Hsth As Integer
    Dim Ths1 As Integer
    Dim Ths2 As Integer
    Dim Tth As Integer
    Dim td As Integer
    Dim t1 As Double
    'Tim he so chung
    Hs1 = hs(dhs1)
    Hs2 = 2 * hs(dhs2)
    'Hsth = 3 * hs(Dth)
    HSC = Hs1 + Hs2 '+ Hsth

    'cong diem
    Ths1 = Cong(dhs1)
    Ths2 = 2 * Cong(dhs2)
    'Tth = 3 * Cong(Dth)
    td = Ths1 + Ths2 '+ Tth
    'Tinh TB kiem tra
    If (HSC = 0) And (td = 0) Then
    td = -1
    HSC = 1
    t1 = td / HSC
    If t1 = -1 Then
    DTB = "X"
    Exit Function
    End If
    End If
    t1 = td / HSC
    DTB = Round(t1, 1)

    End Function

  9. #9
    Tham gia
    26-04-2009
    Bài viết
    369
    Like
    5
    Thanked 16 Times in 12 Posts
    À. Hóa ra pác dùng String để nhập dạng: 9 8 5. Sau đó tách chuỗi. Nếu gặp dấu " " thì lấy số ở đằng sau...
    Nhưng việc nhập điểm của pác như thế nào. Bác có thể PrintScreen cái form cho em xem ko.
    Mà như vậy pác dùng Split với Join để tách và nhập chuỗi có phải dễ hơn ko. Chứ viết hẳn 1 hàm thế này, oải nhỉ.
    Bác viết 1 function thế này sẽ nhàn hơn.
    PHP Code:
    Fucntion Diem(Str)
    Dim i as Integer
    Dim aSplit
    () as String
    aSplit 
    Split(Str," ")
    For 
    i=0 to UBound(aSplit)
       
    Diem Diem aSplit(i)
    Next
    End 
    Function 
    Còn cộng điểm TB thì có thể như sau:
    PHP Code:
    DiemTB Diem(hs1)+Diem(hs2)*
    Ngắn hơn của pác nhỉ

    Em đổi nick Kylobytes sang nick này rùi nha.

    [=========> Bổ sung bài viết <=========]

    Với bài của bác em có ý kiến như sau:
    Việc tách ra và tính điểm thì theo cách viết function của em ở trên cho ngắn gọn.
    Việc đưa vào CSDL pác có thể làm như sau:
    1.Đầu tiên là phải kiểm tra xem DL đã có 3 điểm hs1 chưa (vd tối đa là 3 điểm hệ số 1 nhé) bằng lệnh:
    PHP Code:
    DiemThem Text1.Text //Điểm thêm vào nhé
    If (UBound(aSplit) = 3 Then //Kiểm tra xem là trong CSDL đã có đủ 3 điểm nhập vào chưa
        
    MsgBox "Da du 3 diem he so 1. Khong the them diem he so 1 nua."
    ElseIf (UBound(aSplit) = 0 Then //Nếu chưa nhập điểm nào vào CSDL
        
    SQL "INSERT table_diem(hs1) VALUES('" DiemThem "') WHERE mahs = " mahs " AND mamon = " mamon
       Rcs
    .Execute SQL
    Else
        
    SQL "UPDATE table_diem SET hs1 = CONCAT('" DiemThem " ',DiemCu) WHERE mahs = " mahs " AND mamon = " mamon
        
    //DiemCu là chuỗi điểm cũ lấy từ CSDL
        //mahs và mamon được khai báo trước nhé
        
    Rcs.Execute SQL
    End 
    If 
    Em có vài ý kiến trên. Mong các pác cho thêm ý kiến
    Được sửa bởi 1024KB lúc 20:25 ngày 26-04-2009 Reason: Bổ sung bài viết

  10. #10
    Tham gia
    18-04-2009
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    sử dụng list control trong visual basic vb6

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •