Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Как удалить/добавить запись с помошью IBTable


Автор: wer88 20.6.2009, 19:28
Как с помощью компонента IBTable, в Borland Builder 6 удалить или добавить запись, 
удалять пробовал вот так: 
Код

  IBTable1->Last();
        IBTable1->Delete();

Не приводит ни к какому результату. 
Вставлять пробую вот так: 
Код

 IBTable1->Last();
          IBTable1->Edit();
          IBTable1->Insert();
          IBTable1->FieldByName("Kod")=.....;

Кроме ошибок ничего не получаю :-( 
Заранее благодарен. 

Автор: Данкинг 20.6.2009, 19:37
А TIBQuery чем не подходит?

Автор: wer88 20.6.2009, 19:39
Данкинг, IBTable1 как то удобнее, потому что с ним есть кое какой опыт работы. 

Автор: Данкинг 20.6.2009, 19:48
Цитата(wer88 @  20.6.2009,  20:39 Найти цитируемый пост)
IBTable1 как то удобнее, потому что с ним есть кое какой опыт работы.  

Логика, конечно, железная, даже придраться не к чему. smile 

Код

IBTable1->Append();
IBTable1->FieldByName("Kod")=666;
IBTable1->Post;


Только тема всё же не в том разделе. smile 

Автор: wer88 20.6.2009, 19:55
Цитата(Данкинг @  20.6.2009,  19:48 Найти цитируемый пост)
Только тема всё же не в том разделе. 

А в какой должна быть? Вроде компонет же интербейза.

Проблема в том что вот эта строчка: 
Код

IBTable1->FieldByName("Kod")=666;


Выдаёт Lvalue required. 

Автор: Данкинг 20.6.2009, 20:11
Цитата(wer88 @  20.6.2009,  20:55 Найти цитируемый пост)
А в какой должна быть?

В теме про Билдер. smile 

Цитата(wer88 @  20.6.2009,  20:55 Найти цитируемый пост)
Выдаёт Lvalue required.  

http://tinyurl.com/nhmx7l
 smile 

Автор: wer88 20.6.2009, 20:32
С этим рабозрался, спасибо большое! А почему удаление не работает? 

Автор: wer88 20.6.2009, 20:57
Вставил такой код для добавления:
 
Код

 IBTable1->Last();
          IBTable1->Append();
          IBTable1->FieldByName("Kod")->AsInteger=S2;
           IBTable1->FieldByName("K_Pol")->AsInteger=1;
          IBTable1->FieldByName("K_Obr")->AsInteger=1;
          IBTable1->FieldByName("K_job")->AsInteger=1;
          IBTable1->FieldByName("K_Tipn")->AsInteger=1;
          IBTable1->FieldByName("Vozr")->AsInteger=32;
          IBTable1->FieldByName("K_opr")->AsInteger=11;
          IBTable1->Post();

Вроде что то куда то добавляется, никаких ошибок, но и база без изменений остаётся :-( 

Автор: Данкинг 20.6.2009, 21:23
Цитата(wer88 @  20.6.2009,  21:32 Найти цитируемый пост)
А почему удаление не работает?  

Что значит не работает? Вот твой код из первого поста:

Код

IBTable1->Last();
IBTable1->Delete();

Ты встаёшь на последнюю строчку и её удаляешь. Должно всё работать. smile 

Цитата(wer88 @  20.6.2009,  21:57 Найти цитируемый пост)
Вставил такой код для добавления:

На кой снова пишешь IBTable1->Last(); ? smile Запись добавится туда, куда СУБД сочтёт нужным, ибо СУБД сия реляционная есть. smile 

Цитата(wer88 @  20.6.2009,  21:57 Найти цитируемый пост)
но и база без изменений остаётся :-(  

Как ты это определяешь? Ищешь добавленную запись и не находишь?

Автор: wer88 20.6.2009, 21:38
Цитата(Данкинг @  20.6.2009,  21:23 Найти цитируемый пост)
Как ты это определяешь? Ищешь добавленную запись и не находишь?

Да, даже refresh в конце вставил, нету такой записи. 
И с удалением тоже что то не то, никаих ошибок, всё ок, но запись на месте последняя :-( 

Автор: Данкинг 20.6.2009, 22:39
wer88, забыл совсем: а транзакцию подтверждаешь?

Автор: Akella 21.6.2009, 01:36
Цитата(wer88 @  20.6.2009,  19:28 Найти цитируемый пост)
          IBTable1->Edit();
          IBTable1->Insert();

Настоятельно советую изучить хотябы простейшие методы работы с БД. Как я вижу, ты не знаешь даже, что такое Insert или Edit и с чем их едят.

Добавлено @ 01:37
Цитата(wer88 @  20.6.2009,  19:55 Найти цитируемый пост)
А в какой должна быть? Вроде компонет же интербейза.

С++ + Базы данных

Добавлено @ 01:38
Цитата(wer88 @  20.6.2009,  19:55 Найти цитируемый пост)
IBTable1->FieldByName("Kod")=666;


Выдаёт Lvalue required.  


Код

IBTable1->FieldByName("Kod")->AsInteger=666


Добавлено через 3 минуты и 1 секунду
Цитата(wer88 @  20.6.2009,  20:57 Найти цитируемый пост)
Вроде что то куда то добавляется, никаких ошибок, но и база без изменений остаётся :-(  

А ты что-нибудь знаешь о транзакциях?

Добавлено через 4 минуты и 28 секунд
И опять же про чтение.... ты видать писатель, ну типа читать не любишь smile . Советую и про транзакции тоже почитать.

P.S. Без обид  smile 

Автор: wer88 21.6.2009, 12:40
Цитата(Akella @  21.6.2009,  01:36 Найти цитируемый пост)
И опять же про чтение.... ты видать писатель, ну типа читать не любишь  . Советую и про транзакции тоже почитать.P.S. Без обид   

Да не на что обижаться, если умные люди подсказывают, а не просто говорят что ничего не знаю))) 

С добавлениеу/удалением в общем случае разобрался, спасибо огромное, теперь другая проблема, вроде гугл поюзал, почитал, ничего не нашел как решить её толком.
Для того что бы запись добавить мне надо значение из DBLookupComboBox получить, как я понял там не всё так просто, так не получается: 
Код

pol1=DBLookupComboBox2->Text

Присваивается просто пустая строка, может есть какой нибудь не сложный способ?

Добавлено через 7 минут и 28 секунд
Проблему решил вот так: 
Код

 IBTable1->FieldAddress(DBLookupComboBox2->Text);
  IBTable1->FieldByName("K_Pol")->AsInteger=IBTable6->FieldByName("Kod")->AsInteger;

Автор: Akella 21.6.2009, 13:03
Цитата(wer88 @  21.6.2009,  12:40 Найти цитируемый пост)
теперь другая проблема,


M
Akella
одна тема - один вопрос

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)