<output id="os3gq"><ruby id="os3gq"></ruby></output>

    1. <mark id="os3gq"></mark>
    2. Access微課連載
      網站公告
      ·Access快速平臺QQ群號:84825014    ·Access快速開發平臺下載地址及教程    ·歡迎添加微信交流賬號:AccessoftChu    ·如何快速搜索本站文章|示例|資料    
      您的位置: 首頁 > 技術文章 > SharePoint/Access互聯網

      MS Access 上云端(1)

      時 間:2012-08-18 00:53:20
      作 者:dbaseIIIer   ID:22003  城市:深圳
      摘 要:云端計算已經距離我們不遠了,甚至觸手可及了。Access與云端數據庫連接其實就是那么簡單。
      正 文:

       

       

      第一講:用 Microsoft Access 來建立 SQL Azure Database 的登錄


      這里我們會用 Access 及 VBA 代碼 往 SQL Azure 進行 Pass-thru Query 來建立登入過程。登入后,Access 就能獲得 Azure 的 表單、視圖、存儲過程 的參照了。創建登錄的方式,其實就是一句Transact-SQL (T-SQL) :

      Create LOGIN MyLoginName WITH password = 'zX/w3-q7jU'


      而事實上,應用程序的用戶是不用記得這個那么難記的密碼的!因為這個用戶名和密碼其實只是提供我們的 Access 應用程序使用,用戶根本也看不到、摸不著的。


      其實,創建這個 SQL-Azure 的登錄號和密碼是有幾個步驟的。然而用來操作 SQL-Azure 的 T-SQL,其實大部分都與我們平常連入 MS SQL 相類似的。明細的介紹就看看一下的步驟吧!


      1) 建立一個“強”密碼,這個是與 Azure 的密碼策略攸關的

      使用“強”密碼是尤其重要的一件事,因為這事關到其他所有的安全措施的,在 SQL Azure 上根本就不能使用 Windows 自身的登錄系統 Windows Authentication,什么 WorkGroup, AD 等在公網上是沒有派上用場的。記得密碼至少8個字節,最少一個數字 或 一個特別符號 例如 &, -, /, ~, ^ 等。


      2) 所用的文本時不能與 ODBC 的連接字串有沖突的

      為了避免我們編寫 ODBC連接字串的麻煩,我們一定不可以在我們的 用戶名 和 密碼 上面 使用 []{}(),;?*!@ 這些字符。


      3) 創建一個 Transact-SQL 登錄語句

      我們將要在一個Pass-thru Query 里面使用 T-SQL Create LOGIN 來建立登錄。由于 Pass-thru 查詢是直接把 SQL 毫無隱藏的傳遞到 SQL Azure,所以大部分情況這些 SQL 就像我們平常用 SQL Server Management Studio SMSS 一樣的反應過來:

      Create LOGIN MyLoginName WITH password = 'zX/w3-q7jU'

      * 注意: Create LOGIN 只能是一個SQL批次語句里唯一的一條語句



      4) 確認 登錄名稱和密碼 是在 'master' 庫里面建立的

      這是必要的,因為在 SQL Azure 內與 SQL Server 不同的地方就是 "USE master" 是無效的語句!USE 語句根本就在 SQL Azure 里面不被支持的。因此,我們在 Access 里,就需要在連接字串列用 "DATABASE=master;" 來克服了。我們就像以下語句用一個讓人混淆的名字去建立一個函數去創建這個 連接字串吧:



      Public Function obfuscatedFunctionName() As String
          obfuscatedFunctionName = "ODBC;" _
              & "DRIVER={SQL Server Native Client 10.0};" _
              & "SERVER=tcp:MyServerName.database.windows.net,1433;" _
              & "UID=MyUserName@MyServerName;" _
              & "PWD=MyPassword;" _
              & "DATABASE=master;" _
              & "Encrypt=Yes"
      End Function




      我以后的連載里再會教大家怎么 用 Microsoft Access 去建立更安全的 SQL Azure 應用。



      5) 創建一個用來執行這個登錄的 SQL 執行語句

      把以下的 ExcecuteaterDSQL 函數放進一個公用模塊,這個函數就是用來執行我們的 Create LOGIN 語句的。我們隨時可以調用這個函數往 SQL Azure 發出執行一個沒有回傳的 T-SQL 語句。這個函數回傳 true 當語句能成功的執行到結束。





      '這函數是從 SQL Azure 服務的 master 庫里執行一個 Action Query SQL
      '使用方式: Call ExecMasterDBSQL(strSQL) or If ExecMasterDBSQL(strSQL) = False Then
      '
      Function ExecMasterDBSQL(strSQL As String) As Boolean
      On Error GoTo ErrHandle

          Dim db As DAO.Database
          Dim qdf As DAO.QueryDef

          ExecuteMasterDBSQL = False  '默認值

          Set db = CurrentDb

          '建立臨時不記名的 Pass-through QueryDef. This is a
          '這是 Microsoft Developer Reference 建議使用的習慣
          Set qdf = db.CreateQueryDef("")
          '調用函數取得連接 SQL Azure 的連接字串
          qdf.Connect = obfuscatedFunctionName
          '所要執行的SQL語句
          qdf.SQL = strSQL
          '若果 SQL 不需要回傳記錄的,就需要這個設置
          qdf.ReturnsRecords = False
          '執行這個查詢
          qdf.Execute dbFailOnError
          '若果沒有錯誤發生
          ExecMasterDBSQL = True

      ExitHere:
          '安全理由 也為釋放內存,清除變量
          On Error Resume Next
          Set qdf = Nothing 
          Set db = Nothing 
          Exit Function

      ErrHandle:
          MsgBox "Error " & Err.Number & vbCrLf & Err.Description _ 
          & vbCrLf & "In procedure ExecMasterDBSQL"
          Resume ExitHere 

      End Function 





      6) 讓用戶輸入登入名稱和密碼

      我們可以很簡單的做個窗體來讓用戶登入的。我們可以再窗體內添加兩個文本框,與及一個命令按鈕,兩個文本框都是不綁定數據源的。給它們取名 txtLoginName 及 txtPassword,命令按鈕為 cmdCreateLogin。那個表單就跟下面的差不多了:


       

      然后把下面的代碼到命令按鈕的Click事件。驗證了輸入的名稱和密碼已經錄入后,就會呼叫 ExecMasterDBSQL 函數來進行登錄到 SQL Azure master庫。




      Private Sub cmdCreateLogin_Click()

          Dim strSQL As String

          strSQL = "Create LOGIN " & Me.txtLoginName & " WITH password = '" & Me.txtPassword & "'"

          '檢查用戶和密碼是否已經錄入
          If Len(Me.txtLoginName & vbNullString) = 0 Then
              MsgBox "請在登錄用戶輸入數據", vbCritical
          ElseIf Len(Me.txtPassword & vbNullString) = 0 Then
              MsgBox "Please enter a value in the Password text box.", vbCritical
          Else
              '執行 ExecMasterDBSQL 函數
              If ExecMasterDBSQL(strSQL) = False Then
                  MsgBox "登入失??!", vbCritical
              Else
                  MsgBox "成功登入!", vbInformation
              End If
          End If
      End Sub



      以上的代碼檢查 ExecMasterDBSQL 函數的返回值,并知會用戶這次登錄是否成功建立。當我們成功建立一個登錄后,我們可以創建 “數據庫用戶”,并為這個新建的用戶授權。創建用戶我會放在 第二課為大家介紹的,暫時寫到這里。謝謝關注。


      注意:需要為 Access 連接 SQL Azure 你需要安裝 Microsoft SQL Server 2008 R2 ODBC Driver.

      32位 (x86) 操作系統 - 4.5 MB  下載
      64位 操作系統 - 4.5 MB 下載

      它們的詳細信息可以再這里參考: The Microsoft SQL Server 2008 R2 Feature Pack 有關 "Microsoft SQL Server 2008 R2 Native Client"。



      開發者你們好,這是地球信息思維開發者 dbaseIIIer (QQ325613888) 

      更多的 Access/VBA 互聯網交互技術,可以參考 www.beijingfeeling.com 內部欄目  互聯網技術欄目

      更多的思維在  新浪微博   Access貼吧  VisualPHP貼吧






      Access軟件網官方交流QQ群 (群號:198348076)       access源碼網店

      最新評論 查看更多評論(2)

      2015/7/8 9:03:41張斌
      今天在看,,還是有特別意義

      2012/8/18 9:29:18杜小杰
      不錯

      發表評論您的評論將提升作者分享的動力!快來評論一下吧!

      用戶名:
      密 碼:
      內 容:
       

      常見問答

      技術分類

      相關資源

      最新帖子

      關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助