2013-04-10 3 views
1

Я developping приложения с помощью VB.Net и это является основной формой моего приложения:Строка или двоичные данные будут усечены приложения VB.Net

http://i.stack.imgur.com/a4KfQ.png

Я хочу, чтобы при нажатии на кнопку Ajouter чтобы добавить всю информацию из элементов управления в таблицу в моей базе данных.

это структура таблицы:

Create table Etudiant (
    num_insc varchar(20) primary key, 
    CIN varchar(8), 
    sexe varchar(1), 
    nom_prenom varchar(30), 
    date_naiss date, 
    adresse varchar(150), 
    Code_niveau varchar(5) 
) 

и это код, который я попробовал:

Dim ds As New DataSet 
Dim row As DataRow 
Dim builder As SqlCommandBuilder 
Dim adapter As SqlDataAdapter 



Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    code_niveau.Items.Add("BTS1") 
    code_niveau.Items.Add("BTS2") 
    adapter = New SqlDataAdapter("SELECT * FROM Etudiant", cn) 
    adapter.Fill(ds, "Etudiant") 

End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    row = ds.Tables("Etudiant").NewRow 
    row(0) = num_insc.Text 
    row(1) = CIN.Text 
    If (sexe_f.Checked) Then 
     row(2) = sexe_f.Name 
    Else 
     row(2) = sexe_m.Name 
    End If 
    row(3) = nom_prenom.Text 
    row(4) = date_naiss.Value 
    row(5) = adresse.Text 
    row(6) = code_niveau.Text 
    ds.Tables("Etudiant").Rows.Add(row) 
    builder = New SqlCommandBuilder(adapter) 
    adapter.InsertCommand = builder.GetInsertCommand 
    adapter.Update(ds, "Etudiant") 
End Sub 

Но когда я нажимаю на кнопку Ajouter я получаю сообщение об ошибке:

Строковые или двоичные данные будут усечены.

Заявление было прекращено

.

ответ

1

Это связано с попыткой записать слишком много данных в одну из столбцов таблицы.

Установите точку останова на row(0) = nun_insc.Text и проведите один шаг от своего кода оттуда, чтобы выяснить, в каком столбце он находится, и почему там написано слишком много текста, а затем выясните, как вам нужно его исправить. (Решение будет заключаться в том, чтобы либо сократить текст, который вы пытаетесь написать, либо расширить столбец в таблице для хранения большего количества данных.)

Чтобы сделать это более понятным, выполните следующие шаги каждой отдельной строкой кода как он работает. Для каждой строки:

  • Посмотрите на столбец, в который он будет писать, когда этот оператор запущен, и посмотрите, сколько символов он позволит.
  • Посмотрите на фактическое значение, которое должно быть записано в этот столбец, и посмотрите, равно ли оно или меньше числа, которое вы получили на первом шаге выше.

Когда вы выясните, в каком столбце оно находится, вы можете решить, нужно ли ограничивать количество текста, которое может вводить пользователь, или сделать столбец больше, чтобы содержать больше символов, в зависимости от потребностей вашего приложения ,

+0

Я пробовал это, но я не могу понять, в чем проблема, сообщение об ошибке, которое я получил, находится в этой строке: 'adapter.Update (ds,« Etudiant »)' –

+0

Вы должны * посмотреть * на данные это присваивается каждой строке, когда код запускается, и посмотрите, какая из них слишком велика для столбца. Мы не можем сделать это для вас, потому что мы не знаем, что назначается столбцу в вашем коде. (Я не вижу, что такое 'adresse.Text', когда ваш код работает, только вы можете.) –

+0

Okey спасибо за вашу помощь, я просто увеличил длину данных в своих столбцах на сервере sql и работал –

Смежные вопросы