2011-08-05 48 views
0

您好所有堆棧溢出。我在這裏遇到了一些困難。我需要獲得你可以進入一個領域最大字符,但我已經沒有成功,谷歌並沒有產生類似anyhing我所需要的獲取訪問列的最大字段大小

這裏是我的代碼

  lvwDestination.Columns.Add("Fields in Database", 150, HorizontalAlignment.Left); 

      lvwDestination.Columns.Add("DataType", 100, HorizontalAlignment.Left); 

      lvwDestination.Columns.Add("Max", 100, HorizontalAlignment.Left); 

      for (int i = 0; i < DataTable.Columns.Count; i++) 
      { 

       _lvwItem = new ListViewItem(DataTable.Columns[i].ColumnName, 0); 

       _lvwItem.Name = DataTable.Columns[i].ColumnName; 

       _lvwItem.SubItems.Add(DataTable.Columns[i].DataType.Name.ToString()); 

       _lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString()); 
       lvwDestination.Items.AddRange(new ListViewItem[] { _lvwItem }); 


      } 

現在,你可以看我已經嘗試過

_lvwItem.SubItems.Add(DataTable.Columns[i].MaxLength.ToString()); 

但是這個想出來的唯一的東西是每列-1。我也確保我的列確實具有屬性字段大小屬性。 .ColumnName和.DataType完美地工作,但.MaxLength總是產生-1。 預先感謝任何可能提出解決方案的人。

+0

可能重複http://stackoverflow.com/q/958101/754438 – Reniuz

+0

其實也沒什麼不DUP licate,因爲你可以看到這個問題從XML填充我從Access中填充,所以沒有我的問題不是重複的。此外,這個問題並沒有解決我的問題。 – raz0r

回答

2

嘗試設置以下屬性:您DataAdapterOledbDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey調用Fill方法之前...

+0

謝謝你的回答我會試試看現在回來給你 – raz0r

+0

這是行不通的,它返回50的字段大小爲40列,在另一個返回100字段的字段大小爲30和15列的字段大小爲16,但感謝您試圖提供幫助。我正在使用MaxLength是否有我可能做錯的事情。 – raz0r

+0

'MissingSchemaAction.AddWithKey'爲我解決了這個問題。謝謝。 –

1

我已經運行對SQL數據庫表進行快速測試 - 它看起來像MaxLength屬性不會從檢索數據庫並且一直將其值設置爲-1,除非用戶專門設置:

 string sql = "select top 10 * from [TestTable]"; 
     string connStr = ConfigurationManager.ConnectionStrings["DbConnString"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(connStr)) 
     { 
      SqlCommand cmd = new SqlCommand(sql, conn); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable data = new DataTable(); 
      da.Fill(data); 

      foreach (DataColumn col in data.Columns) 
      { 
       Console.WriteLine(
        string.Format("{0}\t{1}\t{2}", 
          col.ColumnName, 
          col.DataType.ToString(), 
          col.MaxLength 
         ) 
        ); 
      } 
      Console.ReadLine(); 
     } 

+0

換句話說,你的意思是說我絕對沒有辦法從訪問中檢索字段大小屬性 – raz0r

+0

我真的需要對這個答案提出問題,因爲如果不能讀取最大長度,我的整個程序就會摺疊,因爲導入會失敗當字符太多時 – raz0r

+0

我不相信這是不可能的,因爲我可以毫無問題地返回數據類型 – raz0r