none
抓取登錄的使用者&新增資料後紀錄日期與時間 RRS feed

  • 問題


    • 作業系統版本- Windows 7 32
    • 開發工具版本-Visual Studio 2010 MS SQL SERVER 2008 R2 EXPRESS
    • 開發環境-Windows Form
    • 錯誤訊息與狀況描述-描述愈清楚,快速得到回應的機率愈大 .
    • 錯誤的片段程式碼-有程式碼會比較好追問題 .
    • 有資料庫存取問題的話,說明一下資料庫的版本,資料表,SQL 指令等 .

    資料表1.USER

    USERID USERNAME PASSWORD

    TEST       王大明        ****

    TEST2     林小如        ****  

    資料表2.TEST1

    USERID ID INPUTDATE INPUTTIME  INPUTQTY OUTDATE OUTTIME OUTQTY

    功能描述:當[王大明]登入帳號後,選擇開啟FORM1.VB

    系統會顯示

    TEXTBOX1.TEXT=TEST

    TEXTBOX2.TEXT=王大明

    新增按鈕 修改按鈕 刪除按鈕 存檔按鈕

    當按新增按鈕 新增資料

    資料表2.TEST1連到DataGridView 開始新增

    ID INPUTDATE INPUTTIME  INPUTQTY OUTDATE OUTTIME OUTQTY

    001                                      100

    按存檔後

    資料庫會自動抓取當下的日期與時間 完畢

    ---------------------------------------------

    目前的問題

    1.目前我能抓到顯示所有的使用者 無法抓到登入的那個使用者

            MyBS = UserBindingSource
            MyIDFieldName = "UserID"
            MyTableName = "Users"

    2.紀錄時間要用系統自行新增

    現在只能用手KEYIN 無法系統自己取得...

    3.關於USER 和 TEST1 的資料表裡的關聯設定我看書 還是有點不懂概念,TEST1 USER(TEST1裡的每筆資料可以是不同的使用者)所以 誰是1 誰是N,?謝謝

    2012年10月22日 下午 02:44

解答

  • 您可以參考這個檔案,裡面有解決你第1項問題的教學,[4種資料庫的程式連線方式

    第2項的解答是當你新增一筆資料時,可以在 INPUTDATE 欄位中加入 DateTime.Now.ToString("yyyy/MM/dd") 以及 
    INPUTTIME 欄位加上 DateTime.Now.ToString("hh:mm:ss"),
    或這兩個欄位合併成一個叫做 DateTime 的欄位,加入 
     DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")記得資料庫欄位屬性要設定成 Data 。離開時間的記錄方式與進入的相同。

    第3項的解答,誰是1誰是N,USERID 和 ID 一定要設定成"主鍵",新增一筆資料後主鍵會自動編號(1、2、3、4.....),
    而且號碼不會重複,先新增的資料,號碼就會比較小(ex: 2),新增100筆資料後,第102筆資料的"主鍵"號碼就會是102。



    • 已編輯 C.Kevin 2012年10月22日 下午 03:15
    • 已標示為解答 2012年10月24日 下午 03:07
    2012年10月22日 下午 03:10
  • fmMain.FPowerCheck = True
    fmMain.FUserID = qryUsers.UserID
    fmMain.FUserName = qryUsers.UserName

    您登入成功之後,會將qryUsers.UserName Assign給fmMain.FUserName屬性,然後將值呈現出來!

    值不都在frmMain的FUserID, FUserName屬性之中?


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 2012年10月24日 下午 03:09
    2012年10月24日 上午 04:51
  • 謝謝大家的幫忙第一項算是解決了

    最後附上程式碼

    在Main.vb裡

        Private Sub fmMain_Load(ByVal sender As System.Object, _
                   ByVal e As System.EventArgs) Handles MyBase.Load
    
            UserLabel.Text = ""
            '檢查使用者代碼資料表是否有ADMIN的使用者
            SyncAdminUsers()
            '同步所有的程式代碼
            SyncProgramID()
            '同步所有的使用者執行權限
            SyncUserAuthority()
            '開啟認證登入表單對話方塊
            Dim fmLogin As New fmLogin
            fmLogin.ShowDialog()
            '如果未通過認證,就結束系統
            If Not FPowerCheck Then
                Me.Close()
            End If
            '在狀態列顯示登入的使用者代碼與使用者名稱
            Userlabel.Text = "使用者:(" & Fuserid & ")" & Fusername
            Label1.Text = Fuserid
    
            Label2.Text = Fusername
    
    
            '檢查每一個程式項目對登入的使用者是否有執行權限
            SyncProgramsRight()
    
        End Sub


    在BUTTON裡

     Private Sub miDtnSteps0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miDtnSteps0.Click
            Dim fmDtnSteps0 As New fmDtnSteps0
    
    
            fmDtnSteps0.MdiParent = Me
    
            fmDtnSteps0.Fuserid = Label1.Text
            fmDtnSteps0.Fusername = Label2.Text
            fmDtnSteps0.Show()
    
           
    
    
    
        End Sub

    在DtnSteps0.vb

    Private Sub fmDtnSteps0_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Label5.Text = Fuserid
            Label6.Text = Fusername
    
            ClearAllData()
    
    
        End Sub

    這樣子就可以拿來使用了:p感謝大家!,不過小弟用很笨的方法寫吧!

    • 已標示為解答 2012年10月24日 下午 03:06
    2012年10月24日 下午 03:06
  • 您好,
    看了您的Code後,才比較了解您需要的東西! Sorry!
    您可以在登入後使用 AppDomain的SetData 來記錄它,就不需要每次都傳來傳去了,如下,

    fmLogin中登入成功時,透過 AppDomain.CurrentDomain來記錄,

    fmMain.FPowerCheck = True
    fmMain.FUserID = qryUsers.UserID
    fmMain.FUserName = qryUsers.UserName
    Me.Close()
    改成
    fmMain.FPowerCheck = True
    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    currentDomain.SetData("FUserID", qryUsers.UserID)
    currentDomain.SetData("FUserName", qryUsers.UserName)
    Me.Close()


    在要取資料時使用 AppDomain的GetData
    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    MsgBox(currentDomain.GetData("FUserID"))
    MsgBox(currentDomain.GetData("FUserName"))

    您可以試看看哦!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 2012年10月27日 上午 08:48
    2012年10月25日 上午 02:47

所有回覆

  • 您可以參考這個檔案,裡面有解決你第1項問題的教學,[4種資料庫的程式連線方式

    第2項的解答是當你新增一筆資料時,可以在 INPUTDATE 欄位中加入 DateTime.Now.ToString("yyyy/MM/dd") 以及 
    INPUTTIME 欄位加上 DateTime.Now.ToString("hh:mm:ss"),
    或這兩個欄位合併成一個叫做 DateTime 的欄位,加入 
     DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")記得資料庫欄位屬性要設定成 Data 。離開時間的記錄方式與進入的相同。

    第3項的解答,誰是1誰是N,USERID 和 ID 一定要設定成"主鍵",新增一筆資料後主鍵會自動編號(1、2、3、4.....),
    而且號碼不會重複,先新增的資料,號碼就會比較小(ex: 2),新增100筆資料後,第102筆資料的"主鍵"號碼就會是102。



    • 已編輯 C.Kevin 2012年10月22日 下午 03:15
    • 已標示為解答 2012年10月24日 下午 03:07
    2012年10月22日 下午 03:10


  • 1.目前我能抓到顯示所有的使用者 無法抓到登入的那個使用者

            MyBS = UserBindingSource
            MyIDFieldName = "UserID"
            MyTableName = "Users"

    2.紀錄時間要用系統自行新增


    1.可使用 Environment.UserName 取得目前登入 Windows 作業系統之人員的使用者名稱

    2.可使用 Column的預設值,設定為 GetDate()


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月23日 上午 12:01
  • 謝謝我第二項可以解決了~

    關於第一項,我不是資料庫連線

    我是使用者登入帳號跟密碼的權限

    第三項,所以USERID 是1?

    ID是N?

    謝謝幫助,幫了我很大的忙

    2012年10月23日 上午 12:03
  • TO 亂馬客 

    關於第一點,可能我表達不清楚,

    不是WINDOWS登入

    只是開啟VB後有一個login.vb 登入<<<的那位使用者而已

    謝謝

    2012年10月23日 上午 02:37
  • 第一項你要的答案就在那份資料裡,"連線方式"只是字面上的意思。

            Dim str As String = "Provider=Microsoft.Jet.Oledb.4.0;Data source=C:\ac.mdb"
            Dim conn As OleDbConnection = New OleDbConnection(str)
            conn.Open()
    
            Dim str1 As String = "select [ID], [姓名], [性別], [電話], [住址], [生日] from 客戶 where 姓名 = @name "
            Dim cmd As OleDbCommand = New OleDbCommand(str1, conn)
            cmd.Parameters.AddWithValue("@name", Trim(TextBox1.Text))
    
            Dim adp1 As OleDbDataAdapter = New OleDbDataAdapter(cmd)
            Dim set1 As DataSet = New DataSet
            adp1.Fill(set1, "la")
    
            TextBox2.Text = set1.Tables("la").Rows(0)("ID")
            TextBox3.Text = set1.Tables("la").Rows(0)("性別")
            TextBox4.Text = set1.Tables("la").Rows(0)("電話")
            TextBox5.Text = set1.Tables("la").Rows(0)("住址")
            TextBox6.Text = set1.Tables("la").Rows(0)("生日")
    
            conn.Close()

    上面的程式碼只是欄位名稱以及資料庫和你的不一樣,你應變一下應該就可以了。
    登入系統大致上就是用 Select.....From.....去搜尋資料庫中有沒有符合的資料,
    這時就可以判斷 set1.Tables("la").Rows.Count = 0,等於0就表是使用者名稱或密碼錯誤,
    能夠符合的資料通常也是唯一。

    有點不懂第3項的問題,什麼1 什麼N的是指什麼,可以再說明清楚一些嗎?


    • 已編輯 C.Kevin 2012年10月23日 上午 11:17
    2012年10月23日 上午 11:14
  • 感謝你的回覆~

    第三項就是

    資料表 user 與 資料表 test

    ado.net 我一開始是照書本加入Model.edmx

    兩個資料表要使用關聯@@

    要判定 是1對n 還是n對1

    2012年10月23日 上午 11:36
  • 第三項,所以USERID 是1?

    ID是N?

    是的,假設帳號與密碼是唯一的的情況下,USER 只有一位(這裡是1),而USER 會重複登入系統使用,
    這時資料表2. test1 就會一再紀錄該 USER 什麼時間登入與登出的使用時間(這裡就是 N 了),
    而ID 紀錄的號碼最好是資料表1. USER 的"主鍵"(或任何您給它的代號),這樣就成為關聯了。 

    2012年10月23日 下午 12:02

  •                     .INtime = DateTime.Now.ToString("HH:mm:ss") 

                               ~~~~~~~~~~~~~~~~~~~~~~~

    型別string的值無法轉換成system.timespan?

    程式碼是有錯誤嗎??

    謝謝



    • 已編輯 2012年10月23日 下午 12:10 把錯誤訊息附上
    2012年10月23日 下午 12:05
  • 我剛試跑是OK的,h 是12小時制,H 是24小時制。

     Label1.Text = DateTime.Now.ToString("HH:mm:ss")

    您可以參考下面網頁有關日期的編排方式:
    http://msdn.microsoft.com/zh-tw/library/b5xbyt6f(v=vs.80).aspx
    http://msdn.microsoft.com/zh-tw/library/hcxe65wz(v=vs.80).aspx
    2012年10月23日 下午 12:13
  • ' Use the TimeSpan constructor to specify...
    ' ... days, hours, minutes, seconds, milliseconds.
    Dim span As TimeSpan = New TimeSpan(1, 2, 0, 30, 0)

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月23日 下午 12:42
  • 改STRING型態就可以了

    只是..到時候如果想要計算時間 要怎麼處理?

    2012年10月23日 下午 02:02
  • TO:C.Kevin

    謝謝你的回答,關於第一項

    我是有參考書本的範例做的

    他的LOGIN.VB

    部分程式

                    Main.Check = True
                    Main.UserID = qryUsers.UserID
                    Main.username = qryUsers.UserName

    在main.vb 有拉了一個statusstrip 工具

    load裡就有一段程式

     UserLabel.Text = "使用者:(" & UserID & ")" & UserName

    之後我開啟新的test.vb

    也想要把userid 與 username 抓進來 顯示在 label1.text 與 label2.text

    謝謝

    2012年10月23日 下午 03:23
  • 你可以參考這個資料,[日期的增減]。
    2012年10月23日 下午 03:24
  • 你可以把書本範例程式碼都貼上來嗎? 或許這樣可以更清楚些知道怎麼讓 Label 在你想要的地方顯示想要的字串。

    所以你最後一段的意思是說你自己另建了一個新專案,
    想如法泡製但卻怎麼沒如預期的出現想要的結果是嗎?
    • 已編輯 C.Kevin 2012年10月23日 下午 04:09
    2012年10月23日 下午 03:50
  • Public Class fmLogin ' TODO: 插入程式碼,利用提供的使用者名稱和密碼執行自訂驗證 ' (請參閱 http://go.microsoft.com/fwlink/?LinkId=35339)。 ' 如此便可將自訂主體附加到目前執行緒的主體,如下所示: ' My.User.CurrentPrincipal = CustomPrincipal ' 其中 CustomPrincipal 是用來執行驗證的 IPrincipal 實作。 ' 接著,My.User 便會傳回封裝在 CustomPrincipal 物件中的識別資訊, ' 例如使用者名稱、顯示名稱等。 Dim iCheckTimes As Byte Private Sub fmLogin_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load '認證次數 iCheckTimes = 0 End Sub Private Sub OK_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles OK.Click Using context As New VS2010Entities Dim qryUsers = (From M In context.Users _ Where M.UserID = UsernameTextBox.Text _ And M.PasswordCode = PasswordTextBox.Text _ Select M.UserID, M.UserName).FirstOrDefault If qryUsers Is Nothing Then MessageBox.Show("使用者代碼或密碼錯誤!", "認證失敗", _ MessageBoxButtons.OK, MessageBoxIcon.Error) fmMain.FPowerCheck = False iCheckTimes = iCheckTimes + 1 If iCheckTimes = 3 Then MessageBox.Show("認證失敗已3次,系統將結束執行!", "認證失敗", _ MessageBoxButtons.OK, MessageBoxIcon.Error) Me.Close() End If Else fmMain.FPowerCheck = True fmMain.FUserID = qryUsers.UserID fmMain.FUserName = qryUsers.UserName Me.Close() End If End Using End Sub Private Sub Cancel_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Cancel.Click fmMain.FPowerCheck = False Me.Close() End Sub Private Function msSplash() As Object Throw New NotImplementedException End Function End Class

    範例
    • 已編輯 2012年10月24日 上午 03:45 範例補充
    2012年10月24日 上午 03:42
  • Public Class fmMain
    
        '是否已經通過認證
        Public FPowerCheck As Boolean = False
        '執行使用者的代碼與使用者名稱
        Public FUserID, FUserName As String
        '報表條件參數
        Public FReportCondi As New TReportCondition
    
    Private Sub SyncAdminUsers()
    
            Using context As New VS2010Entities
    
                Try
                    '檢查使用者代碼資料表是否有ADMIN的使用者
                    Dim qryAdmin = (From U In context.Users _
                                    Where U.UserID = "ADMIN" _
                                    Select U.UserID).FirstOrDefault
                    If qryAdmin Is Nothing Then
                        '新增ADMIN使用者
                        Dim NewUsers As New Users
                        With NewUsers
                            .UserID = "ADMIN"
                            .UserName = "系統管理者"
                            .PasswordCode = "ADMIN"
                        End With
                        '加入ADMIN使用者
                        context.AddObject("Users", NewUsers)
                        '更新資料
                        context.SaveChanges()
                    End If
    
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "啟動錯誤", MessageBoxButtons.OK, _
                                    MessageBoxIcon.Error)
                End Try
    
            End Using
    
        End Sub
    
     Private Sub fmMain_Load(ByVal sender As System.Object, _
                    ByVal e As System.EventArgs) Handles MyBase.Load
    
            UserLabel.Text = ""
            '檢查使用者代碼資料表是否有ADMIN的使用者
            SyncAdminUsers()
            '同步所有的程式代碼
            SyncProgramID()
            '同步所有的使用者執行權限
            SyncUserAuthority()
            '開啟認證登入表單對話方塊
            Dim fmLogin As New fmLogin
            fmLogin.ShowDialog()
            '如果未通過認證,就結束系統
            If Not FPowerCheck Then
                Me.Close()
            End If
            '在狀態列顯示登入的使用者代碼與使用者名稱
            UserLabel.Text = "使用者:(" & FUserID & ")" & FUserName
            '檢查每一個程式項目對登入的使用者是否有執行權限
            SyncProgramsRight()
    
        End Sub

    範例
    • 已編輯 2012年10月24日 上午 03:46 補充
    2012年10月24日 上午 03:45
  • 可否問一下,現在的問題是那一部份了?

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年10月24日 上午 03:47
  • 你可以把書本範例程式碼都貼上來嗎? 或許這樣可以更清楚些知道怎麼讓 Label 在你想要的地方顯示想要的字串。

    所以你最後一段的意思是說你自己另建了一個新專案,
    想如法泡製但卻怎麼沒如預期的出現想要的結果是嗎?

    你好~

    不是!

    我是加入text.vb 於這個專案裡面喔!



    2012年10月24日 上午 03:48
  • 可否問一下,現在的問題是那一部份了?

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    第一項的問題!!謝謝

    有點像是網頁的session功能?紀錄使用者的問題

    • 已編輯 2012年10月24日 上午 03:58 補充
    2012年10月24日 上午 03:50
  • fmMain.FPowerCheck = True
    fmMain.FUserID = qryUsers.UserID
    fmMain.FUserName = qryUsers.UserName

    您登入成功之後,會將qryUsers.UserName Assign給fmMain.FUserName屬性,然後將值呈現出來!

    值不都在frmMain的FUserID, FUserName屬性之中?


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 2012年10月24日 下午 03:09
    2012年10月24日 上午 04:51
  • to:亂馬客

    對!都在fmMain裡...(父)

    在text.vb裡(子) 抓取會抓不到值...


    2012年10月24日 上午 05:07
  • 請問您text.vb的內容是??

    在那裡去使用text.vb呢 ? 

    或許能以把frmMain 傳進  text.vb之中,或是將使用者的內容放在一個結構之中,傳入也可以哦!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月24日 上午 06:11
  • 請問您text.vb的內容是??

    在那裡去使用text.vb呢 ? 

    或許能以把frmMain 傳進  text.vb之中,或是將使用者的內容放在一個結構之中,傳入也可以哦!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    你是說傳遞的方法可以用下列這個嗎?

    在fmMain裡面 button1-->進到text.vb

    .FUserID = qryUsers.UserID
    
    text.FUserName = qryUsers.UserName
    

    這樣text.vb 

     Label1.Text = "使用者:(" & UserID & ")" & UserName
    是嗎?

    謝謝

    2012年10月24日 上午 06:24
  • 嗯,您可試一下!

    請問text.vb的內容是??  我沒看到text.vb呢!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年10月24日 上午 09:17
  • 對,因為你提到text.vb,我們也要知道你text.vb裡有什麼才能回答你。

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年10月24日 上午 10:19
  • 你也可以起一個Class,那全個程式每個form也能用上

    Public Class Module1 
       
    Public Shared UserName As String
        Public Shared UserID As String 
        Public Shared DisplayName As String  
    End Module 


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年10月24日 上午 10:26
  • 嗯,您可試一下!

    請問text.vb的內容是??  我沒看到text.vb呢!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    我就是要在text.vb上

    顯示

    Label1.Text = "使用者:(" & UserID & ")" & UserName

    這樣子而已!

    2012年10月24日 下午 02:34
  • 你是說傳遞的方法可以用下列這個嗎?

    在fmMain裡面 button1-->進到text.vb

    .FUserID = qryUsers.UserID
    
    text.FUserName = qryUsers.UserName

    這樣text.vb 

     Label1.Text = "使用者:(" & UserID & ")" & UserName
    是嗎?

    謝謝

    以Main裡

    這樣寫qryUser 未宣告

        Private Sub miDtnSteps0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miDtnSteps0.Click
            Dim fmDtnSteps0 As New fmDtnSteps0
    
    
            fmDtnSteps0.MdiParent = Me
            fmDtnSteps0.Show()
    
            fmDtnSteps0.Fuserid = qryUsers.UserID
            fmDtnSteps0.Fusername = qryUsers.UserName
        End Sub


    2012年10月24日 下午 02:38
  • 謝謝大家的幫忙第一項算是解決了

    最後附上程式碼

    在Main.vb裡

        Private Sub fmMain_Load(ByVal sender As System.Object, _
                   ByVal e As System.EventArgs) Handles MyBase.Load
    
            UserLabel.Text = ""
            '檢查使用者代碼資料表是否有ADMIN的使用者
            SyncAdminUsers()
            '同步所有的程式代碼
            SyncProgramID()
            '同步所有的使用者執行權限
            SyncUserAuthority()
            '開啟認證登入表單對話方塊
            Dim fmLogin As New fmLogin
            fmLogin.ShowDialog()
            '如果未通過認證,就結束系統
            If Not FPowerCheck Then
                Me.Close()
            End If
            '在狀態列顯示登入的使用者代碼與使用者名稱
            Userlabel.Text = "使用者:(" & Fuserid & ")" & Fusername
            Label1.Text = Fuserid
    
            Label2.Text = Fusername
    
    
            '檢查每一個程式項目對登入的使用者是否有執行權限
            SyncProgramsRight()
    
        End Sub


    在BUTTON裡

     Private Sub miDtnSteps0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miDtnSteps0.Click
            Dim fmDtnSteps0 As New fmDtnSteps0
    
    
            fmDtnSteps0.MdiParent = Me
    
            fmDtnSteps0.Fuserid = Label1.Text
            fmDtnSteps0.Fusername = Label2.Text
            fmDtnSteps0.Show()
    
           
    
    
    
        End Sub

    在DtnSteps0.vb

    Private Sub fmDtnSteps0_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Label5.Text = Fuserid
            Label6.Text = Fusername
    
            ClearAllData()
    
    
        End Sub

    這樣子就可以拿來使用了:p感謝大家!,不過小弟用很笨的方法寫吧!

    • 已標示為解答 2012年10月24日 下午 03:06
    2012年10月24日 下午 03:06
  • 你也可以起一個Class,那全個程式每個form也能用上

    Public Class Module1 
       
    Public Shared UserNameAs String
        Public Shared UserID As String 
        Public Shared DisplayName As String  
    End Module 


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    我現在是對每個main裡的button裡丟值進去...應該有更好的方法吧
    2012年10月24日 下午 03:08
  • 您好,
    看了您的Code後,才比較了解您需要的東西! Sorry!
    您可以在登入後使用 AppDomain的SetData 來記錄它,就不需要每次都傳來傳去了,如下,

    fmLogin中登入成功時,透過 AppDomain.CurrentDomain來記錄,

    fmMain.FPowerCheck = True
    fmMain.FUserID = qryUsers.UserID
    fmMain.FUserName = qryUsers.UserName
    Me.Close()
    改成
    fmMain.FPowerCheck = True
    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    currentDomain.SetData("FUserID", qryUsers.UserID)
    currentDomain.SetData("FUserName", qryUsers.UserName)
    Me.Close()


    在要取資料時使用 AppDomain的GetData
    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    MsgBox(currentDomain.GetData("FUserID"))
    MsgBox(currentDomain.GetData("FUserName"))

    您可以試看看哦!


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 2012年10月27日 上午 08:48
    2012年10月25日 上午 02:47
  • to :亂馬克!

    可以使用!謝謝很厲害謝謝!

    謝謝大家的幫忙:p

    小弟若有遇上問題會再上來虛心請教!感恩!

    2012年10月27日 上午 08:50