Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2013, 08:45   #1
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
Сообщение Запрет редактирования записи в БД

Доброго всем времени суток, тут такой вопрос, имеется БД на ацесе, и есть необходимость по щелчку на чекбоксе блокировать на изменение текущую запись в бд, и ещё один вопрос правда немного не в тему, как правильно прописать конекшн стринг если база будет перетекать из каталога в каталог, то есть надо ли там указывать все параметры которые задавались изначально при первичном подключении к базе, и если можно то предоставьте пример кода. Заранее благодарен
Liite вне форума Ответить с цитированием
Старый 29.03.2013, 08:51   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
если база будет перетекать из каталога в каталог
Ну путь к БД надо будет указывать одноздначно.
А вы не можете определиться где у вас будет БД?
И зачем вам блокировка записи? Точнее как вы работаете с БД запросами? Или монопольно? Если монопольно, то вы блокируете БД. Стоит ли в этом случае заботиться о блокировке записи?
Если запросами, то механизм придется реализовывать самостоятельно.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 29.03.2013, 09:09   #3
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
По умолчанию

нет, бд будет работать в мультипользовательском режиме, есть необходимость закрывать и открывать доступ к определённым записям, а по поводу расположения бд, просто в разных отделах оно будет лежать в разных местах, и sql у меня там не используется, просто адо табл и дата сорс...
Liite вне форума Ответить с цитированием
Старый 29.03.2013, 09:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
бд будет работать в мультипользовательском режиме
Тогда тебе не локальную БД нужно делать а серверную.
Цитата:
как правильно прописать конекшн стринг
А как ты сейчас его ставишь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.03.2013, 09:38   #5
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
По умолчанию

сейчас оно такое же как при создании тоесть выглядит вот так -
Provider=Microsoft.Jet.OLEDB.4.0;Us er ID=Admin;Data Source=db.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
то есть когда я буду присваивать путь до базы
Код:
tbl2.ConnectionString :=''
надо ли вставлять сюда те данные или достаточно просто пути а остольное она сама подхватит ?
Liite вне форума Ответить с цитированием
Старый 29.03.2013, 09:59   #6
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
По умолчанию

а по поводу записи так никто ничего и не сказал))
Liite вне форума Ответить с цитированием
Старый 29.03.2013, 10:24   #7
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
необходимость по щелчку на чекбоксе блокировать на изменение текущую запись в бд
ну так и делай при щелчке чекбокса
Код:
UPDATE table SET locked = :l WHERE recordid = :recordid;
// где параметр l
... ParamByName('l').Value = Ord(CheckBox.Checked);
а потом при открытии проверяй его
Код:
SELECT locked FROM table WHERE recordid = :recordid;
ну и сравнение
Код:
if ADOQuery.Fields[0].Value = 1 then 
begin
  ShowMessage('Запись заблокирована');
  Exit;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 29.03.2013 в 10:27.
Yurk@ вне форума Ответить с цитированием
Старый 29.03.2013, 10:33   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от Liite Посмотреть сообщение
а по поводу записи так никто ничего и не сказал))
Почему же? rdama сказал
Цитата:
механизм придется реализовывать самостоятельно
Заводите поле с признаком можно/нельзя редактировать. Кто-то по полномочиям может изменять его содержимое. Остальные не могут, но на основании этого признака могут или не могут редактировать остальные поля записи. Все на уровне клиентской части

upd

Вот и Yurk@ то же самое предлагает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.03.2013 в 10:36.
Аватар вне форума Ответить с цитированием
Старый 29.03.2013, 11:09   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

По подключению:

Код:
tbl2.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Us er ID=Admin;Data Source='+PathDB+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'
Выделена жирным переменная, в которой будет храниться полный путь к файлу базы данных, включая сам файл с расширением. Этот путь можно сохранять хоть в реестр, хоть в ини-файл и считывать оттуда при запуске программы перед коннектом к БД.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 29.03.2013, 11:12   #10
Liite
позитиффф
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 34
По умолчанию

а можно это как ни будь без запроса, средствами самого adotable сделать, калонка то у меня под это дело есть, просто не могу въехать как ей объяснить что надо заблочить текущую (выделенную) запись
Liite вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода уникальной записи. Servin БД в Delphi 6 07.08.2012 18:19
запрет редактирования части текста в документе Bagema Microsoft Office Word 1 04.02.2011 09:29
ЗАПРЕТ РЕДАКТИРОВАНИЯ ПОЛЯ Cone Microsoft Office Excel 12 01.02.2011 14:29
запрет редактирования ячеек в excel из под delphi Ensoph Общие вопросы Delphi 0 08.10.2009 13:29
запрет редактирования AnGrig Компоненты Delphi 3 18.10.2007 11:37