2013-08-08 1 views
0

아래 코드는 오류없이 실행되지만 MS Access 테이블은 업데이트되지 않습니다. 내가 뭘 놓치고 있니? 이러한 접근 방식의vb.net을 통한 MS 액세스 업데이트

sql = "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = #" & Now & "# WHERE (([UploadID]) = " & dr("UploadID") & ");" 
Dim cmd As OleDbCommand 
cmd = New OleDbCommand(sql, cnn) 
cmd.ExecuteNonQuery() 
cmd.Dispose() 

없음이 업데이트되지 : 더 - 바람직하지/비 매개 변수 방식에 값을 추가 단순히

sql = "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = ? WHERE (([UploadID]) = ?);" 

또는 :

Try 
     cnn = New OleDbConnection(ConfigurationManager.ConnectionStrings("accConnectionString").ToString()) 
     cnn.Open() 
    Catch ex As Exception 
     Debug.Print("Oops - no connection to database") 
     Exit Sub 
    End Try 

    Dim sql As String 
    sql = "SELECT * FROM tblSend WHERE UploadedSuccessfullyOn is null ORDER BY QueuedOn;" 
    Dim da As New OleDbDataAdapter(sql, cnn) 
    Dim ds As New DataSet 
    da.Fill(ds, "dsQueuedToSend") 
    For Each dr As DataRow In ds.Tables("dsQueuedToSend").Rows 

    ' Perform other unrelated tasks in this space, removed for brevity 

     ' If those other tasks were successful, update Access. 
     If success = True Then 
      sql = "UPDATE [tblSend] SET [UploadedSuccessfullyOn] = @uploadedOn WHERE (([UploadID]) = @uploadId);" 
      Dim cmd As OleDbCommand 
      cmd = New OleDbCommand(sql, cnn) 
      cmd.Parameters.Add("@uploadedOn", OleDbType.Date).Value = Now 
      cmd.Parameters.Add("@uploadedId", OleDbType.Integer).Value = dr("UploadID") 
      cmd.ExecuteNonQuery() 
      cmd.Dispose() 
      Console.WriteLine("Success: updated.") 
     Else 
      Console.WriteLine("Failed: Not updated.") 
     End If 
    Next 

    da.Dispose() 
    cnn.Close() 

또한 함께 시도했다 MS 액세스 테이블. 아이디어? 감사!

+1

"오류없이 실행"이라고 말하면 응용 프로그램을 완전히 실행했는데 충돌이 발생하지 않았거나 디버거에서 코드를 단계적으로 실행 한 다음 예상되는 모든 코드 경로에 도달했으며 모든 예상 런타임 값이 정확 했습니까? – David

+0

두 번째 단계 : 디버거를 단계별로 실행하고 연결이 열려 있는지, SQL 문이 구문 상 올바르게 작동하는 sql (작동중인 Access에서 수동으로 실행하여 복사하여 비 매개 변수 옵션을 테스트했는지), datarow 정확한 값을 가지고 있으며, 내가 말할 수있는 가장 좋은 것은 런타임 값의 나머지 부분이 정확한 것입니다. 이것이 내가 왜곡당한 이유입니다 -이 코드처럼 보이게 **해야합니다, 네? – ericrdb

+0

연결 문자열을 알려주십시오. – majjam

답변

1

이전에 비주얼 스튜디오에서 발견 한 한 가지 점은 Access 데이터베이스를 WinForms 프로젝트에 포함 할 때 프로젝트를 실행할 때 Access 데이터베이스가 원본에서 런타임 디렉터리로 복사되어 변경 내용을 덮어 씁니다. 너는 만들었다.

업데이트가 실제로 발생하지 않는다는 환상을 불러 일으킬 수 있습니다.

관련 문제