⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student_frm.frm

📁 高校学生选课系统
💻 FRM
📖 第 1 页 / 共 3 页
字号:

    If strField = "" Then
        strField = "sno"
        strQuery = "SELECT sno As 学号,sname As 姓名, Sex As 性别, " & _
                   "birth As 出生年月, tel As 电话,address As 家庭地址,m As 备注 " & _
                   "FROM studentinfo " & _
                   "WHERE " & strField & " = '" & Trim(txtcontent.Text) & "'"
    ElseIf strField = "birth" Then
        strQuery = "SELECT sno As 学号,sname As 姓名, Sex As 性别, " & _
                   "birth As 出生年月, tel As 电话,address As 家庭地址,m As 备注 " & _
                   "FROM studentinfo " & _
                   "WHERE " & strField & "= '" & Trim(txtcontent.Text) & "'"
    Else
        strQuery = "SELECT sno As 学号,sname As 姓名, Sex As 性别, " & _
                   "birth As 出生年月, tel As 电话,address As 家庭地址,m As 备注 " & _
                   "FROM studentinfo " & _
                   "WHERE " & strField & " = '" & Trim(txtcontent.Text) & "'"
    End If
    rs.Open strQuery, con, adOpenForwardOnly, adLockReadOnly
    Set DataGrid2.DataSource = Nothing
    If Not (rs.EOF And rs.BOF) Then
        rs.MoveFirst
        rs.MoveLast
    End If
    If rs.RecordCount > 0 Then
        Set DataGrid2.DataSource = rs
        MsgBox "总共查到" & rs.RecordCount & "记录", vbInformation
    Else
        MsgBox "没有找到记录,请重新输入查询数据", vbInformation
    End If

End Sub

Private Sub cmdque2_Click()

    Dim rs As New ADODB.Recordset
    strQuery2 = "SELECT sno As 学号,sname As 姓名, Sex As 性别," & _
                "birth As 出生年月, tel As 电话,address As 家庭地址,m As 备注 " & _
                "FROM studentinfo WHERE "
    Dim sQSql As String
    
    If chkItem(0).Value = vbChecked Then
        If txtsno = "" Then
        MsgBox "请输入要查询的记录", vbInformation
        Exit Sub
        End If
        sQSql = "sno" & " like '%" & Trim(txtsno) & "%'"
    End If
    If chkItem(1).Value = vbChecked Then
        If txtsname = "" Then
            MsgBox "请输入要查询的记录", vbInformation
            Exit Sub
        End If
        If Trim(sQSql) = "" Then
            sQSql = " sname like '%" & Trim(txtsname) & "%'"
        Else
            sQSql = sQSql & " AND sname like '%" & Trim(txtsname) & "%'"
        End If
     End If

    If chkItem(2).Value = vbChecked Then
        If txtaddress = "" Then
            MsgBox "请输入要查询的记录", vbInformation
            Exit Sub
        End If
        If Trim(sQSql) = "" Then
            sQSql = " address like '%" & Trim(txtaddress) & "%'"
        Else
            sQSql = sQSql & " and address like '%" & Trim(txtaddress) & "%'"
        End If
   End If

    If chkItem(3).Value = vbChecked Then
        If Trim(sQSql) = "" Then
            sQSql = "birth" & "='" & Format(CDate(cboyear1 & "-" & cbomonth1 & "-" & cboday1), "yyyy-mm-dd") & "' "
        Else
            sQSql = sQSql & " and birth" & "='" & Format(CDate(cboyear1 & "-" & cbomonth1 & "-" & cboday1), "yyyy-mm-dd") & "'"
        End If
    End If

    If chkItem(4).Value = vbChecked And txtm <> "" Then
        If txtm = "" Then
            MsgBox "请输入要查询的记录", vbInformation
            Exit Sub
        End If
        If Trim(sQSql) = "" Then
            sQSql = " address like '%" & Trim(txtm) & "%'"
        Else
            sQSql = sQSql & " and address like '%" & Trim(txtm) & "%'"
        End If
    End If

    strQuery2 = strQuery2 & sQSql
    rs.Open strQuery2, con, adOpenForwardOnly, adLockReadOnly
    Set DataGrid2.DataSource = Nothing
    If Not (rs.EOF And rs.BOF) Then
        rs.MoveFirst
        rs.MoveLast
    End If
    If rs.RecordCount > 0 Then
        Set DataGrid2.DataSource = rs
        MsgBox "总共查到" & rs.RecordCount & "记录", vbInformation
    Else
        MsgBox "没有找到记录,请重新输入查询数据", vbInformation
    End If
End Sub

Private Sub Combo2_Click()
    Select Case Combo2.ListIndex
        Case 0
            strField = "sno"
        Case 1
            strField = "sname"
        Case 2
            strField = "address"
        Case 3
            strField = "m"
        Case 4
            strField = "birth"
    End Select
End Sub

Private Sub DataGrid1_SelChange(Cancel As Integer)
sel_info = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark)
End Sub

Private Sub Form_Load()
    Me.Left = (MDIForm1.ScaleWidth - Me.Width) / 2
    Me.Top = (MDIForm1.ScaleHeight - Me.Height) / 2

    '添加有关查询信息
    Combo2.AddItem "学号"
    Combo2.AddItem "姓名"
    Combo2.AddItem "家庭地址"
    Combo2.AddItem "备注"
    Combo2.AddItem "出生年月"

    Combo1.AddItem "男"
    Combo1.AddItem "女"
    Dim j As Integer

    For j = 1970 To 2010
        cboyear.AddItem j   '增加记录
        cboyear1.AddItem j '查询记录
    Next j
 
    cboyear.Text = Year(Now())
    cboyear1.Text = Year(Now())
    For j = 1 To 12
        cbomonth.AddItem j
        cbomonth1.AddItem j
    Next j
    cbomonth.Text = Month(Now())
    cbomonth1.Text = Month(Now())
 
    For j = 1 To 31
        cboDay.AddItem j
        cboday1.AddItem j
    Next j
    cboDay.Text = Day(Now())
    cboday1.Text = Day(Now())
        
    Adodc1.ConnectionString = ConnectionString
    Adodc1.CommandType = adCmdText
    Adodc1.CursorLocation = adUseClient
    Refresh_data '调用过程执行操作
  
End Sub

Private Sub cmdadd_Click()
    Call AddRecord
End Sub
Private Sub cmdCancel_Click()
    Call CancelEdit
End Sub
Private Sub cmdSave_Click()
    Call SaveEdit
End Sub

Private Sub Command1_Click()
    Call AddRecord
End Sub

Private Sub Command3_Click()
    Call EditRecord
End Sub
Private Sub Command4_Click()
On Error GoTo error_proc
If sel_info = "" Then
 MsgBox "请选择要删除的记录!", vbOKOnly + vbExclamation, "警告"
 Exit Sub
End If

Dim answer As String
answer = MsgBox("确定要删除吗?", vbYesNo, "")
If answer = vbYes Then
'-- Create ADODB Command Object
   Dim objCmd As New ADODB.Command

   '-- Set properties of Command Object
   With objCmd
       .ActiveConnection = con.ConnectionString
       .CommandText = "sp_Delete_stuinfo"
       .CommandType = adCmdStoredProc

       '-- Create ADODB Command Parameters
       .Parameters.Append objCmd.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue)
       .Parameters.Append objCmd.CreateParameter("@sno", adChar, adParamInput, 50)

       '-- Set Parameter Values
       .Parameters("@sno") = Trim(sel_info)
   End With

   '-- Run the stored procedure
   Dim objRS As Recordset
   Set objRS = objCmd.Execute
   MsgBox "删除成功!", vbOKOnly, ""
If objCmd.State = adStateOpen Then objRS.Close
   Set objRS = Nothing
   Set objCmd = Nothing
   DataGrid1.Refresh
Else
 sel_info = ""
 Exit Sub
End If
 
 On Error GoTo delerror
delerror:
If Err.Number <> 0 Then
   MsgBox Err.Description
   End If

error_proc:
 If Err.Number = -2147467259 Then
      MsgBox "请先从choice表删除该同学的选课记录,然后再删除该同学记录", vbExclamation, "出错"
 Else
    MsgBox "无法删除数据,错误:" & Err.Description, vbExclamation, "出错"
 End If
End Sub
Private Sub DataGrid1_DblClick()
    EditRecord
End Sub
Private Sub Image1_Click()
    '如果没有选择学生,则返回
    If Trim(Text1) = "" Then
        MsgBox "请输入学生学号", vbInformation, "注意"
        Exit Sub
    End If
  
    '使用CommonDialog控件读取图像文件
    CommonDialog1.Filter = "JPEG文件(*.jpg)|*.jpg|BMP文件(*.bmp)|*.bmp|GIF文件(*.gif)|*.gif"
    CommonDialog1.ShowOpen
    DiskFile = CommonDialog1.FileName
    If DiskFile = "" Then
        MsgBox "请选择照片文件", vbInformation, "注意"
        Exit Sub
    End If
    Image1.Picture = LoadPicture(DiskFile)
End Sub

Private Sub SSTab1_Click(PreviousTab As Integer)
    If PreviousTab = 1 And cmdAdd.Enabled = False Then
        SSTab1.Tab = 1
    End If
End Sub

Private Sub Text4_LostFocus()
    Dim hold As Variant
    hold = Text4.Text
    If IsDate(hold) = False Then
        Text4.Text = ""
        MsgBox "输入数据要求日期格式", vbInformation, "注意"
        Text4.SetFocus
        Exit Sub
    Else
        Text4.Text = Format(hold, "yyyy/mm/dd")
    End If
End Sub
Private Sub txtcontent_LostFocus()
    If strField = "birth" Then
        Dim hold As Variant
        hold = txtcontent.Text
        If IsDate(hold) = False Then
            txtcontent.Text = ""
            MsgBox "输入数据要求日期格式", vbInformation, "注意"
            txtcontent.SetFocus
            Exit Sub
        Else
            txtcontent.Text = Format(hold, "yyyy/mm/dd")
        End If
    End If
End Sub
Private Sub AddRecord()
    SSTab1.Tab = 1
    Enable_proc
    cmdCancel.Enabled = True
    cmdSave.Enabled = True
    cmdAdd.Enabled = False
    ShowClear
    Text1.SetFocus
    Text4.Text = Date
    SaveUpdate_flag = True
    
End Sub
Private Sub EditRecord()
    SSTab1.Tab = 1
    Enable_proc
    cmdCancel.Enabled = True
    cmdSave.Enabled = True
    cmdAdd.Enabled = False
    RefreshAllText
    'Text1.SetFocus
    SaveUpdate_flag = False
End Sub
Private Sub SaveEdit()
    Dim str1 As String
    Dim str2 As String
    Dim RsTemp As New ADODB.Recordset
    Dim rs As New ADODB.Recordset
    Set cmd.ActiveConnection = con
    cmd.CommandType = adCmdText
    If Text1.Text = Empty Then
        MsgBox "该字段不能为空,请输入!", vbExclamation, "注意"
        Text1.SetFocus
        Exit Sub
    End If
    If Text2.Text = Empty Then
        MsgBox "该字段不能为空,请输入!", vbExclamation, "注意"
        Text2.SetFocus
        Exit Sub
    End If
    If Combo1.Text = Empty Then
        MsgBox "该字段不能为空,请输入!", vbExclamation, "注意"
        Combo1.SetFocus
        Exit Sub
    End If

    If Len(masktel.ClipText) < 11 Then
        MsgBox "请输入正确的电话号码!", vbExclamation, "注意"
        masktel.SetFocus
        Exit Sub
    Else
        Text5 = masktel.Text
    End If
   
    If Text6.Text = Empty Then
        MsgBox "该字段不能为空,请输入!", vbExclamation, "注意"
        Text6.SetFocus
        Exit Sub
    End If
    Text4.Text = Format(CDate(cboyear & "-" & cbomonth & "-" & cboDay), "yyyy-mm-dd")
    If IsDate(Trim(Text4.Text)) = False Then
        MsgBox "该字段为日期格式数据,请核对!", vbExclamation, "注意"
        Text4.SetFocus
        Exit Sub
    End If
    '进行唯一性检验
    '修改时不进行有效性检验,但insert即要!
    If SaveUpdate_flag = True Then
        str2 = "SELECT * FROM studentinfo WHERE sno='" & Trim(Text1.Text) & "';"
        RsTemp.Open str2, con, adOpenStatic, adLockPessimistic, adCmdText
        If RsTemp.EOF = False Then
            MsgBox "学号唯一,请重新输入!", vbExclamation, "注意"
            Text1.Text = Empty
            Text1.SetFocus
            RsTemp.Close
            Exit Sub
        End If
        RsTemp.Close
    End If
    RichTextBox1.Text = RichTextBox1.Text & " " '防止空字符,出错

On Error GoTo error_process

    rs.Open "SELECT * FROM studentinfo", con, adOpenDynamic, adLockOptimistic, adCmdText
    If SaveUpdate_flag = True Then rs.AddNew
    rs.Fields(0) = Text1.Text
    rs.Fields(1) = Text2.Text
    rs.Fields(2) = Combo1.Text
    rs.Fields(3) = Text4.Text
    rs.Fields(4) = Text5.Text
    rs.Fields(5) = Text6.Text
    rs.Fields(6) = RichTextBox1.Text
    Call SaveImage(DiskFile, rs)
    rs.Update
    rs.Close
  
    SaveUpdate_flag = False
    Disable_proc
    cmdSave.Enabled = False   '保存完后,记录更新(修改、添加、删除)重新来过
    cmdCancel.Enabled = False
    cmdAdd.Enabled = True
    Call Refresh_data
    
    Exit Sub
error_process:
    MsgBox "更新数据库错误:" & Err.Description & Err.Number
End Sub
Private Sub CancelEdit()
    RefreshAllText
    SaveUpdate_flag = False
    Disable_proc
    cmdCancel.Enabled = False
    cmdSave.Enabled = False
    cmdAdd.Enabled = True
End Sub
Private Sub RefreshAllText()
    With student_frm
        .Text1 = Adodc1.Recordset.Fields(0).Value
        .Text2 = Adodc1.Recordset.Fields(1).Value
        .Combo1 = Adodc1.Recordset.Fields(2).Value
        .Text4 = Adodc1.Recordset.Fields(3).Value
        .masktel.Text = Adodc1.Recordset.Fields(4).Value
        .Text6 = Adodc1.Recordset.Fields(5).Value
        .RichTextBox1 = Adodc1.Recordset.Fields(6).Value
        .Text1.Enabled = False
    End With
    'Debug.Print Adodc1.Recordset.Fields(7).ActualSize
    Call ShowImage(student_frm.Image1, Adodc1)    '显示图片
    
    '保存当前的记录位置
    Pos = Adodc1.Recordset.AbsolutePosition

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -