Вот у меня такие вопросы. Сразу говорю — я только-только начал осваивать Дельфи, ещё мало что понимаю. Вообщем я сделал базу данных с помощью Database Desktop. Положил её на форму, всё работает. Но...
1) Как сделать ПОИСК по этой вставленной мною таблице?
2) Как можно сделать, чтобы информацию в таблице можно было распечатывать?
Заранее всем огромной спасибо!!!!!!!
Только напишите всё пожалуйста понятным языком.
Здравствуйте, Pilot2008, Вы писали:
P>Вот у меня такие вопросы. Сразу говорю — я только-только начал осваивать Дельфи, ещё мало что понимаю. Вообщем я сделал базу данных с помощью Database Desktop. Положил её на форму, всё работает. Но... P>1) Как сделать ПОИСК по этой вставленной мною таблице? P>2) Как можно сделать, чтобы информацию в таблице можно было распечатывать? P>Заранее всем огромной спасибо!!!!!!! P>Только напишите всё пожалуйста понятным языком.
Понятным языком написано в доке или книге. Ты же, по всей видимости, ничего из этого не прочел, так что каким бы понятным языком тебе здесь не объясняли, ты все равно не поймешь.
... << RSDN@Home 1.1.4 @@subversion >>
Re[2]: ПОМОГИТЕ новичку!!!
От:
Аноним
Дата:
09.09.04 09:16
Оценка:
Здравствуйте, Demiurg, Вы писали:
D>Здравствуйте, Pilot2008, Вы писали:
P>>Вот у меня такие вопросы. Сразу говорю — я только-только начал осваивать Дельфи, ещё мало что понимаю. Вообщем я сделал базу данных с помощью Database Desktop. Положил её на форму, всё работает. Но... P>>1) Как сделать ПОИСК по этой вставленной мною таблице? P>>2) Как можно сделать, чтобы информацию в таблице можно было распечатывать? P>>Заранее всем огромной спасибо!!!!!!! P>>Только напишите всё пожалуйста понятным языком.
D> Понятным языком написано в доке или книге. Ты же, по всей видимости, ничего из этого не прочел, так что каким бы понятным языком тебе здесь не объясняли, ты все равно не поймешь.
Зря вы так...вот читал, но всё равно не нашёл ничего про поиск....
Здравствуйте, <Аноним>, Вы писали:
P>>>Только напишите всё пожалуйста понятным языком.
D>> Понятным языком написано в доке или книге. Ты же, по всей видимости, ничего из этого не прочел, так что каким бы понятным языком тебе здесь не объясняли, ты все равно не поймешь.
А>Зря вы так...вот читал, но всё равно не нашёл ничего про поиск....
А про SQL там что-нить есть? Вот его и юзай для поиска.
Здравствуйте, Pilot2008, Вы писали:
P>1) Как сделать ПОИСК по этой вставленной мною таблице?
Начсет поиска ответы уже были. Может быть Вам подойдет фильтрация по заданному критерию.
Подключите к Database1 запрос Query1 и изменяйте его для фильтрации записей по требуемому критерию. Источник DSource2Query1 передает информацию другим компонентам Вашей формы.
Например:
//*****************************************************************procedure TF_SCSITpractic.FilterResetExecute(Sender: TObject);
// Поиск строк, включающих текст из EditFindText.Text
// в поле TXT Query1
//*****************************************************************begin// Деактивируем запрос
DSource2Query1.Enabled := false;
Query1.Active := false;
Query1.close;
Query1.SQL.Clear; // Стираем любой предыдущий запрос
qas2 := '%'+trim(EditFindText.Text)+'%'// Записываем новый запрос
qas1 := '';
qas1:=qas1+'SELECT ';
qas1:=qas1+'DIR, ID, FOLDER, MARKER, TXT, M1, FILES, ';
qas1:=qas1+'TXTNAME, TXTNAME2, TEL, ADR, DOCTYPE, DOCDATE, ';
qas1:=qas1+'K1FIRMA, K1START, K1STOP, K1RESULT, K2FIRMA, K2START, K2STOP, K2RESULT, ';
qas1:=qas1+'K3FIRMA, K3START, K3STOP, K3RESULT, K4FIRMA, K4START, K4STOP, K4RESULT, ';
qas1:=qas1+'(TXT+'+chr(39)+' '+chr(39)+'+TXTNAME+'+chr(39)+' '+chr(39)+'+TXTNAME2) AS FIO ';
qas1:=qas1+'FROM scsitpract ';
if Length(qas2) > 0
then
begin
qas1:=qas1+'WHERE ';
qas1:=qas1+' upper(TXT+TXTNAME+TXTNAME2) LIKE upper(';
qas1:=qas1+chr(39);
qas1:=qas1+qas2;
qas1:=qas1+chr(39)+') ';
end
else
begin// оператор WHERE не определяетсяend
;
qas1:=qas1+'ORDER by TXT ';
Query1.SQL.Add(qas1); // Записываем новый запрос
// Выполняем запрос и открываем набор данных
Query1.Open;
Query1.Active := true;
DSource2Query1.Enabled := true;
end;
Код выдергнут из реально работающего приложения, так что потребуется коррекция под Вашу задачу. Время реакции на таблице в на 5000 записей — менее 1 секунды, 350000 записей — порядка 10 секунд. Медленно, но для человека приемлемо.
Успехов.
Виктор.
PS Отредактируйте свои личные данные, а то как-то неудобно обращаться к пустоте. И еще — точнее формулируйте тему. На Вашу тему я наткнулся чисто случайно ...
Здравствуйте, Nvisa, Вы писали:
N>Здравствуйте, Pilot2008, Вы писали:
P>>1) Как сделать ПОИСК по этой вставленной мною таблице?
N>Начсет поиска ответы уже были. Может быть Вам подойдет фильтрация по заданному критерию. N>Подключите к Database1 запрос Query1 и изменяйте его для фильтрации записей по требуемому критерию. Источник DSource2Query1 передает информацию другим компонентам Вашей формы.
N>Например:
N>
N>//*****************************************************************
N>procedure TF_SCSITpractic.FilterResetExecute(Sender: TObject);
N>// Поиск строк, включающих текст из EditFindText.Text
N>// в поле TXT Query1
N>//*****************************************************************
N>begin
N>// Деактивируем запрос
N>DSource2Query1.Enabled := false;
N>Query1.Active := false;
N>Query1.close;
N>Query1.SQL.Clear; // Стираем любой предыдущий запрос
N>qas2 := '%'+trim(EditFindText.Text)+'%'
N>// Записываем новый запрос
N>qas1 := '';
N>qas1:=qas1+'SELECT ';
N>qas1:=qas1+'DIR, ID, FOLDER, MARKER, TXT, M1, FILES, ';
N>qas1:=qas1+'TXTNAME, TXTNAME2, TEL, ADR, DOCTYPE, DOCDATE, ';
N>qas1:=qas1+'K1FIRMA, K1START, K1STOP, K1RESULT, K2FIRMA, K2START, K2STOP, K2RESULT, ';
N>qas1:=qas1+'K3FIRMA, K3START, K3STOP, K3RESULT, K4FIRMA, K4START, K4STOP, K4RESULT, ';
N>qas1:=qas1+'(TXT+'+chr(39)+' '+chr(39)+'+TXTNAME+'+chr(39)+' '+chr(39)+'+TXTNAME2) AS FIO ';
N>qas1:=qas1+'FROM scsitpract ';
N>if Length(qas2) > 0
N>then
N>begin
N>qas1:=qas1+'WHERE ';
N>qas1:=qas1+' upper(TXT+TXTNAME+TXTNAME2) LIKE upper(';
N>qas1:=qas1+chr(39);
N>qas1:=qas1+qas2;
N>qas1:=qas1+chr(39)+') ';
N>end
N>else
N>begin
N>// оператор WHERE не определяется
N>end
N>;
N>qas1:=qas1+'ORDER by TXT ';
N>Query1.SQL.Add(qas1); // Записываем новый запрос
N>// Выполняем запрос и открываем набор данных
N>Query1.Open;
N>Query1.Active := true;
N>DSource2Query1.Enabled := true;
N>end;
N>
N>Код выдергнут из реально работающего приложения, так что потребуется коррекция под Вашу задачу. Время реакции на таблице в на 5000 записей — менее 1 секунды, 350000 записей — порядка 10 секунд. Медленно, но для человека приемлемо.
N>Успехов. N>Виктор.
N>PS Отредактируйте свои личные данные, а то как-то неудобно обращаться к пустоте. И еще — точнее формулируйте тему. На Вашу тему я наткнулся чисто случайно ...
www.ehlib.com все что ты хочешь в одном флаконе, но книги все равно придется читать