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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 09:10   #1
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию Компонент CheckBox и БД Access

Здравствуйте уважаемые программисты, совершенно наверно глупый вопрос но все же, я хочу сделать вот какую вещь, в таблице есть поле типа Boolean(Логическое), с помощью Delphi 7 добавляю информацию в базу, как сделать так чтобы, если CheckBox.Checked := True то и базу бы в это поле ставилась галка, при нажатом CheckBox в БД заносится True при не нажатом False.
manula вне форума Ответить с цитированием
Старый 14.03.2013, 09:33   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Берешь не CheckBox, а DBCheckBox, связываешь его с логическим полем базы - и вуаля!
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 14.03.2013, 10:05   #3
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

DBCheckBox хорош для просмотра записей а вот для добавления мне не совсем понятно, как это будет происходить, я думаю что наподобие:
Код:
Var status : Variant
if CheckBox1.Checked then
begin
  status:= True;
end else
  status:= False;
end;
И уже переменную статус отправлять в базу, я на верном направлении коллеги?
Или в БД нужно отправлять числовое значение - 0 и 1 ?

Последний раз редактировалось manula; 14.03.2013 в 10:09.
manula вне форума Ответить с цитированием
Старый 14.03.2013, 10:19   #4
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Ну смотря какие статусы, если их два и только два и никогда не добавится других то можно оставить булиан и передовать соотвествено значения доступные данному типу правда или лож, а если всё таки когда то возможно что статусов может быть больше то сделать поле интегер и передавать цифру.
Dozent вне форума Ответить с цитированием
Старый 14.03.2013, 10:48   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
DBCheckBox хорош для просмотра записей а вот для добавления мне не совсем понятно, как это будет происходить
Да нормально все будет происходить, нужно только таблицу в edit или insert перевести и post не забывать в конце. А поле будет напрямую из DBCheckBox меняться, без всякого Вашего кода.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 14.03.2013, 14:38   #6
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Да нормально все будет происходить, нужно только таблицу в edit или insert перевести и post не забывать в конце. А поле будет напрямую из DBCheckBox меняться, без всякого Вашего кода.
Ну если это так, то было бы хорошо просто я особо не работал с DBComboBox и с его свойствами в том числе, поэтому "post" для меня немного не понятный метод, ну за подсказку спасибо.
manula вне форума Ответить с цитированием
Старый 14.03.2013, 14:51   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

post - это не метод чекбокса, это метод компонента доступа к таблице (TTable, TADOTable и тп). Этот метод сохраняет изменения в таблице при ее редактировании. Переход в режим редактирования или добавления осуществляется вызовом методов Edit И Insert соответственно. Пример:

Код:
Table1.Insert; //Добавили запись
Table1.FieldByName('POLE').VALUE:=1;  //Присвоили полю POLE  новой записи значение 1
Table1.Post; //Сохранили

Table1.Edit; //Открыли таблицу в режиме редактирования
Table1.FieldByName('POLE').VALUE:=1;  //Изменили у поля POLE  значение на 1
Table1.Post; //Сохранили
DBCheckBox связывается с компонентом DataSource (свойство DataSource), который в свою очередь является посредником между визуальными компонентами и компонентами работы с БД типа TTable. В свойстве DataField выбирается имя поля таблицы, с которым связан данный визуальный компонент (в Вашем случае это то логическое поле).
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.03.2013, 09:29   #8
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Добрый день товарищи, подскажи глупому, как сделать правильно добавление чтобы в БД в логическое поле ставилась галочка если она стоит на форме у ChechBox и наоборот, если нет галочки на форме то и в базе это поле у него не будет галки,вот мой код,выдает ошибку:
Код:
Var status: Boolean; // Описание переменной логического типа, или какой тип должен быть у этой переменной?
begin
 with ADOQuery2 do
 begin
  Close; //Закрытие соединения
  SQL.Clear; //Чистка строки запроса
  SQL.Add('INSERT INTO [tb_test]');
  SQL.Add('(naim,kol,cat,status)');
  SQL.Add(' VALUES (');
  SQL.Add(#39 + Edit2.Text + #39 + ',' + #39 + Edit3.Text + #39 + ',');
  SQL.Add(#39 + Edit4.Text + #39 + ',' + #39 + BoolToStr(status) + #39 + ')');
  ExecSQL; //Выполнение запроса
 end;

 begin
  if CheckBox1.Checked then
   begin
    status:= True;
   end
   else
    status:= False;
 end;
 ShowMessage('Ты осилил это!');
end;
manula вне форума Ответить с цитированием
Старый 15.03.2013, 15:57   #9
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Ну что никто не может помочь, мне очень нужно, может есть варианты реализации?
manula вне форума Ответить с цитированием
Старый 15.03.2013, 16:42   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
 with ADOQuery2 do
 begin
  status:=CheckBox1.Checked;  //Это взамен Вашего ветвления
  Close; //Закрытие соединения
  SQL.Clear; //Чистка строки запроса
  SQL.Add('INSERT INTO [tb_test]');
  SQL.Add('(naim,kol,cat,status)');
  SQL.Add(' VALUES (');
  SQL.Add(#39 + Edit2.Text + #39 + ',' + #39 + Edit3.Text + #39 + ',');
  SQL.Add(#39 + Edit4.Text + #39 + ',' + #39 + BoolToStr(status) + #39 + ')');
  ExecSQL; //Выполнение запроса
 end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выполнить функцию в случае нажатия на CheckBox, если данный CheckBox был добавлен через код? PAMAC Microsoft Office Excel 7 21.02.2013 15:33
[Поиск] Компонент локализации строковых ресурсов и сторонних компонент delphi Человек_Борща Компоненты Delphi 3 23.08.2011 10:44
checkBox Delphi Access Vася БД в Delphi 1 11.04.2011 18:35
Создание таблицы access, Как и через какой компонент Inbox БД в Delphi 8 06.04.2009 11:46
Импорт из Db-компонент в Access Yana БД в Delphi 4 29.12.2007 16:32