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

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

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2013, 06:57   #1
mmihan
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 30
По умолчанию IBDataSet проблема добавления записи

Добрый день!
Выходит ошбика при добвление записи empty query , пробывал по разному , выходят другие ... ошибки,
Подскажите пожалуста как должно быть (последовать кода при добавление записи(правильность действий) )
Fireberd 2.5 Создана таблица через IBExpert
IBDatabase1
user_name=SYSDBA
password=masterkey
lc_ctype=WIN1251

IBTransaction

read_committed
rec_version
nowait


на форме лежит DBGrid, при создание формы выполняется код

Код:
void __fastcall TOrg::FormShow( TObject * Sender )
{
    DM->IBDataSet1->Close( );
        DM->IBDataSet1->SelectSQL->Add
        ( "SELECT ORG_ID, ORG_NAME,ORG_RUKOVOD,ORG_INN, ORG_KPP,ORG_ADRES,ORG_OGRN,ORG_TEL,ORG_PREDSTAV FROM ORG");
    
    DM->IBDataSet1->Open( );
    LinkLabel1->Color == Edit1->Color;
}

На форме есть кнопка Add для открытие другой формы что бы добавлять новую запись.

добавляется через Edit и нажимется кнока Сохранить ...

По кноке Сохранить выполняется следуюший код

Код:
void __fastcall TAdd_ORG::BitBtn1Click( TObject * Sender )
{
            DM->IBDataSet1->SelectSQL->Clear( );
            DM->IBDataSet1->InsertSQL->Add
        ( " insert into ORG (ORG_NAME,ORG_RUKOVOD,ORG_INN, ORG_KPP,ORG_ADRES,ORG_OGRN,ORG_TEL,ORG_PREDSTAV)");
            DM->IBDataSet1->InsertSQL->Add
        ( " values (:ORG_NAME,:ORG_RUKOVOD,:ORG_INN, :ORG_KPP,:ORG_ADRES,:ORG_OGRN,:ORG_TEL,:ORG_PREDSTAV)");
            
            DM->IBDataSet1->ExecSQL( );
            DM->IBDataSet1->ParamByName( "ORG_NAME" )->AsString = Name_E->Text;
            DM->IBDataSet1->ParamByName( "ORG_RUKOVOD" )->AsString =Rukovod_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_INN" )->AsInteger = StrToInt(INN_E1->Text);
            // DM->IBDataSet1->ParamByName( "ORG_KPP" )->AsInteger = StrToInt(KPP_E->Text);
            // DM->IBDataSet1->ParamByName( "ORG_ADRES" )->AsString = Adres_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_OGRN" )->AsInteger = StrToInt(OGRN_E->Text);
            // DM->IBDataSet1->ParamByName( "ORG_TEL" )->AsString = Tel_E->Text;
            // DM->IBDataSet1->ParamByName( "ORG_PREDSTAV" )->AsString = Predstav_E->Text;
            DM->IBDataSet1->Post( );
        
            DM->IBTransORG->StartTransaction( );
            DM->IBTransORG->Commit( );
            DM->IBTransORG->Active = false;
    
}
mmihan вне форума Ответить с цитированием
Старый 11.04.2013, 08:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так чисто попробовать:
Код:
            DM->IBDataSet1->InsertSQL->Text=
         " insert into ORG (ORG_NAME,ORG_RUKOVOD,ORG_INN, ORG_KPP,ORG_ADRES,ORG_OGRN,ORG_TEL,ORG_PREDSTAV) values (:ORG_NAME,:ORG_RUKOVOD,:ORG_INN, :ORG_KPP,:ORG_ADRES,:ORG_OGRN,:ORG_TEL,:ORG_PREDSTAV)");
...
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.04.2013, 08:52   #3
mmihan
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 30
По умолчанию

тоже .самое((
такой ворос, а
Код:
DM->IBDataSet1->Close();
делать нужно?
mmihan вне форума Ответить с цитированием
Старый 11.04.2013, 09:47   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

не поможет, без знаний делать можно что угодно, но без толку, идите для начала почитайте про ExecSQL, прочтете, приходите опять, скажем что дальше читать
eval вне форума Ответить с цитированием
Старый 11.04.2013, 11:23   #5
mmihan
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
не поможет, без знаний делать можно что угодно, но без толку, идите для начала почитайте про ExecSQL, прочтете, приходите опять, скажем что дальше читать
ExecSQL для выполнения запросов, не возвращающих курсоры на данные (такие как INSERT, UPDATE, DELETE, and CREATE TABLE).
Для запроса SELECT вызывается Open.
вы про это?
mmihan вне форума Ответить с цитированием
Старый 11.04.2013, 12:29   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

да, а теперь расскажите будет ли в месте вызова ExecSQL запрос, который можно отправлять в базу?
eval вне форума Ответить с цитированием
Старый 11.04.2013, 12:50   #7
mmihan
Пользователь
 
Регистрация: 01.06.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
да, а теперь расскажите будет ли в месте вызова ExecSQL запрос, который можно отправлять в базу?
, как я понимаю что ExecSQL направляет запрос, но без него ошибка такая же
mmihan вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не сохраняются записи после добавления через IBTable artemavd БД в Delphi 6 27.08.2012 14:36
Избежать повторного добавления записи alt5000 PHP 9 03.01.2012 18:42
отловить события добавления записи в таблицу SolidSnake БД в Delphi 5 05.11.2011 19:46
Задержка добавления записи в базу Access из Dephi Zver БД в Delphi 11 16.05.2011 17:57
Узнать ID (автоинкримент) до добавления записи Droid БД в Delphi 3 09.04.2010 09:52