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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 17:39   #1
Opiym
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 28
Восклицание добавление из DBGrid в PickList

Здравствуйте, появилась проблема, нуждаюсь в вашей помощи!!!
Необходимо при добавлении записи в колонку, чтобы это запись добавлялась в пиклист не только этой таблицы, но и в другие, например есть таблица Поставщики в ней есть колонка Поставщик, добавляю туда нового поставщика, и этот поставщик должен добавиться в пиклист таблицы МатеринскиеПлаты в колонку поставщик (в выподающий список)... Может сильно замудрил, задавайте вопросы...
Код:
procedure PopulatePickList(Column:TColumn;ADOTable:TADOTable;FieldName:string);
var
   QryTemp: TQuery;
   i: integer;
begin
   Column.PickList.Clear;
   QryTemp := TQuery.Create(nil);
   with QryTemp do
   begin
     SQL.Clear;
     SQL.Add('SELECT DISTINCT '+FieldName+' from '+ADOTable.TableName);
   end;
 
   with QryTemp do
   begin
     ADOTable.Active := True;
     ADOTable.First;
     for i := 0 to QryTemp.RecordCount - 1 do
     begin
       if FieldByName(FieldName).AsString <> '' then
          Column.PickList.Add(FieldByName(FieldName).AsString);
       ADOTable.Next;
     end;
     ADOTable.Active := False;
   end;
   QryTemp.Free;
end;
 
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
PopulatePickList(DBGrid1.Columns[1],ADOTable2,'МатеринскиеПлаты');
end;
Программа!
1.RAR
ОРИГИНАЛЬНЫЙ КОД!
Код:
procedure PopulatePickList(Column:TColumn;Table:TTable;FieldName:string); 
var 
   QryTemp: TQuery; 
   i: integer; 
begin 
   Column.PickList.Clear; 
   QryTemp := TQuery.Create(nil); 
   with QryTemp do 
   begin 
     DatabaseName := Table.DatabaseName; 
     SQL.Clear; 
     SQL.Add('SELECT DISTINCT '+FieldName+' from '+Table.TableName); 
   end; 

   with QryTemp do 
   begin 
     Active := True; 
     First; 
     for i := 0 to QryTemp.RecordCount - 1 do 
     begin 
       if FieldByName(FieldName).AsString <> '' then 
         Column.PickList.Add(FieldByName(FieldName).AsString); 
       Next; 
     end; 
     Active := False; 
   end; 
   QryTemp.Free; 
end; 

procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField); 
begin 
PopulatePickList(DBGrid.Columns[2],Table,'Field'); 
//замените таблицу Вашим tableName сетки 
//DBGrid.Columns[2] с Вашим DBGrid Column, который Вы хотите PickList для 
//Field с полем для PickList 
end;

Последний раз редактировалось Opiym; 30.05.2011 в 17:43.
Opiym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление в DBGrid gs.Soroka C/C++ Базы данных 0 29.05.2011 16:09
Добавление таблицы в dbGrid nakazanie БД в Delphi 2 23.02.2011 16:02
DBGrid PickList и DBEdit Abricosko БД в Delphi 6 01.06.2010 18:00
Добавление в DBGrid с избыточностью Droid БД в Delphi 1 06.07.2009 21:27
Добавление в DBgrid girz БД в Delphi 9 20.05.2009 16:38