![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Всем доброе время суток, нужно было сделать кнопку, которая по зарегистрированному номеру из базы данных MySQL(через денвер) доставала его айди и писала в лейбл, но я выполняя запрос SQL на выборку Id по номеру телефона столкнулся с тем, что вылетает ошибка если поле пустое или номера нету в бд, а хотелось бы сделать проверку, что бы если номер не тот или пустой, выдавало сообщение Что мол такого пользователя с таким номером нету. 
		
	
		
		
		
		
		
	
		
		
	
	
	Я так понимаю что SQL запрос не может принять 0 или не подходящий номер, т.к. Select тогда ничего не сможет взять из за того что по данным параметрам найдено 0 ID. Пробовал мудрить с переносом Код: 
	DataModule1.ADOQuery1.ExecSQL; DataModule1.ADOQuery1.Active:=true; IdCode:=DataModule1.ADOQuery1.FieldValues['Id']; Код: 
	procedure TForm2.Button1Click(Sender: TObject);
begin
TelNom:=Edit1.Text;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add ('SELECT Id FROM uchastniki  WHERE uchastniki.NomTel = '+ TelNom);
DataModule1.ADOQuery1.ExecSQL;
DataModule1.ADOQuery1.Active:=true;
IdCode:=DataModule1.ADOQuery1.FieldValues['Id'];
  if IdCode=True then
  begin
  Label1.Visible:=True;
  Label3.Caption:=IntToStr(DataModule1.ADOQuery1.FieldValues['Id']);
  end
 else
 begin
   ShowMessage('Пользователя с таким Номером телефона не зарегестрированно в нашем гольф клубе');
 end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
Form1.Show;
end;
end.![]()  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код: 
	Try ... except showmessage(); end; Код: 
	If not query1.isEmpty then begin .. end else showmessage();  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 неа не то =( 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Не совсем то, мне нужно что бы сначала он брал ID из таблицы UCHASTNIKI по номеру телефона введенному в Edit, при нажатии кнопки что бы в переменную заносился номер телефона в TelNom, и потом если такого телефона не найдено или введена пустота - выдавало SHOWMESSAGE вы ввели не то или не зарегистрирован пользователь с таким номером, а ЕСЛИ есть такой, то только тогда выдавало его ID. Считай нужно тупо сделать что бы не крашилась приложение когда не тот номер ввели или ничего не ввели, а просто показывало шоумесседж мол введите просто правильный номер.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Если по простому, то я бы делал так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	procedure TForm2.Button1Click(Sender: TObject);
begin
TelNom:=Edit1.Text;
Data.Module.ADOQuery.Close;         //  <---
//DataModule1.ADOQuery1.SQL.Clear;  //Это лишнее
if Trim(TelNom)='' then
  begin
    Application.MessageBox('Не указан номер телефона!','Ошибка',MB_ICONERROR);
    Exit;
  end;
DataModule1.ADOQuery1.SQL.Text ('SELECT Id FROM uchastniki  WHERE uchastniki.NomTel = '+ TelNom);  //<-- тут у меня сомнения в правильности запроса, ИМХО номер надо брать в кавычки
// DataModule1.ADOQuery1.ExecSQL;  //Это лишнее
DataModule1.ADOQuery1.Open;  //Active:=true;
//IdCode:=DataModule1.ADOQuery1.FieldValues['Id']; Такой конструкции даже и не знаю
if DataModule1.ADOQuery1.RecordCount>0 then
  begin
    Label1.Visible:=True;
//    Label3.Caption:=IntToStr(DataModule1.ADOQuery1.FieldValues['Id']);  //Такое извращение тоже в первый раз вижу
    Label3.Caption:=DataModule1.ADOQuery1.FieldByName('id').AsString;
  end
else
  begin
   ShowMessage('Пользователя с таким Номером телефона не зарегестрированно в нашем гольф клубе');
  end;
DataModule1.ADOQuery1.Close;
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
Form1.Show;
end;
 
end.А по уму написал бы хранимую процедуру на сервере, и все ошибки обрабатывал бы там.  | 
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
 
suddenley (30.05.2018)
  | ||
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 По идее это подходит вообще отлично, только из за запроса что ли не работает не пойму, уже по всякому составлял, никак не выходит, одно и тоже пишет. 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	DataModule1.ADOQuery1.SQL.Text ('SELECT Id FROM uchastniki  WHERE uchastniki.NomTel = '''+TelNom+'''');![]()  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Компилятор сообщает Вам, что не хватает кавычек. Проще номер телефона передать параметром. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	DataModule1.ADOQuery1.SQL.Text ('SELECT Id FROM uchastniki  WHERE NomTel = :TelNom');
DataModule1.ADOQuery1.Parameters[0] := TelNom; | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
   Код: 
	DataModule1.ADOQuery1.SQL.Text:='SELECT Id FROM uchastniki WHERE uchastniki.NomTel = '+ TelNom;  | 
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
 
suddenley (30.05.2018)
  | ||
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Спасибо, все заработало, очень помогло, спасибо!)  
		
	
		
		
		
		
		
	
		
		
	
	
	  ![]()  |