2016-08-18 65 views
-1

我將這個小腳本放在一起,其目標是根據表單中選擇的文檔類型計算參考,並連接一個自動遞增的數字。保存時,我卻收到此錯誤:在計算參考時出現C#問題

字符串或二進制數據將被截斷

string typeDocAbbr = doc.GetStringValue("Document_type_Abbr"); 
string textRef = doc.GetStringValue("text_reference"); 

if (typeDocAbbr == "DIV") 
    returnValue = string.Format("{0}-{1}", typeDocAbbr, textRef); 

if ((typeDocAbbr == "FIC") || (typeDocAbbr == "FTC") || (typeDocAbbr == "FDP")) 
    returnValue = string.Format("{0}-{1}", typeDocAbbr, textRef); 


else 
{ 
    int chrono = 0; 
    string schrono = ""; 
    if(string.IsNullOrEmpty(doc.GetStringValue("Reference"))) 
    { 
     if (!string.IsNullOrEmpty(typeDocAbbr)) 
     { 
      EDITOR.Documents.DataSource.ChronoManagerWrapper cmw = 
       new EDITOR.Documents.DataSource.ChronoManagerWrapper(); 
      string Key = typeDocAbbr; 
      chrono = cmw.GetNewChrono("Process Studio", Key); 
      if (chrono < 10) 
       schrono = "0" + chrono.ToString(); 
      else 
       schrono = chrono.ToString()}; 
     } 
    } 
    returnValue = string.Format("{0}-{1}", typeDocAbbr, schrono); 
} 
+1

這就是調試器的用途....(和單元測試) –

+1

字符串或二進制數據將被截斷是來自Sql Server的消息,表明您正在嘗試保存一個對於字段來說太長的值。檢查你的分貝。您發佈的代碼可能與該錯誤無關。 –

+1

既然你的代碼是可讀的......你在第二個'if'之前是否缺少'else'?現在,如果'typeDocAbbr ==「DIV」','returnvalue'將被覆蓋在'else'塊中。 –

回答

0

此錯誤:

the string or binary data would be truncated 

是不是你所示的代碼。這是一個SQL Server錯誤。 這意味着DB字段對於您嘗試插入的值來說太小。

0

好的人,我的壞。我實際上找出了我出錯的地方。我共享的腳本的returnValue去了一個列,其最大尺寸爲10由於某種原因。然而,正如你們中一些人很好地向像我這樣的初學者指出的,錯誤來源於表,而不是腳本,表明該值對於列來說太大(這就是她所說的)。 謝謝你一些建設性的批評!