1. 程式人生 > >VB查詢資料庫之登陸窗體——機房收費總結(一)

VB查詢資料庫之登陸窗體——機房收費總結(一)

    機房收費系統已經做了很長一段時間了,雖然到目前為止,仍然沒有結束,但已經結節尾聲了。我感覺現在有必要回首總結一下整個機房收費系統。

    除了結賬做了一半,報表接觸一點之外,其他的都基本上差不多了。從做過的這些和正要做的來分析機房收費,我把他分成了幾個部分:查詢資料庫類(簡單查詢顯示,組合查詢)、向資料庫寫入資料類、匯出表格類、報表類、各個表格之間相互連線類(結賬)。

    以登陸窗體為例子,簡單總結一下VB查詢資料庫實現登陸系統。我的登陸窗體設計如下:

     

     設計登陸窗體後,設計登陸模組,程式碼如下:   

Public UserName As String

Sub Main()
    Dim fLogin As New frmLogin
    fLogin.Show vbModal             '顯示登入窗體例項
    'OK為fMainForm類的成員
    If Not fLogin.OK Then '條件選的好
        'Login Failed so exit app
        End
    End If
    Unload fLogin


    Set fMainForm = New frmMain     '顯示主窗體例項
    fMainForm.Show
End Sub

'以檔案DSN標記,訪問ODBC資料來源

Public Function ConnectString() As String
  ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=**;PassWord=******;Initial Catalog='資料庫';Data Source=使用者IP"

End Function
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'executes SQL and returns Recordset
   Dim cnn As ADODB.Connection
   Dim rst As ADODB.Recordset
   Dim sTokens() As String
   
   On Error GoTo ExecuteSQL_Error
   
   sTokens = Split(SQL)
   Set cnn = New ADODB.Connection
   cnn.Open ConnectString
   
   If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then            '非Select語句
      cnn.Execute SQL   '資料量不大時,可以在連線上,直接執行SQL語句
      MsgString = sTokens(0) & " query successful"
      '雖然MsgString不是返回值,但傳遞方式是ByRef,實參地址和這個地址相同
   Else                                                                 'Select語句
      Set rst = New ADODB.Recordset
      rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
      '得到臨時表,遊標指向第一條記錄
      'get RecordCount,
      Set ExecuteSQL = rst
      MsgString = "查詢到" & rst.RecordCount & _
         " 條記錄 "
   End If
   
ExecuteSQL_Exit:
   Set rst = Nothing
   Set cnn = Nothing
   Exit Function
   
ExecuteSQL_Error:
   MsgString = "查詢錯誤: " & _
      Err.Description
   Resume ExecuteSQL_Exit
End Function

Public Function Testtxt(txt As String) As Boolean'判定不為空
    If Trim(txt) = "" Then
        Testtxt = False
    Else
        Testtxt = True
    End If
End Function

     通過模組,連線到資料庫中,然後再設定登陸窗體的程式碼,在登陸窗體中,點選登陸,先判斷使用者名稱和密碼是否符合要求,然後進入資料庫使用者表中,查詢使用者是否存在,若使用者存在,查詢密碼是否正確,若都正確,則顯示主窗體,登陸窗體隱藏。

     我的程式碼如下,僅供參考(歡迎提錯)

Option Explicit
'-----------------------------------------------------------------------------------
'窗體:登陸窗體
'說明:使用者名稱和密碼不能為空,查詢使用者名稱,對應的密碼,準確無誤後進入主介面,引入機器名函式
'------------------------------------------------------------------------------------
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long'呼叫計算機名函式
'該類的公有成員
Public OK As Boolean
'記錄登陸次數
Dim Count As Integer

Private Sub cmdCancel_Click()
    OK = False
    Me.Hide
End Sub

Private Sub cmdOk_Click() '登陸
     Dim txtSQL As String
    Dim mrc As ADODB.Recordset
    Dim MsgText As String
    UserName = ""
    If Trim(txtUserName.Text = "") Then '查詢使用者名稱是否存在
        MsgBox "沒有這個使用者,請重新輸入使用者名稱!", vbOKOnly + vbExclamation, "警告"
        txtUserName.SetFocus
    Else
        txtSQL = "select * from user_Info where userID ='" & txtUserName.Text & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        
        If mrc.EOF Then
            MsgBox "沒有這個使用者,請重新輸入使用者名稱!", vbOKOnly + vbExclamation, "警告"
            txtUserName.SetFocus
        Else
            If Trim(mrc.Fields(1)) = Trim(UserID.Text) Then
                OK = True
                mrc.Close
                Me.Hide
                UserName = Trim(txtUserName.Text)
            Else
                MsgBox "輸入密碼不正確,請重新輸入!", vbOKOnly + vbExclamation, "警告"
                UserID.SetFocus
                UserID.Text = ""
            End If
        End If
    End If
    
    Count = miCount + 1'限制登陸次數
    If Count = 3 Then
        Me.Hide
    End If
    Exit Sub

        
End Sub

Private Sub Form_Load()
    Dim sBuffer As String
    Dim lSize As Long
    
    sBuffer = Space$(255)
    lSize = Len(sBuffer)
    Call GetUserName(sBuffer, lSize)
    'API中字串做引數,需要提前確定大小
    
    If lSize > 0 Then
        txtUserName.Text = ""
    Else
        txtUserName.Text = vbNullString '空字串
    End If
    
    OK = False
    miCount = 0
End Sub

    VB查詢資料庫之登陸窗體到此就結束了,下一篇計劃是VB查詢資料庫之組合查詢。 

相關推薦

VB查詢資料庫登陸窗體——機房收費總結

    機房收費系統已經做了很長一段時間了,雖然到目前為止,仍然沒有結束,但已經結節尾聲了。我感覺現在有必要回首總結一下整個機房收費系統。     除了結賬做了一半,報表接觸一點之外,其他的都基本上差不多了。從做過的這些和正要做的來分析機房收費,我把他分成了幾個部分:查詢資

VB查詢資料庫組合查詢——機房收費總結

     在機房收費系統中,組合查詢用的還是挺多的,像上機狀態查詢窗體、學生上機統計資訊窗體、操作員工記錄窗體、基本資訊維護窗體。這其中,學生基本資訊維護窗體中的東西比較多,就以它為例子,說說組合查詢吧!      學生基本資訊維護窗體如圖所示:     先把程式碼放在

機房收費系統——組合查詢

對於敲完機房收費系統的我們對於組合查詢應該都不在陌生了吧。想想當時我在敲之前聽別人說它比較麻煩的時候,我足足停了兩天才開始對這部分下手。一下手就感覺我之前在學生資訊管理系統裡面見過啊(根據姓名、班級、

機房收費系統-命名規範

【前言】 命名規範至關重要,做好機房系統的第一步工作。 【內容】 1.主選單命名 一般使用者:GeneralUser 學生檢視餘額:StuInquiryBalanceMenu 學生檢視上機記錄:StuInquiryLineRecordMenu 學生充值記錄查詢:StuInquiryRec

機房收費系統------登入&修改

前言 進行機房也有一段時間了,一直處於走迷宮的狀態不知從何入手。從生活中出發,我們在使用某個系統時,一般情況下最先進入該系統的登入頁面。現在輪到自己敲系統了,當然也是從登入開始啦。 正文 機房收費系統登入窗體的思路,和有原始碼的學生系統的思路是大同

機房收費系統——退卡操作

在敲機房的時候,感覺退卡挺簡單的,很快的完成了。但是驗收的時候,它卻出問題了——該卡正在上機,可以退卡,但是卻沒有對下機進行處理。現在重新來實現這個功能,其實仍然也是很簡單的。 一、整理思路    

網路安全、Web安全、滲透測試筆經面經總結

轉載地址:https://www.cnblogs.com/christychang/p/6041012.html   本篇文章總結涉及以下幾個方面: 對稱加密非對稱加密? 什麼是同源策略? cookie存在哪裡?可以開啟嗎 xss如何盜取cookie? tcp、udp的區別及tcp三次

WebGIS ArcGIS API for JavaScript 總結

幾天時間過完了一本《WebGIS 從基礎到開發實踐》 如今閱讀技術書籍也同讀小說一樣,風裡來雨裡去,恢巨集鉅著,從洪荒原始到當今現代。由於是媳婦在圖書館給借的書,在這裡將這本書做一個總結和筆記。 一、為什麼要讀這本書。 美國的esri公司,全稱美國環境系統研究所公司

機房收費系統-組合查詢

【前言】 一拖再拖,組合查詢終於做完了,並且弄明白了其中的含義。下面就以操作員的工作記錄窗體為例,來總結一下組合查詢吧! 【內容】 組合查詢: 第一行(可單獨查詢)即為第一個條件,第二行為第二個條件,第三行為第三個條件。利用“組合關係”控制元件將條件連線起來,進行組合查詢。 導圖 這張

機房收費系統---組合查詢

  涉及的窗體有學生基本資訊維護,學生上機記錄查詢,學生上機統計查詢初次見到組合查詢介面,有種似曾相識的感覺。沒錯,我們在學生資訊管理系統裡面見過類似的。也可以說我們已經接觸過組合查詢了。不同的是這次的組合查詢要多一點,相對來講複雜一點。今天我就用學生基本資訊維

機房收費系統—再看組合查詢

寫在前面: 組合查詢顧名思義是多條件查詢,關鍵就是確定在一定的條件下需要查詢與這個條件想對應的內容,確定好查詢內容之後,每一次查詢都是在上一個條件基礎上加一個條件的查詢。 下面就看一下機房中複合查詢

機房收費系統總結

機房收費系統涉及到的版塊比較多,因此涉及到的功能也比較多,而這些功能恰巧是需要用程式碼來實現的,下面我就來做一些分享了。 第一:如何一鍵刪除vb窗體中所有控制元件的內容,(省程式碼的操作) rem:一鍵清除vb控制元件中所有的內容 Private Sub cmdclea

機房收費系統下機退卡

今天我又回顧了一下 機房管理系統,看見了我熟悉的花費了我三天才敲好的窗體(當然想了兩天),然後今天我就來總結一下下機退卡吧!  第一句話是讓子窗體在父窗體中的圖片框裡顯示! 其他的然後就是定義函式名

機房收費系統項目開發計劃

tro 外部 程序語言 友好 知識 add sql 數據庫 名稱 項目開發計劃 1引言 1.1編寫目的 主要對開發機房收費系統的費用、時間、進度、人員組織、硬件設備的配置、開發環境和執行環境的配置進行說明。為開發的下一步做準備。預期讀者是系統分析員和開發者。

機房收費系統-上下機

【前言】 開始做機房時間也不短了,也看了不少大佬的部落格,但是真的是每個人有每個人的思路,所以我也有了自己的思路。剛開始的時候沒有什麼思路,不知道如何下手,只有靜下心來,一點點往下走,才能理清自己的思路。有些地方可能還存在不足,望指點。 【內容】 上機和下機導圖 上機程式碼 Priv

JDBC連線資料庫從結果集中獲取物件3

測試利用反射返回List物件的資料。 public <T> List<T> getForList(Class<T> clazz, String sql, Object... args) { List<T> l

機房收費系統-結賬

【前言】 在寫結賬程式碼之前,我們要明白結賬的含義和思路。 含義:是誰來結賬?結的是誰的賬?這是必須弄明白的。 結賬:是管理員來結賬,管理員結的是操作員的賬。 之前總是聽別人說結賬是個難點,所以心裡有點抵觸,並且不想去做,感覺自己不會做,弄不明白。只有做過之後才

機房收費系統問題總結

出錯原因:vb工程引用的某個檔案丟失,從而引起其他莫名其妙的錯誤。解決辦法:開啟工程選單-引用...,在彈出的視窗中檢視那些打鉤的條目。如果出現某條目丟失的文字提示,請補上註冊相應檔案即可。二、實時錯誤91,"物件變數未設定或With塊變數未設定",這個錯誤一般是未連線上資料庫原因:1、執行連線資料庫的語句有

機房收費系統——學生基本資訊維護

概述 學生基本資訊維護裡面所用到的知識點有查詢類,更準確的說是組合查詢。該知識點堪稱機房收費系統三大難點之一。那麼它的難到底難在哪裡?下面我們來逐一進行分析。 流程圖 通過上面兩張圖可以清晰的看到,查詢難在哪裡: 首先、我們需要進行判斷查詢是

機房收費系統——登入介面

概述 機房收費系統其實和學生資訊管理系統差不多,難度麼有增加多少。關鍵在於需要我們在敲程式碼之前把思路搞清楚,程式碼並不是什麼大事。這裡我就採用了畫流程圖的形式,把要實現的功能都畫出來,然後進行程式碼的編輯。下面就來分享我的思路和部分程式碼。 流程圖