Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.10.2011, 21:49
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию Филтрация через TreeView не правильно работает

Всем приииивет и это снова я.
Проблема вот в чём:
TreeView фильтрует только по одному значение остальные игнорирует(
Использую такой код:
Код:
procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin

if DataModule1.ADOQuery2.Active = True then DataModule1.ADOQuery2.Close;
DataModule1.ADOQuery2.SQL.Text:= 'SELECT * FROM Работники WHERE Подразделение = "' + TreeView1.Items[TreeView1.Selected.Index].Text + '"';
DataModule1.ADOQuery2.ExecSQL;
DataModule1.ADOQuery2.Open;
end;

Дерево выглядит так:
Спецбюро
МОП
АУП
Специалисты

При выборе "МОП" в Grid остаются записи у которых столбец "подразделение" имеет текст "МОП". Но при выборе "АУП" или "Специалисты" Grid остаётся пустым. В чём может быть проблема?
Ответить с цитированием
  #2  
Старый 23.10.2011, 03:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Используй OnChange event.
2. ... + TreeView1.Selected.Text + ...
3. Ну и TreeView1.Selected не плохо бы проверять на Nil.
Ответить с цитированием
  #3  
Старый 23.10.2011, 19:43
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
1. Используй OnChange event.
2. ... + TreeView1.Selected.Text + ...
3. Ну и TreeView1.Selected не плохо бы проверять на Nil.

Сделал но всё ровно осталось также как было =\
Ответить с цитированием
  #4  
Старый 23.10.2011, 20:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Amilman
Сделал но всё ровно осталось также как было =\

Значит что-то не то со значениями. Чудес-то не бывает.
Проверь получающиеся запросы "руками".
Может у тебя в БД значения написаны не так, как в TreeView. Например, в БД где-то большая буква, а в TreeView маленькая. Или где-то пробел в хвосте торчит.

можно для чистоты эксперимента запрос переписать хотя бы вот так (зависит от БД - должна поддерживать соотв. функции):
Код:
DataModule1.ADOQuery2.SQL.Text:= 'SELECT * FROM Работники WHERE UPPER(TRIM(Подразделение)) = UPPER(TRIM("' + TreeView1.Selected.Text + '"))';
Ответить с цитированием
  #5  
Старый 23.10.2011, 22:33
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Значит что-то не то со значениями. Чудес-то не бывает.
Проверь получающиеся запросы "руками".

Нашёл мой косяк =\ Почему то при добавлении "подразделения" через combobox ставит лишний пробел у всех записей кроме "МОП" =\
Ответить с цитированием
  #6  
Старый 23.10.2011, 22:57
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

И ещё вопросик будет.
Как эту ужасную кучу привести в нормальный вид и чтобы это всё добавлялось в таблицу, а то строка с перечислением столбцов выходит за рамки допустимого и программа не хочет компилироваться.


Код:
  if DataModule1.ADOQuery2.Active = True then
    DataModule1.ADOQuery2.Close;
    DataModule1.ADOQuery2.SQL.Text := 'SELECT * FROM Работники';
  DataModule1.ADOQuery2.sql.Add
    ('insert into Работники (Фамилия,Имя,Отчество,Подразделение,Статус_работника,Пол,id_info,Должность,Дата_приёма_на_работу,ИНН,Табельный№,РегПФР,Домашний,Сотовый1,Сотовый2,Д_р_п_ж' +#13+
    'Серия,Номер,дата_рождения,Место_рождения,Тип_документа,Дата_выдачи,Кем_выдан,Индекс_1,Населённый_пункт_1,Улица_1, Дом_1,Корпус_1,Квартира_1,Индекс_2,Населённый_пункт_2,Улица_2,Дом_2,Корпус_2,Квартира_2) values ("'
    + Edit_fio.Text + '", "' + Edit_name.Text + '", "' + Edit_otch.Text + '", "'
    + ComboBox1.Text + '", "' + DBLookUpCombobox.Text + '", "' + ComboBox2.Text
    + '", "' + Inttostr(seInfo.Value) + '", "' + DBLookupComboBox1.Text + '", "'
    + String(MaskEdit4.Text) + '", "' + Edit7.Text + '", "' + Edit1.Text +
    '", "' + Edit6.Text + '", "' + String(MaskEdit8.Text) + '", "' +
    String(MaskEdit5.Text) + '", "' + String(MaskEdit6.Text) + '", "' +
    String(MaskEdit3.Text) + '", "' + Edit8.Text + '", "' + Edit9.Text + '", "'
    + String(MaskEdit1.Text) + '", "' + Edit10.Text + '", "' + Edit11.Text +
    '", "' + String(MaskEdit2.Text) + '", "' + Edit12.Text + '", "' +
    Edit13.Text + '", "' + Edit14.Text + '", "' + Edit15.Text + '", "' +
    Edit16.Text + '", "' + Edit17.Text + '", "' + Edit18.Text + '", "' +
    Edit19.Text + '", "' + Edit20.Text + '", "' + Edit21.Text + '", "' +
    Edit22.Text + '", "' + Edit23.Text + '", "' + Edit24.Text + '"');
    DataModule1.ADOQuery2.ExecSQL;
    DataModule1.ADOQuery2.sql.Text :=
    'insert into Работники (Серия, Номер, дата_рождения, Место_рождения, Тип_документа, Дата_выдачи,Кем_выдан,Индекс_1,Населённый_пункт_1,Улица_1, Дом_1,Корпус_1,Квартира_1, Индекс_2,Населённый_пункт_2, Улица_2, Дом_2, Корпус_2, Квартира_2) values ("'
    + Edit8.Text + '", "' + Edit9.Text + '", "' + String(MaskEdit1.Text) +
    '", "' + Edit10.Text + '", "' + Edit11.Text + '", "' +
    String(MaskEdit2.Text) + '", "' + Edit12.Text + '", "' + Edit13.Text +
    '", "' + Edit14.Text + '", "' + Edit15.Text + '", "' + Edit16.Text + '", "'
    + Edit17.Text + '", "' + Edit18.Text + '", "' + Edit19.Text + '", "' +
    Edit20.Text + '", "' + Edit21.Text + '", "' + Edit22.Text + '", "' +
    Edit23.Text + '", "' + Edit24.Text + '")';
    DataModule1.ADOQuery2.ExecSQL;
Ответить с цитированием
  #7  
Старый 23.10.2011, 23:05
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Amilman
И ещё вопросик будет.
Как эту ужасную кучу привести в нормальный вид и чтобы это всё добавлялось в таблицу, а то строка с перечислением столбцов выходит за рамки допустимого и программа не хочет компилироваться.


Код:
много много букаф
Нажми Ctrl + D;
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 24.10.2011, 01:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Пиши запросы с импользованием параметров.
Ответить с цитированием
  #9  
Старый 24.10.2011, 14:55
Аватар для Amilman
Amilman Amilman вне форума
Новичок
 
Регистрация: 27.03.2011
Адрес: г.Кемерово
Сообщения: 98
Версия Delphi: XE
Репутация: 10
По умолчанию

А можете подсказать как перенести часть этой строки на нижнею:
Код:
'insert into Работники (Фамилия,Имя,Отчество,Подразделение,Статус_работника,Пол,id_info,Должность,Дата_приёма_на_работу,ИНН,Табельный№,РегПФР,Домашний,Сотовый1,Сотовый2,Д_р_п_ж', 'Серия,Номер,дата_рождения,Место_рождения,Тип_документа,Дата_выдачи,Кем_выдан,Индекс_1,Населённый_пункт_1,Улица_1, Дом_1,Корпус_1,Квартира_1,Индекс_2,Населённый_пункт_2,Улица_2,Дом_2,Корпус_2,Квартира_2) values ("'
Просто если всё это написать в одну строку программа не компилируется (
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:54.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025