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

    1. <mark id="os3gq"></mark>
    2. 變速箱你可能會碰到的問題:整機庫存月結模塊數據的正確傳遞-七夜
      Access軟件網QQ交流學習群(群號碼198465573),歡迎您的加入!
      首頁 >技術文章> Access開發平臺


      變速箱你可能會碰到的問題:整機庫存月結模塊數據的正確傳遞

      發表時間:2012/8/9 2:44:14 評論(1) 瀏覽(3497)  評論 | 加入收藏 | 復制
         
      摘 要:變速箱整機庫存月結值的正確傳遞
      正 文:

      關于變速箱的第一個難點

      整機庫存月結表的修改和刪除功能之間的數據傳遞

      雖然 老師已經在Acces開發平臺--數值型變量在修改與刪除功能中的使用方法\數字型變量用法http://www.www.beijingfeeling.com/article-show.asp?id=3318中解釋了這節難點的操作,但是在實際過程中我還是在這里耽誤了很長時間,主要是老師有一句話講的比較模擬兩可,

      進入child主窗體的第一個字段獲得焦點事件代碼區
      將這段里面的selectstr   改為NumSelectID

       在以往的數據記錄傳遞我們使用的都是selectstr 但在這一個模塊中就行不通了,數據間的傳遞必須要通過自動編號的主鍵ID來進行數據傳遞。而selectstr是我們在模塊中定義的為string型的變量,是不能夠接受來自主鍵ID的值的,主鍵ID的值是long型,所以在定義的時候要在模塊中重新定義一個新的接受數值型數據傳遞的變量NumSelectID 

      可能老師覺得這里比較簡單,所以沒有比較詳細的教程,我是因為在這里耽誤了兩個晚上才解決了問題,剛好在群里有看到也有人碰到了我類似的問題,就擅自對老師原有的教程進行一個補充,望后來人少走彎路。

       

      '在模塊中定義數值型變量
      Public NumSelectID As Long

      進入整機庫存月結修改窗體的加載事件代碼,代碼如下:

      Private Sub Form_Load()
          Me.RecordSource = "Select * FROM tblZjkcyj Where Id =
      '" & selectstr & "'"
      End Sub

      修改方法,將上面紅色部分全部改為這里的藍色  " & NumSelectID

      這里之所以要吧紅色的那么多的標點更改為藍色這么少的標點,實際上是VBA的數據類型不一樣,用法也不一樣的原因。

      進入child主窗體的第一個字段獲得焦點事件代碼區
      將這段里面的selectstr   改為NumSelectID

      基礎窗體一定要有ID的這個字段,我的之前沒有添加這個字段,錯誤就錯誤在這里,另外獲得焦點時間不在是【整機名稱】文本框了,而是【ID】這個控件了。

      錯誤代碼:

      Private Sub 整機名稱_GotFocus()

      On Error GoTo Err_整機名稱_GotFocus:

      NumSelectID = Me.ID

      Forms!usysfrmMain!labFind.Tag = 1

      Forms!usysfrmMain!btnEdit.Tag = 999

      Exit_整機名稱_GotFocus:

      Exit Sub

      Err_整機名稱_GotFocus:

      Resume Exit_整機名稱_GotFocus

       

      End Sub

      若使用錯誤代碼,你必須雙擊整機名稱這個字段,使得光標在整機名稱里面變得閃爍才可以使得整機名稱真正獲得焦點,才能夠進行ID的值賦值給NumSelectID;

      而這樣的功能肯定不是我們希望的,我們希望的是直接單擊某一行的任何一個地方都使得NumSelectID能夠正確賦值。這里用到了一個集成到平臺里的函數 selectrecord(),在變速箱的開發平臺上,這個函數已經被老師們封裝到我們看不到的集成函數中了,而這個函數實際上我們在VBA入門教程中有見過,代碼是如下部分:

       
      Function selectRecord()
          On Error GoTo Err_selectRecord:
      '  鼠標單擊時選定整行記錄
          DoCmd.RunCommand acCmdSelectRecord
      Exit_selectRecord:
          Exit Function
      Err_selectRecord:
          Resume Exit_selectRecord
      End Function

      其功能據我推測應該是不管你選擇的是該行記錄的哪個字段,此函數都能使得記錄的第一列獲得焦點,從而解決了我們隨便單擊某行均能正確傳遞所選記錄的目的。

      在該整機庫存月結模塊中,在窗體的成為當前事件中使用了平臺的這個集成函數= selectrecord(),所以無論我們選擇哪一行,當該行變色的時候,該行的第一列已經獲得了焦點,所以以上紅色的這段以整機名稱獲得焦點事件的代碼應該改為以ID文本框獲得焦點事件:

      正確代碼如下

      Private Sub ID_GotFocus()

      On Error GoTo Err_ID_GotFocus:

      NumSelectID = Me.ID

      Forms!usysfrmMain!labFind.Tag = 1

      Forms!usysfrmMain!btnEdit.Tag = 999

      Exit_ID_GotFocus:

      Exit Sub

      Err_ID_GotFocus:

      Resume Exit_ID_GotFocus

       

      End Sub

      至此,功能實現。希望后來人少走彎路。


      Access軟件網交流QQ群(群號:198465573)
       
       相關文章
      變速箱學習筆記_新建窗體的一點體會  【天行健客  2009/5/29】
      我做變速箱的每一天,今天做完作業三。  【小王  2010/2/3】
      變速箱作業四學習體會  【常萬兔  2010/7/21】
      變速箱三個作業的學習體會  【lfw07  2010/9/28】
      變速箱教程學習心得  【煮茶論道  2011/10/1】
      學習變速箱系統的銷售訂單后的心得   【徐海軍  2012/5/21】
      學習變速箱系統的銷售訂單后的心得(2)  【徐海軍  2012/5/23】
      我的變速箱作業三完成后的總結筆記  【七夜  2012/8/5】
      變速箱開發筆記概要  【七夜  2012/9/8】
       
       訪客評論
      2012/8/9杜小杰
      UP

      總記錄:1篇  頁次:1/1 9 1 :
       
       發表評論
      評論內容 (必填)

      常見問答
      技術分類
      相關資源
      文章搜索
      關于作者

      七夜

      文章分類

      文章存檔

      友情鏈接
       
         
      湖北11选5