2013-04-17 45 views
0

我一直在爲此工作好幾天,任何幫助都會很棒。我試圖使用VB.NET和訪問數據庫將信息插入到數據庫中。目前我有2個問題。第一個問題是我在我的數據庫(Response)中有一個備註字段,如果我嘗試在該字段中插入超過250個字符,我會收到一個錯誤消息,說我的條目很長。我遇到的另一個問題是,如果我在運行我的程序時嘗試多次執行此代碼,則會出現一條錯誤,指出「條件表達式中的數據類型不匹配...」。最後一個問題是我對數據類型不匹配的問題。VB.NET數據類型不匹配,數據錄入時間長

這裏是有問題的代碼

con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\Backends\IncidentReport.mdb") 
    con.Open() 
    comStr = "INSERT INTO tblIncidentCommonItemsInfo(recid, Location, DescOrTypeInjIfOther, DateOf, TimeOf, TypeIncident, Doctor, " & 
      "DateDocNotified, TimeDocNotified, DateRespPartyNotified, RespPartyNotified, " & 
      " TimeRespPartyNotified, StateNotified, DateStateNotified, TimeStateNotified, Response) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" 

     cmd = New OleDbCommand(comStr, con) 

     cmd.Parameters.AddWithValue("@p1", IDLabel.Text) 
     cmd.Parameters.AddWithValue("@p2", LocTextBox.Text) 
     cmd.Parameters.AddWithValue("@p3", DescTextBox.Text) 
     cmd.Parameters.AddWithValue("@p4", DateOfTextBox.Text) 
     cmd.Parameters.AddWithValue("@p5", TimeOfTextBox.Text) 
     cmd.Parameters.AddWithValue("@p6", TypeTextBox.Text) 
     cmd.Parameters.AddWithValue("@p7", DocComboBox.SelectedItem) 
     cmd.Parameters.AddWithValue("@p8", DocDayDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p9", DocTimeDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p10", FamilyDayDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p11", RespPtyTextBox.Text) 
     cmd.Parameters.AddWithValue("@p12", FamilyTimeDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p13", IDPHYesNoComboBox.SelectedItem) 
     cmd.Parameters.AddWithValue("@p14", IDPHDayDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p15", IDPHTimeDateTimePicker.Value) 
     cmd.Parameters.AddWithValue("@p16", ResidentWordsRichTextBox.Text) 

     Try 
      cmd.ExecuteNonQuery() 
      MsgBox("Incident Saved") 
     Catch ex As Exception 
      MessageBox.Show(ex.Message & " - " & ex.Source) 
     End Try 
     SavedTextBox.Text = "Yes" 
     con.Close() 

任何幫助將不勝感激,謝謝。

回答

1

對於尺寸問題,您可以嘗試指定您正在通過參數傳遞哪種類型的值。我懷疑使用AddWithValue將使用較短的參數大小

cmd.Parameters.Add("@p16", OleDbType.LongVarWChar).Value = ResidentWordsRichTextBox.Text) 

Data type mismatch in criteria expression錯誤可能是由同一個問題引起的。
AddWithValue方法確定參數數據類型,查看您傳遞的值的類型。

在您的代碼中,您已經爲文本顯示了不同類型的字段。例如recid似乎是一個整數(數字)字段,但AddWithValue使用的是一個字符串textbox.text。你真的應該申請一個Convert.ToInt32(IDLabel.Text)和相同的檢查應該做有效的日期時間字段

+0

我仍然得到這個錯誤:該字段太小,無法接受您嘗試添加的數據量。嘗試插入或粘貼更少的數據。 – mlieven

+0

無法重現該問題。它按預期工作。如果這不是問題,您可以將示例表的數據庫發送給我,我將嘗試在您的模式上進行測試 – Steve

+0

您是否可以不重現任何問題或只是不匹配問題 – mlieven