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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2013, 08:09   #1
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию checklistbox

Здравствуйте есть два checklistbox и две таблицы "Разделы" и "Документы"
Таблицы связаны по полю (kmr)-код раздела
В первый checklistbox1 запросом заносятся Разделы
Код:
  Query1.Close;
  Query1.DatabaseName:='БД';
  Query1.SQL.Clear;
  Query1.SQL.Text:='select * from Разделы where kmr<>0 order by nmr';
  Query1.Open;
  CheckListBox1.Clear;
  while not Query1.Eof do begin
    CheckListBox1.Items.Add(Query1.FieldByName('nmr').AsString);
    Query1.Next;
  end;
  Query1.Close;
end;
Мне нужно чтоб при нажатии на какой либо раздел в checklistbox1, в checklistbox2 отображались документы этого раздела. мне подсказали ия сделала вот так:
Код:
Query1.Close;
  Query1.DatabaseName:='БД';
  Query1.SQL.Clear;
  Query1.SQL.Text:='select * from Разделы where kmr<>0 order by nmr';
  Query1.Open;
  CheckListBox1.Clear;
  while not Query1.Eof do begin
    CheckListBox1.Items.AddObject(Query1['nmr'], Query1.FieldByName('kmr').AsInteger);
    Query1.Next;
  end;
  Query1.Close;
end;

procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
  Query2.SQL.Text := 'select * from Документы where kmr='+
                    IntToStr(Integer(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]));
  Query2.Open;
  CheckListBox2.Items.Clear;
  while not Query2.Eof do begin
    CheckListBox2.Items.Add(Query2.FieldByName('npmr').AsString);
    Query2.Next;
  end;
  Query2.Close;
end;
Но так не получается т.к. выходит ошибка.
Подскажите как можно решить данную задачу?
зарание спасибо)
King_Of_Arthur вне форума Ответить с цитированием
Старый 24.07.2013, 08:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.к. выходит ошибка.
Заталкивай ее обратно.
Цитата:
как можно решить данную задачу?
Правильно подсказывали. Научись понимать ошибки и будешь писать коды без них.
Код:
Query1.Close;
  Query1.DatabaseName:='БД';
  Query1.SQL.Clear;
  Query1.SQL.Text:='select * from Разделы where kmr<>0 order by nmr';
  Query1.Open;
  CheckListBox1.Clear;
  while not Query1.Eof do begin
    CheckListBox1.Items.AddObject(Query1['nmr'],integer(Query1.FieldByName('kmr').AsInteger));
    Query1.Next;
  end;
  Query1.Close;
end;

procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
  Query2.SQL.Text := 'select * from Документы where kmr='+
                    IntToStr(Integer(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]));
  Query2.Open;
  CheckListBox2.Items.Clear;
  while not Query2.Eof do begin
    CheckListBox2.Items.Add(Query2.FieldByName('npmr').AsString);
    Query2.Next;
  end;
  Query2.Close;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.07.2013, 08:28   #3
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

Тут я исправила
Код:
Query1.Close;
  Query1.DatabaseName:='БД';
  Query1.SQL.Clear;
  Query1.SQL.Text:='select * from Разделы where kmr<>0 order by nmr';
  Query1.Open;
  CheckListBox1.Clear;
  while not Query1.Eof do begin
    CheckListBox1.Items.AddObject(Query1['nmr'],integer(Query1.FieldByName('kmr').AsInteger));
    Query1.Next;
  end;
  Query1.Close;
end;
на это
Код:
 CheckListBox1.Items.AddObject(Query1['nmr'], 
            TObject(Query1.FieldByName('kmr').AsInteger));
а вот ошибку "Таблица не существует
файл или каталог не существует" я не понимаю
King_Of_Arthur вне форума Ответить с цитированием
Старый 24.07.2013, 08:41   #4
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

Ой вот я тупитца я поняла)))
Код:
Query2.Close;
  Query2.DatabaseName:='БД';
  Query2.SQL.Clear;
  Query2.SQL.Text := 'select * from Документы where kmr='+
                    IntToStr(Integer(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]));
  Query2.Open;
  CheckListBox2.Items.Clear;
  while not Query2.Eof do begin
    CheckListBox2.Items.Add(Query2.FieldByName('npmr').AsString);
    Query2.Next;
  end;
  Query2.Close;
end;
King_Of_Arthur вне форума Ответить с цитированием
Старый 24.07.2013, 08:42   #5
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

три первых строчки самых важных не добавила
King_Of_Arthur вне форума Ответить с цитированием
Старый 24.07.2013, 11:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Бывает... )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CheckListBox teres Общие вопросы Delphi 0 10.10.2011 18:08
CheckListBox BALLIN Помощь студентам 4 14.04.2010 11:37
CheckListBox jahongir007 Общие вопросы Delphi 4 07.06.2009 12:10
Checklistbox RealSHELS Общие вопросы Delphi 3 30.07.2008 22:40
CheckListBox ivp88 Компоненты Delphi 4 12.05.2007 15:49