2012-11-15 3 views
0

아니었다. 어떤 정확한 필드가 문제를 일으키는 지 확인하는 방법이 있습니까?업데이트는 올바른 형식

'/'응용 프로그램의 서버 오류입니다.

입력 문자열의 형식이 올바르지 않습니다.

설명 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.FormatException : 입력 문자열의 형식이 올바르지 않습니다.

소스 오류 :

라인 7381 : Global.System.ComponentModel.Design.HelpKeywordAttribute ("vs.data.TableAdapter")> _ 라인 7382 : 공공 과부하 재정의 기능 업데이트 (ByVal의 DataRow를 같이 Global.System .Data.DataRow) 정수로 라인 7383 : 반환 Me.Adapter.Update (뉴 Global.System.Data.DataRow() {DataRow를}) 라인 7384 : 최종 기능 라인 7385 :

소스 파일 : C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ aebf90fc \ 865092c3 \ App_Code.6h2d5goz.23.vb 줄 : 7383

스택 추적 :

[FormatException을 :. 입력 문자열이 올바른 형식이 아니었다] System.Number.StringToNumber (문자열 str을, NumberStyles 옵션 NumberBuffer & 번호,하는 NumberFormatInfo 정보, 부울 parseDecimal) 14365689 System.Data.ParseInt32 (String s, NumberStyles 스타일, NumberFormatInfo 정보) +305 System.Convert.ChangeType (개체 값, 형식 변환 유형, IFormatProvider 공급자) +859 System.Data.SqlClient.SqlParameter.CoerceValue (개체 값, MetaType destinationType, Boolean & coercedToDataFeed, 부울 & typeChanged, 부울 allowStreaming) + 1,809

[FormatException을 :. INT32에 문자열에서 매개 변수 값을 변환하는 데 실패] System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, INT32 commandCount) 2,290,668 System.Data한다. Common.DbDataAdapter.UpdatedRowStatus (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount) +75 System.Data.Common.DbDataAdapter.Update (DataRow [] dataRows, DataTableMapping tableMapping) +3479 System.Data.Common.DbDataAdapter.Update (DataRow [] dataRows) C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ aebf90fc \ 865092c3 \ App_Code.6h2d5go에있는 +319 adsTableAdapters.adsTableAdapter.Update (DataRow dataRow) C : \ Dropbox \ inetpub \ zz \ ​​editad.aspx.vb의 editad.lbSaveLocation_Click (Object sender, EventArgs e) : 765 System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String eventArgument) +153 System.Web.UI.Page.ProcessRequestMain (부울 includeStagesBeforeAsyncPoint, 부울 includeStagesAfterAsyncPoint) 3804

과 같이 오류에 대한 검사를 추가했지만, 오류가 발생하지 :

Try 
     If TA.Update(row) = 1 Then 

     End If 
    Catch ex As Exception 
     Dim arr As Array = row.Table.GetErrors() 
     'arr.length=1 here 
     If arr.Length > 0 Then 
      lblStatus.Text = row.Table.GetErrors(0).ToString 
'the value of row.Table.GetErrors(0).ToString is "ads+adsRow" 
     End If    
    End Try 

답변

1

This exception가 많은 이유 (. f.e int.Parse("abc"))를 가질 수있다.

Visual Studio에서 디버거의 quick-watch-window에서 해당 라인을 실행할 수 있습니다. 그럼 당신은 DataTable.GetErrors를 통해 모든 행 오류를 포함 rows를 검색 할 수 있습니다

row.Table.GetErrors() 

그런 다음 당신이 이러한 행을 검사 할 수있어. DataRow.RowError 속성을 살펴보십시오. 여기에서 예외를 발생시키는 자세한 오류 및 열을 찾을 수 있습니다.

모두 빠른보기 창에 있습니다. 그렇지 않으면 예외를 디버그 할 수 없습니다.

+0

아, 고마워요. 하지만 그렇게하기 전에 일반적으로 디버그 할 수 있어야합니다. 현재로서는 작동하지 않습니다. 먼저 나는 그것을 고친 다음에 다시 이것을 보았다. 그렇게하고 싶다면 다른 문제를 살펴보십시오. http://stackoverflow.com/questions/13406936/asp-net-debugging-redirects-to-invalid-url – Flo

+0

특히 nulls. 해당 필드에 대한 명령 매개 변수는 null을 전달하고 datetime이 .net에서 sql으로 전달 될 때 문자열로 처리 한 다음 SQL Server에서 다시 가져 오는 경우 문제가 발생할 수 있습니다. –

+0

@FrankThomas : 이상한 일은 업데이트를하기 전에 업데이트 할 레코드를 검색하고 그 데이터 테이블의 행에로드합니다. 그래서 어떤 열에 몇 가지 제약 조건이 있다면 추측하겠습니다. 오류가 이미 레코드를 검색하는 순간에 throw됩니다. 내 업데이트 명령이 자동으로 생성되고 btw가 어떤 날짜 열에 AllowDbNull이 true로 설정되었는지 확인했지만 그 중 아무 것도 가지고 있지 않습니다. – Flo

0

발견. 테이블 어댑터의 모든 열을 수동으로 설정하여 디버깅 했으므로 모든 값이 올바르게 형식화 된 위치를 알고있었습니다. 문제가 여전히 발생했습니다. SQL 프로파일 러에서 아무런 업데이트 명령도 전달되지 않았으므로 아무 것도 DB에 전달되지 않았습니다. 해결 방법 : 테이블 어댑터의 자동 생성 된 업데이트 명령에서 update 매개 변수가 @Original_id로 지정되었습니다. 나는 id로 이름을 바꿨고 작동했습니다 : S