Здравствуйте, пытаюсь реализовать заполнение Дерева из БД, все данные пока что заполняются из одной таблицы, для простоты заполнения и чтобы разобраться. Среда: Embarcadero RAD Studio 2010.
Таблица состоит из 3 столбцов:
COD_FACULTETA, NAME_FACULTETA, ABBR_FACULTETA
Привожу пример кода:
Код:
procedure TForm1.FormActivate(Sender: TObject);
var
s: string;
begin
if FileExists(ExtractFileDir(ParamStr(0))+'\settings.txt') then
begin
AssignFile(f, ExtractFileDir(ParamStr(0))+'\settings.txt');
Reset(f);
Read(f, s);
CloseFile(f);
end
else
s:= ExtractFileDir(ParamStr(0))+'\bd_d.fdb';
with dm1 do
begin
SQLConnection1.Connected:=false;
SQLConnection1.Params.Clear;
SQLConnection1.Params.Values['DataBase']:=s;
SQLConnection1.Connected:=true;
LoadTreeView1;
end; // тут тупо настройка соединения с бд, если нет файла, то пытаться загрузить бд из папки
end;
procedure TForm1.LoadTreeview1;
var
i,k : integer;
begin
flag:=false;
i:=0;
TreeView1.Items.Clear;
with dm1.q do
begin
Active:=false;
SQL.Clear;
SQL.Add('SELECT * FROM FACULTET ORDER BY COD_FACULTETA');
Active:=true;
First;
while not Eof do
begin
TreeView1.Items.Add(nil, FieldByName('NAME_FACULTETA').AsString);// тут обращение к бд работает
with dm1 do
begin
q2.Active:=false;
q2.SQl.Clear;
q2.SQL.Add('SELECT * FROM FACULTET ORDER BY COD_FACULTETA WHERE NAME_FACULTETA='+ FieldByName(
'NAME_FACULTETA').AsString); // вот с этим запросом беда
q2.Active:=true;
q2.First;
k:=0;
while not dm1.q2.Eof do
begin
TreeView1.Items.AddChildObject(TreeView1.Items.Item[i],
dm1.q2.FieldByName('NAME_FACULTETA').AsString, Pointer(
dm1.q2.FieldByName('COD_FACULTETA').AsInteger)); //(это для примера опять идут факультеты, т.к. ничего в бд не заполнено)
inc(k);
end;
i:=i+k+1;
Next;
end;
// по идеи должно получаться так:
//Факультет Вм
//остальные факультеты
//Факультет Ск
//и т.д.
end;
end;
flag:=true;
end;
Выдает следующую ошибку:

Сильно не пинать, первый раз этим занимаюсь)