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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2010, 07:41   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию Обработчик событий в DBLookupListBox

Всем добрый день, у меня такой вопрос, не подскажите ли, через какой обработчик событий в DBLookupListBox можно сделать так:
нкликнул два раза на любой элемент из списка , и он внесся в другую таблицу?
поясню что я хочу сделать, на форме имеется DBgrid подключеный через Query1, из него даные отображаются в DBLookupListBox, я хочу сдеать так, чтобы при двойном клике на любом элементе в DBLookupListBox этот элемент скидывался в DBgrid2? спасибо заранее
MixanMM вне форума Ответить с цитированием
Старый 29.07.2010, 09:45   #2
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

OnDblClick
pobedin вне форума Ответить с цитированием
Старый 29.07.2010, 10:02   #3
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от pobedin Посмотреть сообщение
OnDblClick
а как Query? узнает какой элемент у меня выделен, и чтобы именно его и добавить, т.е я наваял примерно такое
Код:
Query1.Active:=false;
Query1.SQL.Add (' но вопрос... а тут то что писать? тут же нужно указывать либо перменую, либо строку DBLookListBox'a ');
MixanMM вне форума Ответить с цитированием
Старый 29.07.2010, 10:38   #4
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

dbgrid2 только отображает данные. следовательно он подключен к таблице или квери.
Код:
query1.insert;
query1.fieldbyname('blablabla').asvariant:=query2 (table).fieldbyname('blablabla').asvariant;
query1.post;
можно делать запросом

Код:
with query3, sql do
begin
  close;
  clear;
  text := 'insert into table (pole) values (:par)';
  ParamByName('par').asvariant := DBLookupListBox.keyvalue; // если код записи нужно вставить
  ExecSQL;
end;
pobedin вне форума Ответить с цитированием
Старый 29.07.2010, 11:43   #5
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

вообщем немного помог, получился вот такой код
Код:
t:= DBLookupListBox1.keyvaluye;
Query2.Active := false;
Query2.SQL.clear;
Query2.SQL.ADD('Insert into prod(''Выбрано'') values('''+t+''')');
Query2.ExecSQL;
Query2.Active := true;
Но вот в чем теперь загвоздка, он зараза обратно Query2 не включает, т.е данные добавляет в БД а DBgrid как бы отключенный стоит, но ежели переаодключится , то данные там появляются
MixanMM вне форума Ответить с цитированием
Старый 29.07.2010, 12:43   #6
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

ну вообще, если я правильно понял, то в query2 хранится запрос на выборку. затем туда залетает запрос на добавление. по этому и не отображается в dbgrid ничего. т.е. нужно снова писать запрос на выборку в query2, либо использовать query3 для добавления записи, а query2 вообще не трогать и использовать только для выбора данных.
p.s. active := true, false - лучше не использовать. замени на open, close. значение 't' лучше использовать параметром - мой пример.
pobedin вне форума Ответить с цитированием
Старый 29.07.2010, 12:56   #7
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

Цитата:
Сообщение от pobedin Посмотреть сообщение
ну вообще, если я правильно понял, то в query2 хранится запрос на выборку. затем туда залетает запрос на добавление. по этому и не отображается в dbgrid ничего. т.е. нужно снова писать запрос на выборку в query2, либо использовать query3 для добавления записи, а query2 вообще не трогать и использовать только для выбора данных.
p.s. active := true, false - лучше не использовать. замени на open, close. значение 't' лучше использовать параметром - мой пример.
да не, вообщем все заработало, забыл волшебную стрчку добавить в конце, SELECT * from table. как обычно, ларчик просто открывается, у меня теперь такой вопрос, а можно ли удалить выбранную строку из таблицы , т.е на которой стоит курсор в DBGrid

Последний раз редактировалось MixanMM; 29.07.2010 в 13:00.
MixanMM вне форума Ответить с цитированием
Старый 29.07.2010, 13:08   #8
pobedin
Форумчанин
 
Регистрация: 30.07.2009
Сообщений: 105
По умолчанию

SELECT * from table - именно про это я и говорил, следовало добавить.

sql такой :

Код:
with query, sql do
begin
  close;
  clear;
  text := 'delete* from table where ID= :par';
  ParamByName('par').asvariant := DBLookupListBox.keyvalue;  
  ExecSQL;
end;
ID подразумевается здесь как уникальное поле

Последний раз редактировалось pobedin; 29.07.2010 в 13:11.
pobedin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupListBox SnowSin Компоненты Delphi 0 11.04.2010 12:31
обработчик событий кнопки Dmitriy.Ch Общие вопросы C/C++ 0 04.07.2009 09:35
Как создать обработчик событий для динамически созданного объекта Лукманов Александр Общие вопросы Delphi 1 22.03.2009 22:05
обработчик событий ben95 Помощь студентам 5 28.01.2008 17:46
DBLookupListBox Yana БД в Delphi 5 25.12.2007 01:15