none
請問如何在DataGridViw中讓欄位自動+1呢? RRS feed

  • 問題

  • 我有一個DataGridView1,在DataGridView1中第七個欄位中叫批號,

    在這批號欄位,一開始是讓它回資料庫去找看今天是否已經有建立批號,

    如果今天沒有建立批號的話,末三碼為001

    如果今天已經有建立批話的話,批號的末三碼就+1....002

    在這裡,我已經寫下了以下的程式,但是在DataGridView1的批號欄位,還有一個問題,

    就是,user在還沒有離開這個Form的時候,在DataGridView1的批號欄位,

    是可以建立多筆資料的,

    也就是說DataGridView1的批號欄位可以有071206-001,071206-002,071206-003

    現在我的問題就是這行的指令要怎麼寫呢??

    目前只能測試到找到今天建立的批號,無法在DataGridView1中將批號的末三碼+1

     

     

    程式碼區塊


            Dim BatNumStr As String
            Dim BatCount As Integer   '設BatCount為末三碼變數
            Dim cmd As New SqlClient.SqlCommand("SELECT  ISNULL(MAX(BatchNo), 0) FROM  dbo.B_CprPInvertory", cn)
            da.SelectCommand = cmd
            cn.Open() '20071206-001
            BatCount = Convert.ToInt32(cmd.ExecuteScalar().ToString().Substring(9))
             da.Fill(ds, "Batch")
            If CInt(Mid(ds.Tables("Batch").Rows(0).Item(0), 1, 6)) = CInt(DateTime.Today.ToString("yyMMdd")) Then
                'Tables的最後一筆日期欄位=今天日期
                BatCount = CInt(Mid(ds.Tables("Batch").Rows(0).Item(0), 10, 3)) + 1
                '日期相等,末三碼編號+1
                DataGridView1.CurrentRow.Cells(6).Value = BatCount
            ElseIf CInt(Mid(ds.Tables("Batch").Rows(0).Item(0), 1, 6)) < CInt(DateTime.Today.ToString("yyMMdd")) Then
                'Tables的最後一筆日期欄位<今天日期
                BatCount = 1
                '日期小於今天日期時,等於001
                DataGridView1.CurrentRow.Cells(6).Value = BatCount
            End If
            cn.Close()
            BatNumStr = DateTime.Today.ToString("yyMMdd") & "-" & BatCount.ToString("000")
            DataGridView1.CurrentRow.Cells(6).Value = BatNumStr

     

            '如果在Datagridview1欄位批號已經有批號的時候,下一個欄位的批號末三碼+1
            If DataGridView1.CurrentRow.Cells(6).Value = BatNumStr Then
                Dim Bat As Integer     '先設定Bat為BatNumStr的末三碼變數,在來就不知要怎麼寫了

                DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(6).Value = BatNumStr
                BatNumStr = BatCount
            End If

     

     

     

    • 已移動 璉璉 2010年3月6日 上午 04:03 (從:Visual Studio一般討論區(General))
    2007年12月6日 上午 02:20

解答

  • 給你點意見 希望對你有幫助

     

    Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound

            Dim strdate As String = Date.Today.Year & Right((0 & Date.Today.Month), 2) & Right((0 & Date.Today.Day), 2)
            Dim RowSNo As Integer
            For RowSNo = 0 To Me.GridView1.Rows.Count - 1
                Dim strCell6 As String = Me.GridView1.Rows(RowSNo).Cells(6).Text
                '這邊塞入你要判斷的事情

                'if 有料號 就加一 then
                'Me.GridView1.Rows(RowSNo).Cells(6).Text = strCell6 + strdate +  "001"

                'end if

            Next
        End Sub

    • 已標示為解答 璉璉 2010年3月6日 上午 04:03
    2007年12月8日 下午 03:01