Здравствуйте, Pois, Вы писали:
P>есть 2 таблицы: клиенты и объекты. Задается имя клиента, нужно выбрать только те объекты которые принадлежат ему. Связь 2 табл через Id_klient.
P>Что я не так делаю?
P> ...big skipped...
А что получается то, что не так?
Вообще запросы, в которые что-то вставляется извне, лучше делать с параметрами, так, для чистоты кода.
P>i:=1;
P>sd:=dbgrid2.DataSource.DataSet.RecordCount;
P>while i<=sd do
P>begin s2:=dbgrid2.DataSource.DataSet.Fields[i-1].AsString;
P>inc(i);
Здесь ты пробегаешься не по записям таблицы, содержащей id клиента с фамилиями, а последовательно по полям одной записи.
В цикле в DBGrid1 в конце концов останется только записи, соотв. последнему id клиента. Других там попросту не будет, поскольку следующий запрос у тебя затирает данные предыдущего.
Вообще это можно сделать одним запросом.
И еще технический вопрос. А как ты доступаешься к данным, у которых нет визуальных контролов, гридов и пр.?
Не проше (и правильнее) написать
Table1.Fields[1].AsString
вместо
dbgrid2.DataSource.DataSet.Fields[1].AsString
В гриде ты видешь только визуальное представление данных, а не сами данные, и доступаться к ним через грид — неправильно.