![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
Спасибо, все заработало, очень помогло, спасибо!)
![]() |