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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить к таблице столбец с CheckBox'ом 
V
    Опции темы
Pilger
Дата 20.2.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть таблица. Я хочу выдать ее, добавив справа столбец с CheckBox'ами, которые можно было бы маркировать для проведения с выбранными строками каких то определенных операций (удалять и т.п.):

Код

SELECT *, False AS Markierung FROM Tablename


Проблема в том, что полученный CheckBox в таблице нельзя изменить, якобы потому что он не привязан ни к какой таблице. Можно это как то решить?
Заранее спасибо.

Это сообщение отредактировал(а) Pilger - 20.2.2009, 19:43


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
FINANSIST
Дата 20.2.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Pilger @  20.2.2009,  16:45 Найти цитируемый пост)
 CheckBox в таблице нельзя изменить, якобы потому что он не привязан ни к какой таблице.

Чего? Каким образом чекбокс, являющийся частью таблицы, может быть к ней не привязан?




--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Pilger
Дата 20.2.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо за быстрый ответ.
Он не является частью таблицы.. Я добавляю Boolean-значение через SQL-запрос:
Код

SELECT *, False AS Markierung FROM Tablename

Оно не привязано ни к какому значению в таблице и поэтому (как он говорит) не может быть изменено.

Смысл в том, что я хочу дать возможность пользователю выделять нужные строки. Со стандартным выделением не попрёт, потому что там можно выделять только подряд.

Это сообщение отредактировал(а) Pilger - 20.2.2009, 19:44


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
FINANSIST
Дата 20.2.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Pilger @  20.2.2009,  18:08 Найти цитируемый пост)
Он не является частью таблицы.. Я добавляю Boolean-значение через SQL-запрос:SELECT *, False AS Markierung FROM Tablename

значение булев добавляется к таблице следующим образом
Код

alter table qwerty add column qwerty bit

но лучше через конструктор
а запрос выборки с учётом чекбоксов примерно так
Код

SELECT qwerty.столбец1, qwerty.qwetry
FROM qwerty
WHERE (((qwerty.qwerty)=True));






--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Pilger
Дата 20.2.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
bopoha
Дата 20.2.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Pilger, необходимо создать поле в таблице, например, с именем F_SEL тип логический. Тогда пользователь сможет менять значения.

Для "правильной" многопользовательской работы, необходимо создать временную базу для каждого пользователя.
Для выделения структура временной таблицы следующая:
- Ключевое поле, длинное целое
- F_SEL, Логическое

Перед началом выделения во временную таблицу добавляются записи из которых пользователь будет выбирать.
Основная таблица и временная таблица объединяются по ключевое полю запросом.
Пользователь выбирает на форме ставя галочки.

Все...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pilger
Дата 20.2.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Значит все таки обязательно привязывать поле к таблице... Спасибо большое за скорую помощь! Теперь буду знать над чем работать.

Это сообщение отредактировал(а) Pilger - 20.2.2009, 19:16


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
Akina
Дата 22.2.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Pilger @  20.2.2009,  20:14 Найти цитируемый пост)
Значит все таки обязательно привязывать поле к таблице... 

Нет. Но это сильно упростит реализацию.


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

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


Опытный
**


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

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



Но наверное сильно повлияет на скорость работы. При каждом показе формы будет создаваться таблица и в нее пихаться все записи с ключами, после чего объединяться с главной таблицей и фильтроваться, а после закрытия формы - удаляться. Надо будет протестировать.
Я не нашел понятия "временная таблица" в Access. В инете говорят о Oracle и прочих. Выходит, что варианта с локальными таблицами нет, а значит имена этих таблиц не должны повторяться (так как несколько пользователей могут параллельно открывать форму). Это значит, что придется проводить проверку на существование таблиц и давать имя, которое еще не использовалось? Или можно как то попроще?  Надеюсь на вашу помощь.


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
bopoha
Дата 23.2.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Pilger, как таковых временных таблиц в MS Access нет. Но никто вам не мешает создать таблицу с именем temp_[....], например temp_klient_select. И никто не заставляет ее удалять. Она должна жить всегда. Это исключит вариант с совпадением имен (+1 к сопровождаемости). Остается только удалять оттуда данные. Вот только не стоит такую таблицу размещать в интерфейсном файле будет раздуваться сильно.

У меня работает следующая система:
при запуске программы создается временная бд, в ней создаются временные таблицы. Они ищутся в интерфейсной бд по шаблону temp_[...]_def. Постфикс _def отрезается при создании. В завершении таблицы из временной бд линкуются в интерфейсную. Все. Можно работать. 

Работает шустро!
PM MAIL WWW ICQ Skype GTalk   Вверх
Pilger
  Дата 24.2.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В этой БД данные должны перениматься сразу и загружаться всегда актуальные(а меняться они могут постоянно несколькими пользователями). Поэтому я попробовал такой вариант:
  • При входе в программу каждый пользователь получает идентификационный номер.
  • Для всех пользователей существует одна ""временная"" таблица, где помимо тех двух столбцов добавил номер пользователя.
  • Когда пользователь открывает какую либо таблицу  (где должны быть чекбоксы справа) из этой таблицы удаляются все записи с его номером и из таблицы копируются новые (актуальные т.к. данные могут в любое время пополниться или удалиться), после чего объединяются с главной таблицей.
  • Пользователь получает возможность выбирать любые строки.
На главном компе это все работает шустро. Но вот к сожалению на тех компах, которые берут данные через сеть процесс добавления записей из ""временной"" таблицы очень тормозит (при 600 и более записях процесс может замедлиться секунд на 30). Я считываю данные из таблицы и через цикл пихаю их во временную (тоесть приходится выполнять INSERT INTO 600 и более раз). Так что буду теперь разбираться, как можно это ускорить. Если не выйдет, то наверное придется отказаться от этого варианта т.к. сроки подпирают :/
Спасибо вам за вашу помощь, иначе бы до сих пор сидел и пытался добавить столбец через SQL-запрос =)

Это сообщение отредактировал(а) Pilger - 24.2.2009, 17:20


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
bopoha
Дата 24.2.2009, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Pilger, аксесс при работе со связанными таблицами загружает сперва все данные из нее. Т.е. добавлять запросом по записи в подобную таблицу очень медленно. В результате локальная временная таблица работает со скоростью света. Также не понимаю, почему нельзя выполнить добавление данных во временную таблицу ДВУМЯ запросами: удалить и добавить? И все же не стоит в рантайме менять структуры таблиц и создавать их. Медленно это.
PM MAIL WWW ICQ Skype GTalk   Вверх
Pilger
Дата 24.2.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это мой первый опыт с Access, поэтому пришлось не мало времени посвятить, что бы разобраться во многих вещах.
Цитата

Добавлять запросом по записи в подобную таблицу очень медленно.

Цитата

И все же не стоит в рантайме менять структуры таблиц и создавать их

Учту на будущее. Такие вот требования поставили, а знаний к тому времени как таковых не было.
Цитата

почему нельзя выполнить добавление данных во временную таблицу ДВУМЯ запросами

Тоесть создать один String с 600 Insert'ами, разделенными ";"? Я правильно понял?

Ясно. Вы имеете в виду такой вариант:
Код

INSERT INTO (id, name) VALUES (1, 'qwe'), (2, 'qwe') ...

Спасибо. Я попробую

Это сообщение отредактировал(а) Pilger - 24.2.2009, 18:15


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
FINANSIST
Дата 24.2.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(Pilger @  24.2.2009,  17:52 Найти цитируемый пост)
Ясно. Вы имеете в виду такой вариант:код SQL1:INSERT INTO (id, name) VALUES (1, 'qwe'), (2, 'qwe') ...

Нет, он имеет ввиду
Код

insert into ..... select from .......



--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Pilger
Дата 24.2.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



FINANSIST, спасибо. Все сделал. Все работает smile завтра буду тестировать по скорости...


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

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

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

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


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

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


 




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


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

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