ЛЮДИ ПОМОГИТЕ разобратся с Access-ом, нервы невыдерживают

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

ЛЮДИ ПОМОГИТЕ разобратся с Access-ом, нервы невыдерживают

Сообщение Георги » 26.06.2006 (Пн) 12:53

Здравствуйте уважаемые форумщики. Пишу приложение на VB.net-e работающее с базой. В базе таблица из 3-х колонок, login, pass и detals (данные о юзоре). Чтение из базы получается, а вот изменение в базе (изменение detals юзера по его ключу login i pass) нет. Помогите соориентироватся. Спосибо.

Dim myAccessConn As OleDbConnection
Dim dbCmd As OleDbCommand = New OleDbCommand("SELECT * FROM baza")
Try
myAccessConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\baza.mdb")
Dim orderDA As OleDbDataAdapter = New OleDbDataAdapter("SELECT login, pass, detals FROM baza", myAccessConn)
myAccessConn.Open()
Dim custDS As DataSet = New DataSet()
orderDA.Fill(custDS, "baza")

Dim pRow As DataRow
' custDS.Tables("baza").Columns("login")
For Each pRow In custDS.Tables("baza").Rows
If pRow("login").ToString()=User.login And pRow("pass").ToString()=User.pass Then

pRow("detals") = User.detals
Exit For
End If
Next
orderDA.Update(custDS, "baza") <<<<<<<<<<<<< Уменя вот тут срывает ексепшн

myAccessConn.Close()
Mechashiv = Mechashiv - User.hashiv
elq = elq + User.hashiv

Catch e As Exception
End Try

Подскажите как исправить
Большое проБольшое спасибо

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 13:10

Датасет не в режиме редактирования?

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:25

тоисть?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 13:27

Что-то типа orderDA.Edit

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:28

нет

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 13:30

Георги писал(а):нет

Это значит "не в режиме" или "этого нам не надо" (нет возможности проверить)

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:30

это после обявления orderDA должен устоновить?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 13:35

Код: Выделить всё
For Each pRow In custDS.Tables("baza").Rows
  If pRow("login").ToString()=User.login And pRow("pass").ToString()=User.pass Then
    custDS.Edit
    pRow("detals") = User.detals
    custDS.Update
    Exit For
  End If
Next
orderDA.Update(custDS, "baza")

За достоверность не ручаюсь

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:36

У custDS-а нету edite режима

Dim custDS As DataSet = New DataSet()

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:40

Со синтексом уменя всо ОК, но вовремя работы возникает ошибка, вот вчом дело то

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.06.2006 (Пн) 13:43

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

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 13:44

1. А у orderDA?
2. Может, рекордсет необновляемый?
3. Наконец, текст ошибки?

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:55

System.InvalidOperationException: Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String strTable)

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 13:59

Друзя, извените меня за повторное создание темы, иначе этот вопрос остался бы нерешонным, Извените за доставленную неудобность

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 26.06.2006 (Пн) 14:03

Сдаюсь (vb.net не знаю)
Верю, что проблема решится

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.06.2006 (Пн) 14:08

Георги писал(а):Друзя, извените меня за повторное создание темы, иначе этот вопрос остался бы нерешонным

:shock:
Можно поподробнее объяснить сию логику?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Георги
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.06.2006 (Пн) 12:08

Сообщение Георги » 26.06.2006 (Пн) 14:26

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

Lenny
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 103
Зарегистрирован: 15.04.2005 (Пт) 20:06

Сообщение Lenny » 31.07.2006 (Пн) 19:30

Попробуй Dim orderDA As OleDbDataAdapter = New OleDbDataAdapter("SELECT login, pass, detals FROM baza", myAccessConn,1,3)

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 01.08.2006 (Вт) 8:28

Георги писал(а):System.InvalidOperationException: Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String strTable)


в ошибке точно указано почему происходит ошибка: Update requires a valid UpdateCommand

Вам надо определить и команду обновления

пример
Код: Выделить всё
DIM cmdUpdate as SQLCommand
Dim cmdSelect AS SQLCommand

cmdSelect = NEW SQLCommand()
cmdSelect = "SELECT ..."
cmdSelect.Connection = MyConnection

cmdUpdate = New SQLCommand()
cmdUpdate = "UPDATE MyTable SET Field1 = @Val1, Field2 = @Val2"
cmdUpdate.Connection = MyConnection

Dim MyDataAdapter As New SqlDataAdapter
MyDataAdapter.SelectCommabd = cmdSelect
MyDataAdapter.UpdateCommabd = cmdUpdate

...


MyConection.Open()
MyDataAdapter.Update(...)
MyConection.Close()


Для удаления создается отдельная команда

чтобы ничего не напутать, создавайте ДатаАдапрет визардом


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron