Года 2 назад делал курсач по программированию с базами данных.. Сейчас понял, что все совершенно забыл!.. Так тчо не бейте сильно...
Так вот! У меня следующая проблема.
Имеется база данных клиентов, в которой ведется поиск по введенным значениям. По каким именно полям - узнается после проверки, какие Edit'ы заполнены. Про кривость кода: пока сделал, чтобы хоть работало. Потом буду "шлефовать". Критику (с конкретными предложениями) принимаю!
Потом делается запрос в этой же процедуре (сама эта процедура вызывается при нажатии кнопочки..):
Так вот.. не работает это ( Вылетают сообщения, что поля с такими именами не существуют.. как быть?..
Так вот! У меня следующая проблема.
Имеется база данных клиентов, в которой ведется поиск по введенным значениям. По каким именно полям - узнается после проверки, какие Edit'ы заполнены. Про кривость кода: пока сделал, чтобы хоть работало. Потом буду "шлефовать". Критику (с конкретными предложениями) принимаю!
Код:
procedure client_from_db(var cldb: clientzap);
BEGIN
With Form1 do
begin
cl_srch_qry:='';
if Edit12.Text<>'' then
begin
cl_srch_qry:=cl_srch_qry+'name="'+Edit12.Text+'" AND ';
end;
if Edit13.Text<>'' then
begin
cl_srch_qry:=cl_srch_qry+'lname="'+Edit13.Text+'" AND ';
end;
if MaskEdit5.Text<>'( ) - ' then
begin
cl_srch_qry:=cl_srch_qry+'hphone="'+MaskEdit5.Text+'" AND ';
end;
if MaskEdit6.Text<>'( ) - ' then
begin
cl_srch_qry:=cl_srch_qry+'ophone="'+MaskEdit6.Text+'" AND ';
end;
if MaskEdit7.Text<>'( ) - ' then
begin
cl_srch_qry:=cl_srch_qry+'cphone="'+MaskEdit7.Text+'" AND ';
end;
if Edit14.Text<>'' then
begin
cl_srch_qry:=cl_srch_qry+'email="'+Edit14.Text+'" AND ';
end;
//udalyaem nenujnii ' AND '
if length(cl_srch_qry)<>0 then
begin
cl_srch_qry:='('+cl_srch_qry;
delete(cl_srch_qry,length(cl_srch_qry)-4,5);
cl_srch_qry:=cl_srch_qry+')';
end;
end;
Код:
With Form1.Query3 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM client.db WHERE '+cl_srch_qry); //search in DB
ExecSQL;
cldb.idn:=FieldByName('CLid').AsInteger;
cldb.name:=FieldByName('Name').AsString;
cldb.lname:=FieldByName('Lname').AsString;
cldb.hphone:=FieldByName('hphone').AsString;
cldb.ophone:=FieldByName('ophone').AsString;
cldb.cphone:=FieldByName('cphone').AsString;
cldb.email:=FieldByName('email').AsString;
...
cldb.sendemail:=FieldByName('sendemail').AsBoolean;
cldb.deleted:=FieldByName('deleted').AsBoolean;
end;