Таблица VB.net sql не показывает последние строки

Что я делаю-

  1. Импорт 406 строк в 5 таблиц SQL из листа Excel.
  2. После импорта я вручную сохраняю данные по одному в каждую из 5 таблиц при нажатии кнопки и отображаю их в datagridview.
  3. После сохранения каждой записи я обновляю datagridview.

Моя проблема -

  1. Записи сохраняются правильно, но datagridview показывает только 408 записей, где на самом деле нет. записей 412.
  2. При просмотре из проводника сервера также отображаются только 408 записей.
  3. Но свойства таблицы показывают, что строк 412.
  4. Эта проблема только с первой таблицей.

мой код: -

cmd.CommandText = String.Empty
        cmd.Parameters.Clear()
        cmd.CommandText = "INSERT into pd([Adm No],[DOA],[Name],[Course],[Fees Due],[Concession],[Contact No 1]," & _
                         "[Contact No 2],[E-Mail],[Year of Passing],[Address],[DOB],[College])" & _
                         " values(@admno,@doa,@name,@course,@totalfees,@concession,@contactno1,@contactno2,@email,@yop," & _
                         "@address,@dob,@college)"
        cmd.Parameters.AddWithValue("@admno", i.ToString)
        cmd.Parameters.AddWithValue("@doa", date_format.format_date(doa.Value.Date))
        cmd.Parameters.AddWithValue("@name", txt_name.Text)
        cmd.Parameters.AddWithValue("@course", combo_course.SelectedItem.ToString)
        cmd.Parameters.AddWithValue("@totalfees", txt_totalfees.Text)
        cmd.Parameters.AddWithValue("@concession", txt_concession.Text)
        cmd.Parameters.AddWithValue("@contactno1", txt_contact1.Text)
        cmd.Parameters.AddWithValue("@contactno2", txt_contact2.Text)
        cmd.Parameters.AddWithValue("@email", txt_email.Text)
        cmd.Parameters.AddWithValue("@yop", txt_yop.Text)
        cmd.Parameters.AddWithValue("@address", txt_address.Text)
        cmd.Parameters.AddWithValue("@dob", date_format.format_date(dob.Value.Date))
        cmd.Parameters.AddWithValue("@college", txt_college.Text)
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        cmd.Connection = con
        cmd.ExecuteNonQuery()

        'save fees details
        cmd.CommandText = String.Empty
        cmd.Parameters.Clear()
        cmd.CommandText = "INSERT into fees([Adm No],[Name],[Fees Due],[Fees Paid],[No of Installments]," & _
                          "[Installment Amounts],[Receipt Nos],[Dates of Transaction],[Mode],[Bank],[Due Date]" & _
                          ",[Total Fees],[Concession],[Cheque No],[Course])" & _
                          " values(@admno,@name,@feesdue,@feespaid,@noi,@instamnt,@rcno,@dot,@mode,@bank,@dd," & _
                          "@total,@concession,@chqno,@course)"
        cmd.Parameters.AddWithValue("@admno", i.ToString)
        cmd.Parameters.AddWithValue("@name", txt_name.Text)
        cmd.Parameters.AddWithValue("@feesdue", (CInt(txt_totalfees.Text) - CInt(txt_concession.Text)))
        cmd.Parameters.AddWithValue("@feespaid", CInt(0))
        cmd.Parameters.AddWithValue("@noi", CInt(0))
        cmd.Parameters.AddWithValue("@instamnt", "")
        cmd.Parameters.AddWithValue("@rcno", "")
        cmd.Parameters.AddWithValue("@dot", "")
        cmd.Parameters.AddWithValue("@mode", "")
        cmd.Parameters.AddWithValue("@bank", "")
        cmd.Parameters.AddWithValue("@dd", "")
        cmd.Parameters.AddWithValue("@total", CInt(txt_totalfees.Text))
        cmd.Parameters.AddWithValue("@concession", txt_concession.Text)
        cmd.Parameters.AddWithValue("@chqno", "")
        cmd.Parameters.AddWithValue("@course", combo_course.SelectedItem.ToString)
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        cmd.Connection = con
        cmd.ExecuteNonQuery()

        'save photo
        If Not PictureBox1.Image Is Nothing Then
            cmd.CommandText = String.Empty
            cmd.Parameters.Clear()
            cmd.CommandText = "Insert into img values(@adm,@name,@imge)"
            Dim para As New SqlCeParameter("imge", SqlDbType.Image)

            Dim ms As New MemoryStream
            PictureBox1.BackgroundImage.Save(ms, PictureBox1.BackgroundImage.RawFormat)
            Dim data As Byte() = ms.GetBuffer
            para.Value = data
            cmd.Parameters.AddWithValue("@adm", lb_admno.Text)
            cmd.Parameters.AddWithValue("@name", txt_name.Text)
            cmd.Parameters.Add(para)
            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            cmd.Connection = con
            cmd.ExecuteNonQuery()
        Else
            cmd.CommandText = String.Empty
            cmd.Parameters.Clear()
            cmd.CommandText = "Insert into img values(@adm,@name,@imge)"
            Dim para As New SqlCeParameter("imge", SqlDbType.Image)

            Dim ms As New MemoryStream
            PictureBox1.BackgroundImage.Save(ms, PictureBox1.BackgroundImage.RawFormat)
            Dim data As Byte() = ms.GetBuffer
            para.Value = data
            cmd.Parameters.AddWithValue("@adm", lb_admno.Text)
            cmd.Parameters.AddWithValue("@name", txt_name.Text)
            cmd.Parameters.Add(para)
            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            cmd.Connection = con
            cmd.ExecuteNonQuery()
        End If

        cmd.CommandText = String.Empty
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into attend values(@adm,@name,@course,@dt,@stat)"
        cmd.Parameters.AddWithValue("@adm", lb_admno.Text)
        cmd.Parameters.AddWithValue("@name", txt_name.Text)
        cmd.Parameters.AddWithValue("@course", combo_course.SelectedItem.ToString)
        cmd.Parameters.AddWithValue("@dt", "")
        cmd.Parameters.AddWithValue("@stat", "")
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        cmd.Connection = con
        cmd.ExecuteNonQuery()


        cmd.CommandText = String.Empty
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into testdb values(@adm,@name,@course,@tname,@tdate,@marksob,@marksout)"
        cmd.Parameters.AddWithValue("@adm", lb_admno.Text)
        cmd.Parameters.AddWithValue("@name", txt_name.Text)
        cmd.Parameters.AddWithValue("@course", combo_course.SelectedItem.ToString)
        cmd.Parameters.AddWithValue("@tname", "")
        cmd.Parameters.AddWithValue("@tdate", "")
        cmd.Parameters.AddWithValue("@marksob", "")
        cmd.Parameters.AddWithValue("@marksout", "")
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        cmd.Connection = con
        cmd.ExecuteNonQuery()

person Steve    schedule 12.04.2013    source источник
comment
Что такое sql tables? sql не является СУБД. Какую СУБД вы используете?   -  person Hamlet Hakobyan    schedule 12.04.2013
comment
это база данных Microsoft SQL Server Compact 3.5 с 5 таблицами.   -  person Steve    schedule 12.04.2013
comment
Что следует учитывать: дважды проверьте фактическое количество строк, есть ли дубликаты, которые добавляются только один раз, есть ли какие-либо поврежденные данные, которые не удалось добавить, и т. д. Удачи   -  person AjV Jsy    schedule 12.04.2013
comment
Первый столбец — номер администратора — это первичный ключ, поэтому дубликаты исключены. Нет, поврежденных данных нет. В таблице показаны все импортированные строки, проблема возникает только при попытке добавить записи вручную.   -  person Steve    schedule 12.04.2013
comment
Привет, Стив, можешь немного почистить вопрос. Не понятно, что вы спрашиваете. например Importing 406 rows, datagridview shows only 408 records, where actual no. of records are 412. But table properties show that there are 412 rows. This problem is with only first table. Мы не можем понять, что реально, а что вы ожидаете. Удачи!   -  person Jeremy Thompson    schedule 17.04.2013
comment
Я импортирую 406 записей из листа Excel. Импортированные записи сохраняются в базу данных без проблем. После импорта я вручную добавляю записи в БД одну за другой. Эти записи также сохраняются в БД. Проблема в том, что когда я проверяю данные таблицы из проводника сервера в Visual Studio 08, в таблице отображается только 408 записей, тогда как на самом деле нет. из сохраненных записей 412. Теперь, щелкнув правой кнопкой мыши имя таблицы, в свойствах таблицы отображается количество строк, в данном случае 412, это означает, что записи есть в БД, но таблица их не показывает.   -  person Steve    schedule 17.04.2013
comment
Также datagridview не отображает эти записи, но когда я нажимаю на имя столбца для сортировки, эти записи видны.   -  person Steve    schedule 17.04.2013


Ответы (1)


проблема была в коде импорта записей. Я читал ячейки файла excel и вставлял их в пять таблиц.

Проблема возникает, только если я импортирую записи во все пять таблиц одну за другой, но если я импортирую записи только в три таблицы, проблема не возникает.

Это решило мою проблему, но я не знал фактической причины этого. Почему я не могу импортировать записи в пять таблиц одну за другой? Если кто-то найдет причину ошибки, пожалуйста, напишите.

person Steve    schedule 20.04.2013