|
|
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
При удалении записи в RecordSet-e приходиться делать requery Код примерно такой: With tmpRS If .RecordCount > 0 Then .MoveFirst Do While Not .EOF KeyRS.MoveFirst KeyRS.Find "ID=" & tmpRS!Target_ID If KeyRS.EOF Then .Delete (adAffectCurrent) End If .MoveNext End If Loop End With Почему именно так? Ведь это доп. нагрузка на сервер! Причем сбиваются значение полей .RecordCount он равен 0 Не делается .MoveNext - идет глюк "Дескриптор указывает на удаленную строку" Как все енто решить? Помогите! если юзер другой удаляет запись, то происходят аналогичные ошибки.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2002, 14:24:55 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
MSSQL знает только один способ удаления - SQL-выражение "DELETE FROM ..." Все остальное от лукавого, а потому любые "странности" имеют право на существование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2002, 14:45:20 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
Вот они - басиковцы и паскалисты! :-))))) Сразу видно, что никогда не удаляли элемент из stl'ного контейнера и не чесали потом репу с вопросом "а че итератор на какую-то лажу указывает?". Млин, дети прогресса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2002, 15:11:00 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
GreenSunrise-ку - лучше свою почешите и дайте дельный совет, чем на пустом месте зубами клацать..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 07:33:30 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
А вам Dankov ответил - delete from <table> where id = <id>. Я к нему присоединяюсь - все остальное от лукавого. Или вам необходимо объяснение, почему после удаления элемента из коллекции указатель на него становится невалидным? Мож, сами додумаетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 10:18:03 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
Почему он невалиден уже ясно... но неужели нет способов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 10:32:56 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
Напиши: Connnection.execute("delete from TmpRsTable where Target_ID in (select ID from KeyRsTable)") Кстати как у тебя этот код работает: With tmpRS If .RecordCount > 0 Then .MoveFirst Do While Not .EOF KeyRS.MoveFirst KeyRS.Find "ID=" & tmpRS!Target_ID If KeyRS.EOF Then .Delete (adAffectCurrent) End If .MoveNext End If Loop End With Может loop и end if местами надо поменять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 10:47:28 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
А еще почему-то удаление происходит, если EOF. Наверное нужно not EOF? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 11:58:23 |
|
||
|
Странности удаление ADO и MSSQLSEREVR 2k
|
|||
|---|---|---|---|
|
#18+
Спасибо. Пример и правда нерабочий, а так вырезка с правкой на корую руку.... Действительно написал, что-то вроде Connnection.execute("delete from TmpRsTable where Target_ID in (select ID from KeyRsTable)") и работает теперь никто не ругается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2002, 06:26:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32049978&tid=1820378]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 349ms |

| 0 / 0 |
