내 프로그램에 다음과 같은 INSERT 쿼리가 있습니다 (변수에 Access 데이터베이스의 값이 할당되고 새 SQL Server 데이터베이스에 삽입됩니다.). 코드가 잘 통해 실행의 Parameters.Add
섹션의 값은해야한다 무엇을 모든이 있지만,이 라인 sql.ExecuteNonQuery()
에 도달 할 때 나는 오류를 캐스트 사양에 대한캐스트 사양의 문자 값이 잘못되었습니다. vb.net MS Access to SQL Server 가져 오기
잘못된 문자 값을 제공받을. System.Data.OleDb.OleDbCommand.ExecuteNonQuery에서 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal (CommandBehavior를 행동, 문자열 방법) ()
For Each dr As DataRow In getDataTable(sqlct, importsCon, Nothing).Rows
Dim conID As Integer
Dim custacc As String
Dim datestart As Object
Dim daterenew As Object
Dim fee As Double
Dim agree As String
Dim details As String
Dim datesent As Object
Dim timesent As Object
Dim remname As String
Dim remmail As String
conID = dr("ContractID")
custacc = dbToString(dr("CustAcc"))
datestart = dbToDate(dr("DateStart"))
daterenew = dbToDate(dr("DateRenew"))
fee = dr("Fee")
agree = dbToString(dr("Agreement"))
details = dbToString(dr("OtherDetails"))
datesent = dbToDate(dr("DateSent"))
timesent = dbToTime(dr("TimeSent"))
remname = dbToString(dr("ReminderName"))
remmail = dbToString(dr("ReminderEmail"))
sql.CommandText = "INSERT INTO tblContracts(ContractID, CustAcc, DateStart, DateRenew, Fee, Agreement, OtherDetails, DateSent, TimeSent, ReminderName, ReminderEmail) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
sql.Transaction = tr
sql.Parameters.Clear()
sql.Parameters.Add("@ContractID", OleDbType.Integer).Value = conID
sql.Parameters.Add("@CustAcc", OleDbType.VarChar).Value = custacc
sql.Parameters.Add("@DateStart", OleDbType.DBDate).Value = datestart
sql.Parameters.Add("@DateRenew", OleDbType.DBDate).Value = daterenew
sql.Parameters.Add("@Fee", OleDbType.Double).Value = fee
sql.Parameters.Add("@Agreement", OleDbType.VarChar).Value = agree
sql.Parameters.Add("@OtherDetails", OleDbType.VarChar).Value = details
sql.Parameters.Add("@DateSent", OleDbType.DBDate).Value = datesent
sql.Parameters.Add("@TimeSent", OleDbType.DBDate).Value = timesent
sql.Parameters.Add("@ReminderName", OleDbType.VarChar).Value = remname
sql.Parameters.Add("@ReminderEmail", OleDbType.VarChar).Value = remmail
sql.ExecuteNonQuery()
sql.Parameters.Clear()
Next
내 코드의 문제는 무엇인가에 ? 데이터 유형의 모든 데이터베이스의 (객체가 데이터베이스에 날짜,하지만 그들은 처음에있어 그들이 먼저 다른 기능을 통해 이동으로 객체) 주석에서 발견으로
@ GordThompson 모든 OleDbType.VarChar를 OleDbType.VarWChar로 변경했습니다. 동일한 오류 메시지가 나타납니다. –
INSERT 쿼리에서'sql '을 실행하면됩니다. CommandText = "INSERT INTO tblContracts (ContractID) VALUES (?)'다음에 conID를 제외한 모든 매개 변수 행을 주석 처리하십시오 프로그램이 작동하는지 확인하십시오 (CustAcc)를 추가하고 깨는 것을 찾을 때까지 프로세스를 반복하십시오 문제를 좁히는 데 도움이됩니다. – David
@David 감사합니다. 오류는'sql.Parameters.Add ("@ DateSent", OleDbType.DBDate)입니다 .Value = datesent' –