|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - Microsoft Access 2000, помогите решить проблему! |
|
Прочие БД - Microsoft Access 2000, помогите решить проблему!
|
Пользователь Сообщения: 69 |
Профиль | Отправить PM | Цитировать Существует таблица содержащая три поля: КОД (ключевое поле), ПОНЯТИЕ (adVarWChar), ТОЛКОВАНИЕ (adVarWChar).
в ListBox находящийся во всплывающей форме FORM1 требуется поместить только повторяющиеся элементы поля ПОНЯТИЕ и соответствующие им значения в поле ТОЛКОВАНИЕ, сортировка по полю КОД, которое не должно отображаться в ListBox. И это еще цветочки! Хотелось бы, чтобы в ListBox'е было бы три колонки, одна для ПОНЯТИЕ, вторая ТОЛКОВАНИЕ, а третья указывала бы состояние, которое с помощью группы переключателей задает пользователь. В группе три переключателя: + (объединить две текущую и корневую строки в одну), - (удалить текущую строку) и 0 оставить без изменений. Четвертый вариант: пустая ячейка обозначающая корневую строку с которой пользователь ничего сделать не может. Хотелось бы, чтобы в правой крайней колонке динамически(!) отображались бы выбранные пользователем действия для данной повторяющейся строки. Например: ПОНЯТИЕ ТОЛКОВАНИЕ СОСТОЯНИЕ ------------------------------------- ДУРАК |Стакан (турецк.) | | (корневая строка) ДУРАК |Глупый человек | 0 | (пользователь оставил эту строку без изменений ДУРАК |Карточная игра | - | (эту строку он захотел удалить) ДУРАК |Придворный шут | + | (эту слить с корневой) НОСОК |Перед ступни | | (корневая строка) НОСОК |Элемент одежды | - | (эту строку пользователь захотел удалить) ------------------------------------- и т.д. Я знаю, что проще было бы организовать новую таблицу с которой и работать через LisBox, а потом ее удалить изменив данные в таблице источнике, но это некрасиво, да и говорят, что при коллективном доступе будут возникать ошибки и некорректное отображение данных. Вариант с Value List (RowSourceType) тоже не проходит: данных очень много от 700 строк до 2000, и когда строка RowSource переполняется (на моем компьютере это 56кбайт) возникает ошибка runtime error 2176 "Слишком болшое значение для заданного свойства". Как решить задачу изящно и без багов? |
|
Отправлено: 23:31, 11-12-2007 |
Назгул Сообщения: 2633
|
Профиль | Отправить PM | Цитировать Цитата LiXiQing:
Это наоборот правильно и единственно верно в многопользовательской среде, иначе куча пользователей нафиг заблокируют вашу таблицу. Гм. я с Access как с базой никогда не работал, обычно использовал его как генератор консолидированных отчетов для MS SQL. Пара вопросов, по текущему состоянию дел в MS Access: - там временные таблицы существуют? - View? Вобще с точки зрения платформенной независимости приложения и разделения данных, правильно решать данную задачу через временные таблицы. |
|
------- Отправлено: 09:43, 14-12-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 69
|
Профиль | Отправить PM | Цитировать Цитата kim-aa:
И еще я знаю как указать вывод всех значений SELECT ALL, знаю как отсечь повторяющиеся SELECT DISTINCT, но вот как выбрать только повторяющиеся элементы? Нет, я могу решить эту задачку в VB модуле, но как ее решить через sql запрос, вот в чем вопрос! |
|
Отправлено: 12:21, 14-12-2007 | #3 |
Назгул Сообщения: 2633
|
Профиль | Отправить PM | Цитировать В MS SQL 6.x это было бы так
SELECT понятие, COUNT(*) FROM таблица GROUP BY понятие HAVING COUNT(*)>1 |
------- Отправлено: 14:20, 14-12-2007 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цитата kim-aa:
Как вариант, можно создать форму для отображения таблицы, а в ней - свободные (т.е. не ссылающиеся ни на какое конкретное поле данных) элементы, изменения которых обрабатывать сразу как были сделаны. Еще разумней - по двойному щелчку на понятии открыть отдельную диалоговую форму, в которой только одно понятие со всеми его толкованиями отобразить, дать пользователю возможность изменить что хочет, просмотреть результат и принять окончательное решение сохранять ли такие изменения или откатить к исходному состоянию. Но если так уж требуется именно пакетная обработка всего словаря сразу, а не понятия за понятием - то создать временно дополнительную таблицу программно, причем свою для каждого пользователя, а процесс применения изменений объединить с процессом удаления этой таблицы в одну транзакцию. |
||
Отправлено: 21:01, 02-02-2008 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
BSOD - помогите решить проблему... | Necessary | Хочу все знать | 3 | 28-07-2008 14:47 | |
Помогите решить проблему | shron | Сетевые технологии | 2 | 05-08-2007 02:11 | |
Помогите решить проблему. | vint29 | Материнские платы и память | 14 | 22-01-2007 19:07 | |
[решено] Как решить проблему в win 2000? | Rusman | Microsoft Windows NT/2000/2003 | 4 | 31-08-2006 10:20 | |
Помогите решить проблему!!!! | Guest | Сетевые технологии | 1 | 14-10-2004 23:46 |
|