Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Grid - удаление записей, удаление выделенных строк 
:(
    Опции темы
HOBu4OK
  Дата 11.11.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Возникла проблема с гридом, а именно с множественнным удалением. прога должна удалять выделенные строки. Пообщался с людьми, говорят можно сначала клонировать, а после удалять.
Или подскажите как установить AbsolutePosition на выделенную строку после удаления предидущей.
Спасибо.
PM MAIL   Вверх
Akina
Дата 11.11.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Если Вы берете на себя смелость удалять записи из БД на основе того что юзер выделил в гриде - значит, каждая выделенная строка может быть однозначно идентифицирована в БД совокупностью данных, показываемых гридом (скажем, значением колонки ID, возможно неотображаемой).
Сохраните в массив эти идентифицирующие поля и на их основе выполняйте удаление безотносительно к источнику строк грида. После чего просто перезапросите данные.

Цитата(HOBu4OK @  11.11.2007,  20:44 Найти цитируемый пост)
подскажите как установить AbsolutePosition на выделенную строку после удаления предидущей

типичная ошибка - попытка работать с коллекцией или рекордсетом, ориентируясь на данные, которые относятся к другой коллекции или рекордсету.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
HOBu4OK
Дата 13.11.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Akina, идея более или менее понятна. Такой вариант решения задачи я слышал. Можно немного кода?

Цитата

типичная ошибка - попытка работать с коллекцией или рекордсетом, ориентируясь на данные, которые относятся к другой коллекции или рекордсету.

Насчет типичной ошибки тоже слышал!) С моим 2х месяч стажем это позволительно.
PM MAIL   Вверх
Akina
Дата 13.11.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(HOBu4OK @  13.11.2007,  13:37 Найти цитируемый пост)
Можно немного кода?

Драфт - только для демонстрации идеи. Само собой, это ужасный код, но для понимания сути сойдет.

Код

Dim IDsToDelete(0)  As Long

For i = 0 To Grid.Recordset.RecordsCount - 1
  If Grid.Recordset.IsMarked Then
    IDsToDelete(UBound(IDsToDelete)) = Grid.Recordset!ID
    ReDim Preserve IDsToDelete(UBound(IDsToDelete)+1) 
  End If
Next

For i = 0 To UBound(IDsToDelete) - 1
  DoCMD.RunSQL "Delete * From MyTable Where ID = " & CStr(IDsToDelete(i))
Next

Grid.Recordset.Requery

ReDim IDsToDelete(0) 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
HOBu4OK
Дата 13.11.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Так то оно так. Все понятно, но вот такого как "IsMarked" vb не знает. Вот собственно в этом и вся проблема. Может как подругому можно условие записать?
А в целом код неплохой.
PM MAIL   Вверх
Akina
Дата 13.11.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(HOBu4OK @  13.11.2007,  20:28 Найти цитируемый пост)
в целом код неплохой

Код безобразный. За такой код программиста могут и уволить.

Цитата(HOBu4OK @  13.11.2007,  20:28 Найти цитируемый пост)
такого как "IsMarked" vb не знает

А что если вместо тупого копирования применить интеллект и способности к поиску и анализу?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
HOBu4OK
Дата 14.11.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Вы меня не так поняли. Копировать код я и не собирался... Мне всего нужно было узнать как правильно обратиться к выделенной строке.

PM MAIL   Вверх
Akina
Дата 14.11.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Тогда подтвердите, что используется именно Grid, а не DBGrid, DataGrid или еще какой-то другой.
Чтобы не ошибиться с терминологией - просто укажите имя референсной библиотеки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
HOBu4OK
Дата 15.11.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Опааа... Простите, не думал что есть разница! 
Я использую dbGrid (контрол = Apex True dbgrid pro 6.0 (oledb)). Отображаю таблицу в гриде через ADODC. 
PM MAIL   Вверх
Akina
Дата 15.11.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ах, так еще и контрол - не из штатных... ну тогда смотрите в его описании, как получить список помеченных строк или проверить строку на помеченность.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.