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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 13:18   #11
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Разобрался.

Поставь в Обджект инспектооре для ADOQuery1:
LockType ltReadOnly; //это
LockType ltUnspecified; //или это

или

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.Active:=false;
  //ADOQuery1.LockType:=ltReadOnly;   //это
  ADOQuery1.LockType:=ltUnspecified;  //или это
  AdoQuery1.close;
  AdoQuery1.Active:=false;
  AdoQuery1.close;
  AdoQuery1.sql.clear;
  AdoQuery1.sql.Add('SELECT * from Dop, Rases, Info where Rases.Number=1 and Dop.Kolvo=1 and Info.id=Rases.raseid AND Rases.raseid=Info.id');
  AdoQuery1.Open;
end;
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 11.06.2008 в 14:02.
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 14:47   #12
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
Разобрался.

Поставь в Обджект инспектооре для ADOQuery1:
LockType ltReadOnly; //это
LockType ltUnspecified; //или это

или

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.Active:=false;
  //ADOQuery1.LockType:=ltReadOnly;   //это
  ADOQuery1.LockType:=ltUnspecified;  //или это
  AdoQuery1.close;
  AdoQuery1.Active:=false;
  AdoQuery1.close;
  AdoQuery1.sql.clear;
  AdoQuery1.sql.Add('SELECT * from Dop, Rases, Info where Rases.Number=1 and Dop.Kolvo=1 and Info.id=Rases.raseid AND Rases.raseid=Info.id');
  AdoQuery1.Open;
end;
Большое спасибо все работает только вот один вопрос что все это значит и почему после этого все работает?

И еще один вопрос после того как я выполнил то что вы написали выборка по Пункту вылета (DBcombobox1) не работает.... а так ошибка больше не вылетает...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 11.06.2008 в 14:57.
Stanislav вне форума Ответить с цитированием
Старый 11.06.2008, 14:59   #13
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

LockType
Свойство LockType сообщает провайдеру о блокировках, которые будут помещены в записи в процессе редактирования. Блокировка позволяет предотвратить чтение данных одним пользователем в то время как другой пользователь изменяет эти данные, а так же не дать пользователю изменить данные, если они были изменены другим пользователем. Такой эффект наблюдается в базе данных Access, которая блокирует некоторые соседние записи. Дело в том, что Access использует так называемую стратегию фиксации страницы. Поэтому, если пользователь редактирует запись, то другой пользователь уже не сможет получить доступ к изменению данной записи и, даже не сможет модифицировать ближе стоящие записи (до или после неё). В Delphi, для этой цели используется TADOLockType в которой указывается тип блокировки, которая будет использоваться. Вы можете управлять строкой и блокировкой страницы, устанавливая соответствующую опцию блокировки курсора. Чтобы использовать определенную схему блокировки, провайдер и тип базы данных должны поддержать эту схему.
ltOptimistic
Оптимистическая блокировка блокирует запись только в том случае, если она была физически изменена. Этот тип блокировки полезен, если существует очень маленький шанс того, что второй пользователь может модифицировать строку в интервале между тем, когда курсор открыт, и когда строка окончательно модифицирована. Текущие значения в строке сравниваются со значением полученным когда строка была последний раз выбрана.
ltPessimistic
Пессимистическая блокировка блокирует каждую запись, до тех пор пока она находится в процессе редактирования. Эта опция заставляет ADO устанавливать исключительную блокировку на строку, когда пользователь делает любое изменения в любом столбцу записи. Компоненты ADOExpress непосредственно не поддерживают пессимистическую блокировку записей, потому что сама ADO не имеет возможности произвольно блокировать данную запись и до сих пор поддерживает навигацию в другие записи.
ltReadOnly
Данная блокировка просто не позволяет редактировать данные. Полезна в тех случаях, когда Ваше приложение должно временно предотвратить изменение данных, при этом чтение данной записи разрешено. Самый идеальный способ использования данной блокировки для создания отчётов, если установить CursorType как ctForwardOnly.
ltBatchOptimistic
Блокировка BatchOptimistic используется в клиентских курсорах. Наборы записей с данным курсором апдейтятся локально и все изменения отправляются в базу данных пакетами.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 15:11   #14
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
выборка по Пункту вылета (DBcombobox1) не работает
Что именно не работает? Возможно его набо повесить на другой АДОКвери....
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 15:48   #15
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
Что именно не работает? Возможно его набо повесить на другой АДОКвери....
После выполнения этого:
Код:
procedure TForm1.Button1Click(Sender: TObject);   
begin  
  ADOQuery1.Active:=false;   
  //ADOQuery1.LockType:=ltReadOnly;   //это   
  ADOQuery1.LockType:=ltUnspecified;  //или это   
  AdoQuery1.close;   
  AdoQuery1.Active:=false;   
  AdoQuery1.close;   
  AdoQuery1.sql.clear;   
  AdoQuery1.sql.Add('SELECT * from Dop, Rases, Info where Rases.Number=1 and Dop.Kolvo=1 and Info.id=Rases.raseid AND Rases.raseid=Info.id');   
  AdoQuery1.Open;   
end;

Выборка Dbcombobox1 - ом уже не осуществляеться
Например выбираешь "Москва" нечего не происходит
почему так?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 11.06.2008, 15:51   #16
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Повесь Dbcombobox1 на ADOQuery2...

или

Рапгульно, но можно...

procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Text:=''; ComboBox1.Items.Clear;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
ComboBox1.Items.Add(ADOQuery2.Field ByName('PunktP').AsString);
ADOQuery2.Next;
end;
end;
Нет невыполнимых задач, всё дело времени...

Последний раз редактировалось D-mon; 11.06.2008 в 16:17.
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 16:48   #17
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
Повесь Dbcombobox1 на ADOQuery2...

или

Рапгульно, но можно...

procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Text:=''; ComboBox1.Items.Clear;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
ComboBox1.Items.Add(ADOQuery2.Field ByName('PunktP').AsString);
ADOQuery2.Next;
end;
end;
Я перепробовал все варианты и то же самое прикрипил исходники.
Может я что то не то делаю...
Вложения
Тип файла: rar TreningAdo.rar (33.1 Кб, 9 просмотров)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 11.06.2008, 16:50   #18
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

У меня чёт тоже самое, я вообще немогу открыть список (возможно из-за того что у меня 5 делфа, а может компонент глюкавый)...
Код:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Text:=''; ComboBox1.Items.Clear;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
ComboBox1.Items.Add(ADOQuery2.FieldByName('PunktP' ).AsString);
ADOQuery2.Next;
end;
end;
Попробуй это...
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 11.06.2008, 21:53   #19
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
У меня чёт тоже самое, я вообще немогу открыть список (возможно из-за того что у меня 5 делфа, а может компонент глюкавый)...
Код:
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Text:=''; ComboBox1.Items.Clear;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
ComboBox1.Items.Add(ADOQuery2.FieldByName('PunktP' ).AsString);
ADOQuery2.Next;
end;
end;
Попробуй это...
Может забить эти данные в обычный комбобокс?!
На решение данной задчи на ГОСЕ дано 2 часа а я даже не могу сделать таких простых вещей что это за чертовщина может кто-нибудь уже сталкивался с такой проблемой?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 12.06.2008, 15:31   #20
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Ребята сдесь есть кто-нибудь кто знает как сделать так чтоб после выполнения запроса не вылетала эта ошибка?!
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08
ADOQuery + поток Гена БД в Delphi 0 27.03.2007 09:55
adoquery Toxa БД в Delphi 10 12.02.2007 20:07
ADOQuery & WIN98 v4.10 NovaC БД в Delphi 2 09.01.2007 13:27