Здраствуйте! ( Это мое первое сообщение в форуме )
У меня возникла такая проблема.
Когда я пищу в БД MS Access несколько строк (на vb.net Windows Application) и
потом после этого сразу пытаюсь читать только-что записанные строки,
у меня происходит то, что последняя или последние две строки не успевают запсаться и я получаю обратно не все строки!!!
Кто знает как можно решить эту проблему?
Да, кстати когда я ставлю System.Threading.Thread.Sleep(3000)
перед тем как читать, то всет становится на свои места.
For Each dr As DataRow In dbTable.Rows
strInsert = "INSERT INTO procedures ...... " 'естественно это не полная строка
Dim AdapMain As New OleDbDataAdapter(strInsert, Conn)
AdapMain.SelectCommand.ExecuteNonQuery()
Next
System.Threading.Thread.Sleep(3000) 'wait 3 seconds
Dim sDetail As New sessionDetail(sessionID) ' sessionDetail это форма которая отоброжает эти самые записи
sDetail.Show()
я слышал про транзакции, и про asyncstate, просто никак не понимаю как его использовать для моего кода.
Буду очень благодарен если хоть как-то поможете.
Здравствуйте, Арташес, Вы писали:
А>Здравствуйте, gaidar, Вы писали:
G>>Приведите код.
G>>данное сообщение получено с www.gotdotnet.ru G>>ссылка на оригинальное сообщение
Dim tran as OleDbTransaction
tran = Conn.BeginTransaction()
А>For Each dr As DataRow In dbTable.Rows
А> strInsert = "INSERT INTO procedures ...... "'естественно это не полная строка
А> Dim AdapMain As New OleDbDataAdapter(strInsert, Conn)
AdapMain.SelectCommand.Transaction = tranА> AdapMain.SelectCommand.ExecuteNonQuery()
А>Next' Анализируем были ли ошибки и
tran.Commit() ' ошибок не было
tran.Rollback() 'Ошибки случились
А>System.Threading.Thread.Sleep(3000) 'wait 3 seconds
А>Dim sDetail As New sessionDetail(sessionID) ' sessionDetail это форма которая отоброжает эти самые записи
А>sDetail.Show()
Здравствуйте, Bigger, Вы писали:
B>Здравствуйте, Арташес, Вы писали:
А>>Здравствуйте, gaidar, Вы писали:
G>>>Приведите код.
G>>>данное сообщение получено с www.gotdotnet.ru G>>>ссылка на оригинальное сообщение
B>
B>Dim tran as OleDbTransaction
B>tran = Conn.BeginTransaction()
А>>For Each dr As DataRow In dbTable.Rows
А>> strInsert = "INSERT INTO procedures ...... "'естественно это не полная строка
А>> Dim AdapMain As New OleDbDataAdapter(strInsert, Conn)
B> AdapMain.SelectCommand.Transaction = tranА> AdapMain.SelectCommand.ExecuteNonQuery()
А>>Next
B>' Анализируем были ли ошибки и
B>tran.Commit() ' ошибок не было
B>tran.Rollback() 'Ошибки случились
А>>System.Threading.Thread.Sleep(3000) 'wait 3 seconds
А>>Dim sDetail As New sessionDetail(sessionID) ' sessionDetail это форма которая отоброжает эти самые записи
А>>sDetail.Show()
B>skip
B>Смотрим на выделенное
Спасибо за ответ!!!
Правда из за отсутствия времени я не успел его поткстировать но, принцип ясен (кажется )!
Здравствуйте, Арташес, Вы писали:
А> Здраствуйте! ( Это мое первое сообщение в форуме ) А>У меня возникла такая проблема. А>Когда я пищу в БД MS Access несколько строк (на vb.net Windows Application) и А>потом после этого сразу пытаюсь читать только-что записанные строки, А>у меня происходит то, что последняя или последние две строки не успевают запсаться и я получаю обратно не все строки!!! А>Кто знает как можно решить эту проблему?
А>Да, кстати когда я ставлю А>System.Threading.Thread.Sleep(3000) А>перед тем как читать, то всет становится на свои места.
А>Заранее спасибо А>Арташес
Старая фича Access. У него получается как бы отложенная запись. Никто не знает, когда данные физически лягут в БД.
Поэтому лучше в Access вообще отказаться от перечитывания только что записанных данных.