?? frmstudent.frm
字號(hào):
cmdFirst.Enabled = False
Else
cmdPrevious.Enabled = True
cmdFirst.Enabled = True
End If
''假如處于記錄的尾部
If .EOF Then
If Not .BOF Then DataEnv.rsStudent.MoveLast
cmdNext.Enabled = False
cmdLast.Enabled = False
Else
cmdNext.Enabled = True
cmdLast.Enabled = True
End If
End With
mstrFileName = ""
End Sub
Private Sub cboDep_Click()
Dim rsClass As New ADODB.Recordset
Dim strSQL
'根據(jù)所選的系的不同,采用不同的SQL語句
If cboDep.ItemData(cboDep.ListIndex) = 0 Then
strSQL = "select * from 班級信息表"
Else
strSQL = "select * from 班級信息表 where dept_id=" & cboDep.ItemData(cboDep.ListIndex)
End If
rsClass.Open strSQL, DataEnv.Con
'將所查到的rsClass中的內(nèi)容來填充cboClass
cboClass.Clear
cboClass.AddItem "全部"
While Not rsClass.EOF
cboClass.AddItem rsClass("Name")
rsClass.MoveNext
Wend
cboClass.ListIndex = 0
rsClass.Close
Set rsClass = Nothing
End Sub
Private Sub cmdAdd_Click()
'添加記錄
fraSeek.Enabled = False
fraBrowse.Enabled = False
grdScan.Enabled = False
DataEnv.rsStudent.AddNew
dtpBirth.Value = "1980-01-01"
fraInfo.Enabled = True
fraBrowse.Enabled = False
cmdAdd.Enabled = False
cmdEdit.Enabled = False
cmdDelete.Enabled = False
cmdUpdate.Enabled = True
cmdReport.Caption = "取消"
cmdReport.Enabled = True
mbClose = False '不能關(guān)閉窗口
End Sub
Private Sub cmdDelete_Click()
'如果出錯(cuò),則顯示錯(cuò)誤代碼
On Error GoTo errHandler
If MsgBox("要?jiǎng)h除記錄?", vbYesNo + vbQuestion + vbDefaultButton2, "確認(rèn)") = vbYes Then
'通過在DataEnv.Con中執(zhí)行SQL命令,來刪除記錄
DataEnv.Con.Execute "delete from 學(xué)生信息表 where serial ='" & txtSerial & "'"
DataEnv.rsStudent.MoveNext
If DataEnv.rsStudent.EOF Then DataEnv.rsStudent.MoveLast
'刷新用戶導(dǎo)航的網(wǎng)格控件
Call RefreshGrid
End If
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "錯(cuò)誤"
End Sub
Private Sub cmdEdit_Click()
'編輯記錄之前,需要設(shè)置其他控件的Enabled屬性
fraSeek.Enabled = False
fraBrowse.Enabled = False
grdScan.Enabled = False
fraInfo.Enabled = True
cmdAdd.Enabled = False
cmdEdit.Enabled = False
cmdDelete.Enabled = False
cmdUpdate.Enabled = True
cmdReport.Caption = "取消" ''更改cmdReport標(biāo)題
cmdReport.Enabled = True
mbClose = False '出于編輯狀態(tài),則用戶不能關(guān)閉窗口
End Sub
Private Sub cmdFirst_Click()
'移動(dòng)到記錄的頭部,并改變各個(gè)瀏覽按鈕的狀態(tài)
DataEnv.rssqlSeek.MoveFirst
DataEnv.rssqlSeek.MovePrevious
Call ChangeBrowseState
End Sub
Private Sub cmdLast_Click()
'移動(dòng)到記錄的尾部,并改變各個(gè)瀏覽按鈕的狀態(tài)
DataEnv.rssqlSeek.MoveLast
DataEnv.rssqlSeek.MoveNext
Call ChangeBrowseState
End Sub
Private Sub cmdList_Click()
'針對所選的班級,列出班級中所有的學(xué)籍信息
Dim strSQL
If cboClass.Text = "全部" Then
strSQL = " from 學(xué)生信息表 order by serial"
Else
strSQL = " from 學(xué)生信息表 where class='" & cboClass & "' order by serial"
End If
DataEnv.rsStudent.Close
DataEnv.rsStudent.Open "select * " & strSQL
DataEnv.rssqlSeek.Close
DataEnv.rssqlSeek.Open "select serial, name " & strSQL
'刷新用戶導(dǎo)航的網(wǎng)格控件,并且根據(jù)記錄集中記錄的數(shù)目,來改變各個(gè)瀏覽按鈕的狀態(tài)。
Call RefreshGrid
Call ChangeBrowseState
Call grdScan_Change
End Sub
Private Sub cmdNext_Click() '移動(dòng)到記錄的下一條
DataEnv.rssqlSeek.MoveNext
Call ChangeBrowseState
End Sub
Private Sub cmdPrevious_Click() '移動(dòng)到記錄的上一條
DataEnv.rssqlSeek.MovePrevious
Call ChangeBrowseState
End Sub
Private Sub cmdReport_Click()
On Error Resume Next
If cmdReport.Caption = "取消" Then
'取消所使用的更新更新
DataEnv.rsStudent.CancelUpdate
'重新顯示原來數(shù)據(jù)集中的內(nèi)容
If DataEnv.rsStudent.BOF Then
DataEnv.rsStudent.MoveFirst
Else
DataEnv.rsStudent.MovePrevious
DataEnv.rsStudent.MoveNext
End If
Call RefreshBinding
Call ChangeBrowseState
fraSeek.Enabled = True
fraBrowse.Enabled = True
fraInfo.Enabled = False
grdScan.Enabled = True
cmdReport.Caption = "報(bào)表(R)"
mbClose = True
Else
'生成報(bào)表
Dim strSQL As String
DataEnv.rsrptStudent.Close
strSQL = "select * from 學(xué)生信息表 where serial = '" & txtSerial.Text & "'"
DataEnv.rsrptStudent.Open strSQL
rptStudent.Show
End If
End Sub
Private Sub cmdSelectPhoto_Click()
On Error GoTo errHandler:
dlgSelect.DialogTitle = "選擇該學(xué)生的照片"
dlgSelect.Filter = "所有圖形文件|*.bmp;*.dib;*.gif;*.jpg;*.ico|位圖文件(*.bmp;*.dib)" & _
"|*.bmp;*.dib|GIF文件(*.gif)|*.gif|JPEG文件(*.jpg)|*.jpg|圖標(biāo)文件(*.ico)|*.ico"
dlgSelect.ShowOpen
If dlgSelect.FileName = "" Then Exit Sub
imgPhoto.Picture = LoadPicture(dlgSelect.FileName)
mstrFileName = dlgSelect.FileName
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "錯(cuò)誤"
End Sub
Private Sub cmdUpdate_Click()
'更新所添加或者修改的記錄
On Error GoTo errHandler:
Dim str As String
str = txtSerial.Text
With DataEnv.rsStudent
.Fields("Serial") = txtSerial.Text
.Fields("name") = txtName.Text
.Fields("sex") = cboSex.Text
.Fields("class") = dcbClass.Text
.Fields("birthday") = dtpBirth.Value
.Fields("tel") = txtTelephone.Text
.Fields("address") = txtAddress.Text
.Fields("resume") = txtResume.Text
If mstrFileName <> "" Then Call WriteImage(.Fields("photo"), mstrFileName)
.Update
End With
cmdReport.Caption = "報(bào)表(&R)"
cmdUpdate.Enabled = False
fraInfo.Enabled = False
mbClose = True
If DataEnv.rssqlSeek.State = adStateClosed Then DataEnv.rssqlSeek.Open
'刷新右端用以導(dǎo)航的網(wǎng)格控件
Call RefreshGrid
'根據(jù)記錄集中記錄的個(gè)數(shù),改變各個(gè)按鈕的狀態(tài)
Call ChangeBrowseState
'定位到剛剛添加或者修改過的記錄
DataEnv.rssqlSeek.MoveFirst
DataEnv.rssqlSeek.Find "serial='" & str & "'"
fraSeek.Enabled = True
fraBrowse.Enabled = True
grdScan.Enabled = True
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, " 錯(cuò)誤"
End Sub
Private Sub dcbClass_Click(Area As Integer)
If txtSerial = "" Then
txtSerial = dcbClass.Text
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If Not mbClose Then
MsgBox "數(shù)據(jù)正被修改,窗口不能關(guān)閉", vbCritical, "錯(cuò)誤"
Cancel = True
End If
End Sub
Private Sub grdScan_Change()
If grdScan.ApproxCount > 0 Then
Call SeekStudent(grdScan.Columns(0).CellText(grdScan.Bookmark))
End If
End Sub
Private Sub grdScan_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
'當(dāng)前行改變,則動(dòng)態(tài)改變所要顯示的記錄
If LastRow <> grdScan.Bookmark Then
If grdScan.ApproxCount > 0 Then
Call SeekStudent(grdScan.Columns(0).CellText(grdScan.Bookmark))
End If
End If
End Sub
Private Sub WriteImage(ByRef Fld As ADODB.Field, DiskFile As String)
Dim byteData() As Byte '定義數(shù)據(jù)塊數(shù)組
Dim NumBlocks As Long '定義數(shù)據(jù)塊個(gè)數(shù)
Dim FileLength As Long '標(biāo)識(shí)文件長度
Dim LeftOver As Long '定義剩余字節(jié)長度
Dim SourceFile As Long '定義自由文件號(hào)
Dim i As Long '定義循環(huán)變量
Const BLOCKSIZE = 4096 '每次讀寫塊的大小
SourceFile = FreeFile '提供一個(gè)尚未使用的文件號(hào)
Open DiskFile For Binary Access Read As SourceFile '打開文件
FileLength = LOF(SourceFile) '得到文件長度
If FileLength = 0 Then '判斷文件是否存在
Close SourceFile
MsgBox DiskFile & "無 內(nèi) 容 或 不 存 在 !"
Else
NumBlocks = FileLength \ BLOCKSIZE '得到數(shù)據(jù)塊的個(gè)數(shù)
LeftOver = FileLength Mod BLOCKSIZE '得到剩余字節(jié)數(shù)
Fld.Value = Null
ReDim byteData(BLOCKSIZE) '重新定義數(shù)據(jù)塊的大小
For i = 1 To NumBlocks
Get SourceFile, , byteData() ' 讀到內(nèi)存塊中
Fld.AppendChunk byteData() '寫入FLD
Next i
ReDim byteData(LeftOver) '重新定義數(shù)據(jù)塊的大小
Get SourceFile, , byteData() '讀到內(nèi)存塊中
Fld.AppendChunk byteData() '寫入FLD
Close SourceFile '關(guān)閉源文件
End If
End Sub
Private Function ReadImage(blobColumn As ADODB.Field) As String
'取得一個(gè)臨時(shí)性文件
Dim strFileName As String
strFileName = "ImageTmp"
Dim FileNumber As Integer '文件號(hào)
Dim DataLen As Long '文件長度
Dim Chunks As Long '數(shù)據(jù)塊數(shù)
Dim ChunkAry() As Byte '數(shù)據(jù)塊數(shù)組
Dim ChunkSize As Long '數(shù)據(jù)塊大小
Dim Fragment As Long '零碎數(shù)據(jù)大小
Dim lngI As Long '計(jì)數(shù)器
On Error GoTo errHander
ChunkSize = 2048 '定義塊大小為 2K
If IsNull(blobColumn) Then Exit Function
DataLen = blobColumn.ActualSize '獲得圖像大小
If DataLen < 8 Then Exit Function '圖像大小小于8字節(jié)時(shí)認(rèn)為不是圖像信息
FileNumber = FreeFile '產(chǎn)生隨機(jī)的文件號(hào)
Open strFileName For Binary Access Write As FileNumber '打開存放圖像數(shù)據(jù)文件
Chunks = DataLen \ ChunkSize '數(shù)據(jù)塊數(shù)
Fragment = DataLen Mod ChunkSize '零碎數(shù)據(jù)
If Fragment > 0 Then '有零碎數(shù)據(jù),則先讀該數(shù)據(jù)
ReDim ChunkAry(Fragment - 1)
ChunkAry = blobColumn.GetChunk(Fragment)
Put FileNumber, , ChunkAry '寫入文件
End If
ReDim ChunkAry(ChunkSize - 1) '為數(shù)據(jù)塊重新開辟空間
For lngI = 1 To Chunks '循環(huán)讀出所有塊
ChunkAry = blobColumn.GetChunk(ChunkSize) '在數(shù)據(jù)庫中連續(xù)讀數(shù)據(jù)塊
Put FileNumber, , ChunkAry() '將數(shù)據(jù)塊寫入文件中
Next lngI
Close FileNumber '關(guān)閉文件
ReadImage = strFileName
Exit Function
errHander:
ReadImage = ""
End Function
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -