Страница: 1 |
Уважаемые посетители форума, помогите начинающему программеру. У меня проблема. На форме DBGrid, который соединяется с SQL Server 2000. Была поставлена задача, чтобы пользователи могли просматривать и редактировать данные одновременно. С сервером я соеденился, данные отобразил, редактирование то же работает, но............. Редактировать даные может только один пользователь. То есть, если один отредактировал запись, то другой пользователь(если он не обновил DBGrid) после редактирования той же записи и попытке её сохранить(т.е. уйти на другую запись) получает сообщение: Row cannot be located for updating. Some values may have been changed since it was las read. Вот моя процедура подключения к базе: Set cn = New ADODB.Connection При использовании "cn.CursorLocation = adUseServer " DBGrid не даёт вообще ни одному пользователю редактировать записи. Если к "cn.CursorLocation = adUseServer " добавить ещё "rs.CursorType = adOpenDynamic", то невозможно загрузить в DBGrid данные "Set DBGrid.DataSource = rs" Помогите пожалуйста, я уже неделю с этим бьюсь :(
Ну кто- нить помогите!!! А ты не пробовал отключиться от базы, изменять данные, а потом обновлять? Или, как я делал, например: грид - не редактируемый - нажимает юзер кнопку редактировать, грид прячется, на его месте обыкновенные текст.боксы или комбо боксы, после изменений обновляешь db.Execute "INSERT INTO ..." или апдейт, смотря что нужно, если изменение, то номер поля ИД беру с грида, а WHERE нахожу нужную запись А Update как идет, он может идти по RowId, который имеет каждая строка в любом SQL сервере, и на некоторых серверах он все время генерится заново при обновлении строки, и если один клиент изменил строку, то другой ее просто не найдет в базе. Можно попробовать руками обновлять по ключу в таблице, созданным пользователем. А как это по ключу? Не мог бы ты показать примером каким-нить? К Alliancce имеешь ввиду простое ключевое поле, или что-то другое, если другое, то под какой СУБД? А скакой надо? Страница: 1 |
Вопрос: Помогите пожалуйста с DBGrid
Добавлено: 12.03.03 11:21
Автор вопроса: Sharky
Public Sub procConnection(Optional sql As String, Optional rs As ADODB.Recordset, Optional Disconnect As Integer)
Dim cn As ADODB.Connection
Dim sINIFile As String
Dim sServerName As String
cn.CursorLocation = adUseClient
cn.ConnectionString = "driver={SQL Server};" & _
"server=" & sServerName & ";database=" & strBD
cn.ConnectionTimeout = 30
cn.Open
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open sql, cn
End Sub
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Sharky
Вопросов: 1
Ответов: 4
Профиль | | #1
Добавлено: 12.03.03 13:05
Номер ответа: 2
Автор ответа:
SHDZ
ICQ: 209382104
Вопросов: 39
Ответов: 244
Профиль | | #2
Добавлено: 12.03.03 14:53
Номер ответа: 3
Автор ответа:
Alliancce
Вопросов: 4
Ответов: 10
Профиль | | #3
Добавлено: 12.03.03 15:11
Номер ответа: 4
Автор ответа:
Sharky
Вопросов: 1
Ответов: 4
Профиль | | #4
Добавлено: 12.03.03 15:44
Номер ответа: 5
Автор ответа:
SHDZ
ICQ: 209382104
Вопросов: 39
Ответов: 244
Профиль | | #5
Добавлено: 12.03.03 16:02
Номер ответа: 6
Автор ответа:
HardNik
Вопросов: 0
Ответов: 3
Профиль | | #6
Добавлено: 12.03.03 16:16
Извеняюсь за свою дремучесть, но ведь Вы сами выставили LockType = adLockOptimistic ,так что же Вы хотите с такой блокировкой?
Номер ответа: 7
Автор ответа:
Sharky
Вопросов: 1
Ответов: 4
Профиль | | #7
Добавлено: 13.03.03 08:41