none
【VB.NET】將暫存資料做一次丟回ACCESS資料庫欄位 RRS feed

  • 問題

  •       

    這是我目前的程式碼

    但會一直出現"索引陣列少於索引陣列維度長度"的錯誤訊息

    If e.KeyCode = Keys.Enter Then Dim strtmp() As String Dim str1 As String Dim str2 As String str1 = TextBox1.Text str2 = TextBox2.Text If str1 <> str2 Then Label2.Text = "失敗" '失敗後不寫入資料庫&不觸發控制器 ' Get_IOTmp("#01A000") 'Call P_AddNew() TextBox1.Enabled = True TextBox2.Enabled = True TextBox1.Text = "" TextBox2.Text = "" TextBox1.Select() strtmp() = "" Else If str1 = str2 Then Label2.Text = "成功" TextBox1.Enabled = False TextBox2.Enabled = False Sleep(100) TextBox1.Enabled = False TextBox2.Enabled = True TextBox2.Select() TextBox2.Focus() '比對成功後先暫時不觸發 'Get_IOTmp("#01A001") '改成觸發btn後再將資料寫入資料庫 'Call P_AddNew() strtmp() = "" strtmp() = str2.Split.ToString(",") & Format(Now, "hhmmss") Else strtmp() = str2.Split.ToString(";") & Format(Now, "hhmmss") End If End If


    2016年9月10日 上午 06:42

解答

所有回覆

  • strtmp() 是陣列,你需要給定陣列的大小。

    參考

    VB中的陣列

    2016年9月10日 上午 07:00
  • 但是我沒有固定大小耶

    有時候可能塞100筆

    有時候可能只塞5筆

    那我該怎麼定義

    2016年9月10日 上午 07:14
  • 但是我沒有固定大小耶

    有時候可能塞100筆

    有時候可能只塞5筆

    那我該怎麼定義

    你需要用集合List 

    參考連結:

    余小章 @ 大內殿堂 - [C#.NET][VB.NET] 泛型集合 Generic Collection - List<> 集合 類別簡介



    2016年9月10日 上午 07:24
  • 但是我沒有固定大小耶

    有時候可能塞100筆

    有時候可能只塞5筆

    那我該怎麼定義

    你需要用集合List 

    參考連結:

    余小章 @ 大內殿堂 - [C#.NET][VB.NET] 泛型集合 Generic Collection - List<> 集合 類別簡介



    這個我之前有上網查過

    但我不是很明白欸

    我現在的情況是

    Textbox1=111 和 Textbox2=111 時就將textbox2裡的111先暫存下來

    然後再把textbox2.text清空

    若User這時候再輸入一次111

    就在將這筆111塞進去暫存區

    等到User可以這樣重複動作10次或者20次後按下Btn鈕

    再將剛剛那些所有存在暫存區裡的資料全部丟到ACCESS資料庫裡該對應的欄位

    2016年9月10日 上午 07:42
  • 這個我之前有上網查過

    但我不是很明白欸

    我現在的情況是

    Textbox1=111 和 Textbox2=111 時就將textbox2裡的111先暫存下來

    然後再把textbox2.text清空

    若User這時候再輸入一次111

    就在將這筆111塞進去暫存區

    等到User可以這樣重複動作10次或者20次後按下Btn鈕

    再將剛剛那些所有存在暫存區裡的資料全部丟到ACCESS資料庫裡該對應的欄位

    類似這樣 以下只是sample code 僅參考 說明在註解中

    Public Class Form1 Dim data As New List(Of String)() '在最外面宣告一個LIST集合 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '做儲存的動作的程式碼 跑迴圈 For Each d As String In data '把每一筆資料存進 Access Next

    data.Clear() '儲存完之後把暫存在LIST的資料清空 End Sub Private Sub TextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox2.KeyDown If e.KeyCode = Keys.Enter Then Dim strtmp(2) As String Dim str1 As String Dim str2 As String str1 = TextBox1.Text str2 = TextBox2.Text If str1 <> str2 Then Label2.Text = "失敗" '失敗後不寫入資料庫&不觸發控制器 ' Get_IOTmp("#01A000") 'Call P_AddNew() TextBox1.Enabled = True TextBox2.Enabled = True TextBox1.Text = "" TextBox2.Text = "" TextBox1.Select() ElseIf str1 = str2 Then Label2.Text = "成功" TextBox1.Enabled = False TextBox2.Enabled = False 'Sleep(100) TextBox1.Enabled = False TextBox2.Enabled = True TextBox2.Select() TextBox2.Focus() data.Add(str2) '把比對成功的 str2 加入 data Else '... End If End If End Sub End Class




    2016年9月10日 上午 08:25
  • strtmp() = "" ' 這句多餘 strtmp() = str2.Split.ToString(",") & Format(Now, "hhmmss") ' 這句錯誤 strtmp() = str2.spllit(",") ' 或 strtmp() = (str2 & Format(Now, "hhmmss")).Split(",")

    如果你不知道你要怎樣呼叫函數,你可以把你原先的內容跟預期的內容貼出來,才知道你錯在哪。

    另外你要寫入資料庫,這邊沒看到跟資料庫相關的內容。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年9月10日 下午 01:46