2008-09-06 23 views
17

Tôi có một DataSet trong VisualStudio 2005. Tôi cần thay đổi kiểu dữ liệu của một cột trong một trong các datatables từ System.Int32 thành System.Decimal . Khi tôi cố gắng để thay đổi kiểu dữ liệu trong DataSet Designer tôi nhận được lỗi sau:"Không thể thay đổi DataType của cột khi nó có dữ liệu" lỗi trong Visual Studio 2005 DataSet Designer

Property value is not valid. Cannot change DataType of a column once it has data.

Từ hiểu biết của tôi, điều này sẽ được thay đổi kiểu dữ liệu trong lược đồ cho DataSet. Tôi không thấy làm thế nào có thể có bất kỳ dữ liệu nào gây ra lỗi này.

Có ai có ý tưởng nào không?

Trả lời

32

Tôi gặp lỗi tương tự nhưng chỉ cho các cột có DefaultValue được đặt thành bất kỳ giá trị nào (ngoại trừ <DBNull> mặc định). Vì vậy, cách tôi có xung quanh vấn đề này là:

  1. Cột DefaultValue: Gõ vào <DBNull>
  2. Lưu và mở lại các dữ liệu
+0

Tác phẩm này hoạt động, nhưng cần lưu ý điều gì đó: có xác thực được thực hiện tại thời điểm bạn lưu và đóng. Nếu có sự cố thì các trường sẽ bị xóa khi bạn đóng tập dữ liệu. Tôi thấy điều này một cách khó khăn khi tôi mất rất nhiều thông tin tôi đã nhập. Để tránh mất mát, hãy đảm bảo rằng tập dữ liệu tiết kiệm không có lỗi TRƯỚC KHI bạn cố gắng đóng nó. – DAG

2

Kể từ Datatables đầy không vui một sự thay đổi trong lược đồ một cách giải quyết có thể được áp dụng như sau:

  1. Đặt làm phương thức Clone một DataTable mới

  2. Sử dụng DataTable để tạo DataTable với cấu trúc tương tự và thực hiện các thay đổi cho rằng cột

  3. Trong mục nhập dữ liệu sử dụng cuối cùng ImportRow để điền dữ liệu vào.

HTH

3

Tôi đã tìm thấy một công việc xung quanh. Nếu tôi xóa cột dữ liệu và thêm nó trở lại với kiểu dữ liệu khác, thì nó sẽ hoạt động.

+0

tôi đã chạy vào cùng một vấn đề. Lạ lùng - không thể thay đổi nó trong nhà thiết kế. Hình như một lỗi ... – aSkywalker

+0

Lỗi tương tự vẫn còn trong VS2010. Cùng một giải pháp hoạt động. Xóa các giá trị mặc định, lưu và đóng DS, sau đó mở lại và bạn có thể chỉnh sửa các kiểu dữ liệu. – Andy

1

Đối với những người tìm kiếm này qua Google và bạn có một trường hợp hơi khác nhau ở đâu bảng của bạn đã có dữ liệu và bạn thêm một cột mới (như tôi), nếu bạn tạo cột và đặt kiểu dữ liệu trong các câu lệnh riêng biệt, bạn cũng nhận được ngoại lệ tương tự này. Tuy nhiên, nếu bạn làm điều đó trong cùng một tuyên bố, nó hoạt động tốt.

Vì vậy, thay vì điều này:

var column = myTable.Columns.Add("Column1"); 
column.DataType = typeof(int); //nope, exception! 

Làm điều này:

var column = myTable.Columns.Add("Column1", typeof(int)); 
Các vấn đề liên quan