|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Запрос SQL и условие
Всем доброе время суток, нужно было сделать кнопку, которая по зарегистрированному номеру из базы данных 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
|
|||
|
|||
Sql запрос
По идее это подходит вообще отлично, только из за запроса что ли не работает не пойму, уже по всякому составлял, никак не выходит, одно и тоже пишет.
Код:
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
|
|||
|
|||
Спасибо! (=
Спасибо, все заработало, очень помогло, спасибо!)
|