Здравствуйте, Кохан Владимир Иванович. Для примера взял базу DBDemos.Порядок работы.
1. Ввод числа записей
2. Открываем запрос q1 по таблице Countries и формируем текст запроса q2, содержащего не более введенного числа записей
3. Закрываем q1 и открываем q2
4. Обработчик нажатия кнопки в приложении
Ссылка на проект.
176080.ZIP (716.5 кб)Задавайте вопросы. С уважением.
Приложение:
void __fastcall TForm1::btStartClick(TObject *Sender)
{
int i;
int records; // количество записей для показа
AnsiString ans=""; // просто строка для показа чего-то из первых записей
AnsiString s="";
records = StrToInt(txtRecords->Text); // берем из Edit
if (q1->Active) q1->Close(); // если запрос открыт - закроем
if (q2->Active) q2->Close(); // то же
q2->SQL->Clear(); // очистим текст запроса
// наращиваем строку s
// например, SELECT Name, Capital FROM country.db Country WHERE Name IN
// ("Argentina", "Brazil")
//
s="SELECT Name, Capital FROM country.db Country WHERE Name IN (";
q1->Open(); // Откроем первый запрос
if (q1->RecordCount<records)
records = q1->RecordCount;
for (i=0; i<records; i++)
// Сформировали строку для показа
// и строку для создания текста второго запроса
{
ans+=q1->FieldByName("Name")->AsString+'\n';
if (i>0)
s=s+',';
s=s+'"'+q1->FieldByName("Name")->AsString+'"'+' ';
q1->Next();
}
s=s+")";
q2->SQL->Add(s);
q1->Close(); // первый запрос уже не нужен
ShowMessage(ans); // показали строку
if (records>0) q2->Open(); // открыли запрос
}