Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

TreeView и данные из таблицы   Найти похожие ветки 

 
Xmen   (2007-06-21 09:16) [0]

У меня такой вопрос я в своей проге исползую TreeView и даю значения ему так:
procedure TFUserView.RefreshTree;
var Nodes : TTreeNode;
   i : Integer;
   abc:string;
   PK :^Integer;
begin
 abc:="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЧШЭЮЯ";
 with TreeView1.Items do
    begin
     BeginUpdate;
     Clear;
      for i := 1 to 28 do
        begin
         Nodes := Add(TreeView1.Selected,copy(abc,i,1));
         with DMLibrary.dstUser do
           begin
              DisableControls;
              if Active then Close;
              Screen.Cursor := crHourGlass;
              SelectSQL.Clear;
              SelectSQL.Add(" SELECT * FROM user_lib");
              SelectSQL.Add(" WHERE familiya like """+copy(abc,i,1)+"%"+"""");
              SelectSQL.Add(" order by familiya");
              try
                Open;
              except
                ShowMessage("Ошибка выполнения запроса");
                Screen.Cursor := crDefault;
                exit;
              end;
              EnableControls;
              Screen.Cursor := crDefault;
           end;
         DMLibrary.dstUser.Open;
         DMLibrary.dstUser.First;

         while not DMLibrary.dstUser.EOF do
          begin
           new(PK);
           PK^ := DMLibrary.dstUser.fieldbyname("ID").AsInteger;
           AddChildObject( Nodes,DMLibrary.dstUser.fieldbyname("fio").AsString,PK);
           
           DMLibrary.dstUser.Next;
          end;
        end;
     EndUpdate;
    end;
end;
И так у меня получается дерево фамилей по алфавиту.
И когда выбераю фамилию из списка то в форме есть таблица и там должен появится данные из базы соответствуюшие этой фамилии. Уменя это получается но с одной загвоздкой если однофамилци есть то после запроса показывается для первого чела по этой фамили. А запрос такой:
procedure TFUserView.TreeView1Click(Sender: TObject);
var
s,i,v:string;
begin
s:=copy(TreeView1.Selected.Text,1,pos(" ",TreeView1.Selected.Text));
if s = "" then
 begin
  DMLibrary.dstUser.Close;
  DMLibrary.dstKartochka.Close;
 end;

with TreeView1 do
 if Selected.Level = 1 then
   begin
    with DMLibrary.dstUser do
     begin
      DisableControls;
      if Active then Close;
      Screen.Cursor := crHourGlass;
      SelectSQL.Clear;
      SelectSQL.Add(" SELECT * FROM user_lib");
      SelectSQL.Add(" WHERE familiya = """+s+"""");
      try
        Open;
      except
        ShowMessage("Ошибка выполнения запроса");
        Screen.Cursor := crDefault;
        exit;
      end;
      EnableControls;
      Screen.Cursor := crDefault;
     end;
    DMLibrary.dstUser.Open;
    DMLibrary.dstKartochka.Close;
    DMLibrary.dstKartochka.ParamByName("UserId").Value:= DMLibrary.dstUser.fieldbyname("ID").AsVariant;
    DMLibrary.dstKartochka.Open;
    exit;
   end;
end;
Знаю что мои коды неидиалные, могут быт гдето ошибки. Если я чтото пропустил при написания вопроса то можете спросить могу дать уточнения.


 
ЮЮ ©   (2007-06-21 09:43) [1]

>      SelectSQL.Add(" SELECT * FROM user_lib");
>      SelectSQL.Add(" WHERE familiya = """+s+"""");

Это лищнее. Ты же его сохранил значение ключевого поля при построении дерева. Вот его и поставляй в
   DMLibrary.dstKartochka.ParamByName("UserId").Value:= ...


 
Johnmen ©   (2007-06-21 10:05) [2]

Ищу ошибки в логике программы на Delphi. Качественно. Недорого.
тел. 123-45-67 спросить СуперДельфина


 
ЮЮ ©   (2007-06-21 10:12) [3]

> Ищу ошибки в логике программы

Найдещь, звони 234-56-78. Или сообщи в данной ветке.


 
Xmen   (2007-06-21 10:23) [4]

:) А я прывик таким насмешкам, потомущто я признаю свою неопытность.
А тепер по вопросу Если увас пример по ТриВю в котором исползуются данные из базы и получения значений из ТриВю или др. Если есть то сбрости на rustam@netman.ru. Спасибо за помощ.


 
Jeer ©   (2007-06-21 10:33) [5]


>Если есть то сбрости на rustam@netman.ru Спасибо за помощ.


Спасибо за предложение - стоить это тебе будет всего 3 тыс руб.


 
ЮЮ ©   (2007-06-21 10:38) [6]

> :) А я прывик таким насмешкам, потомущто я признаю свою
> неопытность.

поэтому читаешь исключительно [2], игнорируя [1]?

new(PK);
PK^ := DMLibrary.dstUser.fieldbyname("ID").AsInteger;
AddChildObject( Nodes,DMLibrary.dstUser.fieldbyname("fio").AsString,PK);


Лишние манипуляции. Для хранений целого хватит и Data:

AddChildObject( Nodes,DMLibrary.dstUser.fieldbyname("fio").AsString, TObject(DMLibrary.dstUser.fieldbyname("ID").AsInteger));

Используем:

DMLibrary.dstKartochka.Close;
DMLibrary.dstKartochka.ParamByName("UserId").Value:= Integer(Selected.Data);
DMLibrary.dstKartochka.Open;


 
Xmen   (2007-06-21 11:35) [7]

Спасибо за совет ЮЮ.
А как можна чтобы хранит там 2 значения 1 как видити Фамилия а второй должен быт невидыми и должен хранит в себя ID поля в котором расположена эта  фамилия. Например
ID    Familiya
1     Иванов
2     Николаев
3     Чумаков
и в дереве отображался бы толь фамилия а когда сделан двойной клик по ТриВю чтобы на таблице вводился записи из базы по зопросу по ID. А то у меня получается запрос по фамилию а там уменя однофамилсев много.


 
ЮЮ ©   (2007-06-21 11:52) [8]

[7] Xmen   (21.06.07 11:35)

Ты издеваещься или код не твой?

AddChildObject(
 Nodes,
 DMLibrary.dstUser.fieldbyname("fio").AsString,
 // разве это не фамилия, отображаемая визуально компонентом
 TObject(DMLibrary.dstUser.fieldbyname("ID").AsInteger)
 // разве это не Id, используемый в дальнейшем для точной, а не по фамилии, идентификации??
);


> А то у меня получается запрос по фамилию а там уменя однофамилсев
> много.

DMLibrary.dstKartochka.ParamByName("UserId").Value:= Integer(Selected.Data);

И где здесь фамилия?


 
Xmen   (2007-06-21 14:31) [9]

не в моём запросе есть это.
Не издеваюсь просто я неразбираюсь в ТриВю код составил сам но из др примера но полностю не понял пример.


 
Xmen   (2007-06-21 14:33) [10]

>>TObject(DMLibrary.dstUser.fieldbyname("ID").AsInteger)
а как его использовать? в далнейшем


 
zz 5 ©   (2007-06-21 20:41) [11]


> >>TObject(DMLibrary.dstUser.fieldbyname("ID").AsInteger)а
> как его использовать? в далнейшем


Например, так для выделенной ветки можно получить значение первичного ключа Integer(Tree.Selected.Data)


 
ЮЮ ©   (2007-06-22 02:47) [12]

> Не издеваюсь
> а как его использовать? в далнейшем


Уверен, что не издеваешься? В [6] даже слово написано "Используем:"! Или, чукча - не читатель, чукча - писатель?


> но полностю не понял пример.

Зачем тогда "Если увас пример по ТриВю в котором исползуются данные из базы и получения значений из ТриВю или др. Если есть то сбрости на rustam@netman.ru."? У всех код написан теми же непонятными буквами :)


 
Xmen   (2007-06-22 08:15) [13]


> Зачем тогда "Если увас пример по ТриВю в котором исползуются
> данные из базы и получения значений из ТриВю или др. Если
> есть то сбрости на rustam@netman.ru."? У всех код написан
> теми же непонятными буквами :)

Думаю у вас будет другой код :) непохоже на этот пример, вед программисты все пишут по разному у всех есть свой стиль.

> Уверен, что не издеваешься? В [6] даже слово написано "Используем:
> "! Или, чукча - не читатель, чукча - писатель?

Этого я не понял, если имеете введу что я пишу с ошибками то это ктому что русскому языку нас неоченто учили, по этому я много допускаю ошибок сорри


 
Xmen   (2007-06-22 08:18) [14]


> Уверен, что не издеваешься? В [6] даже слово написано "Используем:
> "! Или, чукча - не читатель, чукча - писатель?

А понял на что намикаеш :) я этого пропустил



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.037 c
6-1172476821
Empleado
2007-02-26 11:00
2007.10.28
Общий вопрос по структуре программы


3-1182325808
msc32
2007-06-20 11:50
2007.10.28
IN (....)


6-1172317424
Darth Avenger
2007-02-24 14:43
2007.10.28
Количество принятых байт


1-1186743437
Dash Rendar
2007-08-10 14:57
2007.10.28
Можно ли добавить контекстное меню в ShellListView?


2-1191755357
Антон Шестаков
2007-10-07 15:09
2007.10.28
Занята строка в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский