B.Boy
Member
Года 2 назад делал курсач по программированию с базами данных.. Сейчас понял, что все совершенно забыл!.. Так тчо не бейте сильно...
Так вот! У меня следующая проблема.
Имеется база данных клиентов, в которой ведется поиск по введенным значениям. По каким именно полям - узнается после проверки, какие Edit'ы заполнены. Про кривость кода: пока сделал, чтобы хоть работало. Потом буду "шлефовать". Критику (с конкретными предложениями) принимаю!
	
	
	
		
Потом делается запрос в этой же процедуре (сама эта процедура вызывается при нажатии кнопочки..):
	
	
	
		
Так вот.. не работает это  ( Вылетают сообщения, что поля с такими именами не существуют.. как быть?..
( Вылетают сообщения, что поля с такими именами не существуют.. как быть?..
			
			Так вот! У меня следующая проблема.
Имеется база данных клиентов, в которой ведется поиск по введенным значениям. По каким именно полям - узнается после проверки, какие Edit'ы заполнены. Про кривость кода: пока сделал, чтобы хоть работало. Потом буду "шлефовать". Критику (с конкретными предложениями) принимаю!
		Code:
	
	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;
		Code:
	
	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;