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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 18:05   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Проверка условия

Ребят, че т я не могу сообразить куда воткнуть условие проверки на существование ранее вводившегося предмета . Вот код:
Код:
begin
//добавление предмета
 Form3.Table_add_predm.Insert;
 if Form3.Table_add_predm.FieldByName('Predmet').AsString <> Form3.Edit1.Text then
    begin
      Form3.Table_add_predm.FieldByName('Predmet').AsString:=Form3.Edit1.Text;
      Form3.Table_add_predm.Post;
      ShowMessage(' Предмет добавлен! ');
      Form3.Table_add_predm.Post;
    end;
//вот здесь нужно правильное условие проверки
  if Form3.Table_add_predm.FieldByName('Predmet').AsString = Form3.Edit1.Text then
    begin
     ShowMessage(' Такой предмет уже есть в базе! ');
     Form3.Edit1.Text:='';
    end;
end;
Где я ступил?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2009, 18:16   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот часть проблемы исправил. Изменил на так:
Код:
begin
 try
 if Form3.Table_add_predm.FindField('Predmet').AsString = Form3.Edit1.Text then
    begin
     ShowMessage(' Такой предмет уже есть в базе! ');
     Form3.Edit1.Text:='';
    end;

 if Form3.Table_add_predm.FieldByName('Predmet').AsString <> Form3.Edit1.Text then
    begin
      Form3.Table_add_predm.Insert;
      Form3.Table_add_predm.FieldByName('Predmet').AsString:=Form3.Edit1.Text;
      Form3.Table_add_predm.Post;
      ShowMessage(' Предмет добавлен! ');
      Form3.Table_add_predm.Post;
    end;
 end;
Теперь, если предмет уже есть, то его название в БД не заносится. Но зато добавляется пустая строка с новым IDишником . В таблице поле ID_Predmet - автоикриментное, а Predmet - A. Что еще подправить надо?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2009, 18:38   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а зачем пост 2 раза?

Код:
      Form3.Table_add_predm.Post;
      ShowMessage(' Предмет добавлен! ');
      Form3.Table_add_predm.Post;
и зачем еще раз делать проверку? можно же просто else
Код:
if Form3.Table_add_predm.FindField('Predmet').AsString = Form3.Edit1.Text then
    begin
     ShowMessage(' Такой предмет уже есть в базе! ');
     Form3.Edit1.Text:='';
    end
 else
    begin
      Form3.Table_add_predm.Insert;
      Form3.Table_add_predm.FieldByName('Predmet').AsString:=Form3.Edit1.Text;
      Form3.Table_add_predm.Post;
      ShowMessage(' Предмет добавлен! ');
    end;

Последний раз редактировалось soleil@mmc; 05.05.2009 в 18:40.
soleil@mmc вне форума Ответить с цитированием
Старый 05.05.2009, 18:47   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
а зачем пост 2 раза?
Посты разные. Внимательно посмотрите
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2009, 18:49   #5
Minotavr_x86
Пользователь
 
Аватар для Minotavr_x86
 
Регистрация: 22.03.2007
Сообщений: 24
По умолчанию

Код:
begin
 if Form3.Table_add_predm.FindField('Predmet').AsString = Form3.Edit1.Text then
    begin
     ShowMessage(' Такой предмет уже есть в базе! ');
     Form3.Edit1.Text:='';
    end
 else
    begin
      Form3.Table_add_predm.Insert;
      Form3.Table_add_predm.FieldByName('Predmet').AsString:=Form3.Edit1.Text;
      Form3.Table_add_predm.Post;
      ShowMessage(' Предмет добавлен! ');
      Form3.Table_add_predm.Post;
    end;
end;
Не всё получается так, как придумал,
Но разве за это должно быть стыдно!?!
Minotavr_x86 вне форума Ответить с цитированием
Старый 05.05.2009, 19:10   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Не стал создавать отдельную тему. Вопрос: Я сделал, чтобы можно было получать ID выбранного в DBComboBox1 предмета. А как сделать, чтобы соответствующее название предмета для этого ID заносилось в другой DBGrid? Вот код получения ID:
Код:
   begin
 Nomer21:=Form1.DBLookupComboBox1.KeyValue;
 Table2.Insert;
 Table2.FieldByName('ID_Predmet').AsString:=IntToStr(Nomer21);
    end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.05.2009, 19:21   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Посты разные. Внимательно посмотрите
я вообще-то привел сразу же код, где ты делаешь пост (Form3.Table_add_predm.Post) 2 раза подряд
soleil@mmc вне форума Ответить с цитированием
Старый 05.05.2009, 19:24   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

soleil@mmc, согласен, я виноват . Можете помочь по посту №6?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.05.2009, 11:01   #9
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Код:
   begin
 Nomer21:=Form1.DBLookupComboBox1.KeyValue;
 Table2.Insert;
 Table2.FieldByName('ID_Predmet').AsString:=IntToStr(Nomer21);
    end;
судя по тому что вы сдесь написали, свяжите DBGrid2 c Table2, но я чёт смутно подозреваю что вам нужно немного не так: вам не нужно в таблицу заносить значение, а написать простой запросик для Query, который по ID будет вытягивать из таблицы1 данные и связать этот Query с DBGrid2.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 06.05.2009, 17:58   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Можете привести пример такого кода, который бы вытягивал данные по ID?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу создать условия Еленка Помощь студентам 4 21.05.2008 12:20
Пропуск условия if. Delphi 7 Дикий Помощь студентам 11 12.05.2008 22:49
Оператор условия [Smarik] Помощь студентам 8 22.02.2008 18:49
Проверка условия Luciferium БД в Delphi 1 05.06.2007 16:23