Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2015, 19:24   #1
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
Вопрос Проверка наличия значений в DBEdit

Всем привет.
Как можно проверить наличие внесённых пользователем данных в DBEdit в процессе выполнения приложения? Если какой-либо DBEdit пустой (пользователь просто пропустил его, ничего туда не записал), то выскакивает формочка с предупреждением. Пробовал различные варианты, и ошибки также различные выскакивают. От "несовместимости типов String и DBEdit" до "ожидается инструкция, а вместо неё End". Почему так, не пойму. Вот код один из последних:
Код:
procedure TFormZaprosTchm.YesTchmClick(Sender: TObject);
begin
     if
       DM1.ADOQueryTchm.FieldByName('TN').AsInteger = null or if
       DM1.ADOQueryTchm.FieldByName('Name1').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('Name2').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('Name3').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('KolN').AsInteger = null or if
       DM1.ADOQueryTchm.FieldByName('StazS').AsDateTime = null or if
       DM1.ADOQueryTchm.FieldByName('Klass').AsInteger = null or if
       DM1.ADOQueryTchm.FieldByName('Uchastok').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('Talon').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('Phone').AsString = '' or if
       DM1.ADOQueryTchm.FieldByName('Address').AsString = ''
       then  begin
       FormNotice.ShowModal;  //предупреждение заполнить поля
             end
       else
     try  begin
 DM1.ADOQueryTchm.Edit;
 DM1.ADOQueryTchm.Insert;
 DM1.ADOQueryTchm.FieldByName('TN').AsInteger:=DM1.ADOQueryTchmp.FieldValues['TN'];
 DM1.ADOQueryTchm.FieldByName('Name1').AsString:=DM1.ADOQueryTchmp.FieldValues['Name1'];
 DM1.ADOQueryTchm.FieldByName('Name2').AsString:=DM1.ADOQueryTchmp.FieldValues['Name2'];
 DM1.ADOQueryTchm.FieldByName('Name3').AsString:=DM1.ADOQueryTchmp.FieldValues['Name3'];
 DM1.ADOQueryTchm.FieldByName('KolN').AsInteger:=DM1.ADOQueryTchmp.FieldValues['KolN'];
 DM1.ADOQueryTchm.FieldByName('StazS').AsDateTime:=DM1.ADOQueryTchmp.FieldValues['StazS'];
 DM1.ADOQueryTchm.FieldByName('Klass').AsInteger:=DM1.ADOQueryTchmp.FieldValues['Klass'];
 DM1.ADOQueryTchm.FieldByName('Uchastok').AsString:=DM1.ADOQueryTchmp.FieldValues['Uchastok'];
 DM1.ADOQueryTchm.FieldByName('Talon').AsString:=DM1.ADOQueryTchmp.FieldValues['Talon'];
 DM1.ADOQueryTchm.FieldByName('Phone').AsString:=DM1.ADOQueryTchmp.FieldValues['Phone'];
 DM1.ADOQueryTchm.FieldByName('Address').AsString:=DM1.ADOQueryTchmp.FieldValues['Address'];
 DM1.ADOQueryTchm.Post;
 DM1.ADOQueryTchmp.Delete;
 DM1.ADOQueryTchm.Refresh;
          end;
     except on e:Exception do
     ShowMessage('Ошибка');
   end; //-в данном варианте здесь останавливается курсор с
        // ошибкой "Incompatible types: 'String' and 'procedure
        // untyped pointer or untyped parameter'"
Close;
end;
Также ошибка выявляется далее, и что самое интересное, выскакивает ошибка в строке 85, хотя у меня всего в модуле 83.
Может чего посоветуете, а то ничего не нашёл
Vongud вне форума Ответить с цитированием
Старый 18.04.2015, 19:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Не работаю с этим компонентом давно, так что могу предложить только проверять в его свойстве Text.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 19:34   #3
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не работаю с этим компонентом давно, так что могу предложить только проверять в его свойстве Text.
Через Text тоже не работает. Не помню, что там за ошибка рисуется, но не работает.

Пробовал и так (первая часть):
Код:
FEditTchmi.TN.Text = '' or if // ну и т.д. по строкам

Последний раз редактировалось Stilet; 18.04.2015 в 19:59.
Vongud вне форума Ответить с цитированием
Старый 18.04.2015, 20:00   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Приложи лучше проект в архиве. Можно без БД, и экзешника, чтоб размер не поднимался. Иначе я не пойму как ты действуешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 23:08   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Если какой-либо DBEdit пустой (пользователь просто пропустил его, ничего туда не записал)
Код:
procedure TfrmGroup.GroupInsetED;
begin
    if frmGroupAddEdit.cbbNazvanSpecialist.Text = '' then
    begin
      Beep();
      MessageDlg('"Название специальности"  не должен пустой', mtError,[mbOK],0);
      if frmGroupAddEdit.cbbNazvanSpecialist.CanFocus then
      frmGroupAddEdit.cbbNazvanSpecialist.SetFocus;
      Abort;
    end
    else
    if frmGroupAddEdit.edtg_Shifr_spec.Text = '' then
    begin
      Beep();
      MessageDlg('"Шифр специальности" не должен пустой', mtError,[mbOK],0);
      if frmGroupAddEdit.edtg_Shifr_spec.CanFocus then
      frmGroupAddEdit.edtg_Shifr_spec.SetFocus;
      Abort;
    end
    else
    if frmGroupAddEdit.edtg_nazvan_grup.Text = '' then
    begin
      Beep();
      MessageDlg('"Название группы" не должен пустой', mtError,[mbOK],0);
      if frmGroupAddEdit.edtg_nazvan_grup.CanFocus then
      frmGroupAddEdit.edtg_nazvan_grup.SetFocus;
      Abort;
    end
    else
     with qryGroup do
     begin
       Insert;
          FieldByName('g_Shifr_spec').AsString := Trim(frmGroupAddEdit.edtg_Shifr_spec.Text);
          FieldByName('g_nazvan_grup').AsString := Trim(frmGroupAddEdit.edtg_nazvan_grup.Text);
          FieldByName('g_specialisID').AsInteger := frmSpecialnosti.qrySpecialnosti.FieldByName('s_id').AsInteger;
       Post;
     end;
end;
Чуда

Последний раз редактировалось xxbesoxx; 18.04.2015 в 23:28.
xxbesoxx вне форума Ответить с цитированием
Старый 22.04.2015, 16:53   #6
Vongud
Пользователь
 
Аватар для Vongud
 
Регистрация: 26.08.2014
Сообщений: 24
По умолчанию

В общем, кому интересно, так замудрил. Может и есть возможность попроще как-нить, но мне и так потянет Всем спасибо
Код:
procedure TFormZaprosTchm.YesTchmClick(Sender: TObject); //запрос в тчм
begin
     if
     FEditTchmi.TN.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Name1.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Name2.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Name3.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.KolN.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.StazS.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Klass.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Talon.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Phone.Text = '' then  begin FormNotice.ShowModal;
     end else if
     FEditTchmi.Address.Text = '' then  begin
       FormNotice.ShowModal;  //предупреждение заполнить поля
       end
       else
     try  begin
 DM1.ADOQueryTchm.Edit;
 DM1.ADOQueryTchm.Insert;
 DM1.ADOQueryTchm.FieldByName('TN').AsInteger:=DM1.ADOQueryTchmp.FieldValues['TN'];
 DM1.ADOQueryTchm.FieldByName('Name1').AsString:=DM1.ADOQueryTchmp.FieldValues['Name1'];
 DM1.ADOQueryTchm.FieldByName('Name2').AsString:=DM1.ADOQueryTchmp.FieldValues['Name2'];
 DM1.ADOQueryTchm.FieldByName('Name3').AsString:=DM1.ADOQueryTchmp.FieldValues['Name3'];
 DM1.ADOQueryTchm.FieldByName('KolN').AsInteger:=DM1.ADOQueryTchmp.FieldValues['KolN'];
 DM1.ADOQueryTchm.FieldByName('StazS').AsDateTime:=DM1.ADOQueryTchmp.FieldValues['StazS'];
 DM1.ADOQueryTchm.FieldByName('Klass').AsInteger:=DM1.ADOQueryTchmp.FieldValues['Klass'];
 DM1.ADOQueryTchm.FieldByName('Uchastok').AsString:=DM1.ADOQueryTchmp.FieldValues['Uchastok'];
 DM1.ADOQueryTchm.FieldByName('Talon').AsString:=DM1.ADOQueryTchmp.FieldValues['Talon'];
 DM1.ADOQueryTchm.FieldByName('Phone').AsString:=DM1.ADOQueryTchmp.FieldValues['Phone'];
 DM1.ADOQueryTchm.FieldByName('Address').AsString:=DM1.ADOQueryTchmp.FieldValues['Address'];
 DM1.ADOQueryTchm.Post;
 DM1.ADOQueryTchmp.Delete;
 DM1.ADOQueryTchm.Refresh;
          end;
     except on e:Exception do
     ShowMessage('Ошибка');
   end;
Close;
end;
Vongud вне форума Ответить с цитированием
Старый 22.04.2015, 19:22   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
В общем, кому интересно, так замудрил.
Да я вижу
Код:
 DM1.ADOQueryTchm.Edit; // переходить режим редактирование
 DM1.ADOQueryTchm.Insert; // Режим добавление
{
  ////////////////////////////
}
 DM1.ADOQueryTchm.Post; // Фиксируем изменения 
 DM1.ADOQueryTchmp.Delete; // Удаляем 
 DM1.ADOQueryTchm.Refresh; // Обновляем
Код очень интересни да оформления вообще красота
xxbesoxx вне форума Ответить с цитированием
Старый 24.04.2015, 11:01   #8
IcantStop
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 1
По умолчанию

Зачем вообще исполбзуете ДБедит?
IcantStop вне форума Ответить с цитированием
Старый 24.04.2015, 15:53   #9
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Код:
if FEditTchmi.TN.Text = '' then  
  begin 
   FormNotice.ShowModal;
   FEditTchmi.TN.SetFocus; // сразу ставим курсор в нужный DBEdit
  end else 
if ... // далее аналогично
kropotkina-alice вне форума Ответить с цитированием
Старый 25.04.2015, 13:08   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Код:
procedure TFormZaprosTchm.YesTchmClick(Sender: TObject); //запрос в тчм
begin
    if (FEditTchmi.TN.Text = '') or (FEditTchmi.Name1.Text = '')
        or (FEditTchmi.Name2.Text = '') or (FEditTchmi.Name3.Text = '')                                       
        or (FEditTchmi.KolN.Text = '' ) or (FEditTchmi.StazS.Text = '')
        or (FEditTchmi.Klass.Text = '' ) or (FEditTchmi.Talon.Text = '' )
        or (FEditTchmi.Phone.Text = '') or (FEditTchmi.Address.Text = '') then
        FormNotice.ShowModal
       else
    begin
       //  Ваши группа деиствия
     end;
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка наличия соединения tocsik C/C++ Сетевое программирование 2 02.07.2014 10:43
проверка наличия флешки 1@q Общие вопросы Delphi 4 29.06.2013 18:22
Проверка наличия файла kain151 Microsoft Office Word 3 10.03.2010 14:50
проверка наличия файла Juffin Общие вопросы Delphi 2 18.04.2009 14:17
Проверка наличия файла russian-stalker Общие вопросы Delphi 4 31.08.2008 19:27